TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 853
|
Interessehalber habe ich das mal mit einem (in qemu installierten) Windows 10 Image (GPT) probiert. Das Verkleinern funktioniert mit GParted und Windows bootet nachher anstandslos in qemu. Hier meine Schritte Benötigte Pakete installieren:
$ sudo apt-get install kpartx gdisk gksu
Infos zum Image:
$ echo -e "p\nq" | gdisk W10.img
### macht das gleiche wie
$ gdisk W10.img # und Kommandos 'p' und 'q'
GPT fdisk (gdisk) version 0.8.8
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): Disk W10.img: 30720000 sectors, 14.6 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 6A13297A-8A86-4CD5-9B48-3CE5804798CD
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 30719966
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 923647 450.0 MiB 2700 Basic data partition
2 923648 1126399 99.0 MiB EF00 EFI system partition
3 1126400 1159167 16.0 MiB 0C01 Microsoft reserved part
4 1159168 30717951 14.1 GiB 0700 Basic data partition
Command (? for help):
Device Mappings erstellen:
$ sudo kpartx -av W10.img
add map loop0p1 (252:0): 0 921600 linear /dev/loop0 2048
add map loop0p2 (252:1): 0 202752 linear /dev/loop0 923648
add map loop0p3 (252:2): 0 32768 linear /dev/loop0 1126400
add map loop0p4 (252:3): 0 29558784 linear /dev/loop0 1159168
Image mit GParted bearbeiten und Partition 4 verkleinern:
$ gksudo gparted /dev/loop0
Devices Mappings wieder löschen
$ sudo kpartx -d W10.img
loop deleted : /dev/loop0
Partition 4 ist nun 4 GB kleiner
$ echo -e "p\nq" | gdisk W10.img
GPT fdisk (gdisk) version 0.8.8
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): Disk W10.img: 30720000 sectors, 14.6 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 6A13297A-8A86-4CD5-9B48-3CE5804798CD
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 30719966
Partitions will be aligned on 2048-sector boundaries
Total free space is 8515517 sectors (4.1 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 923647 450.0 MiB 2700 Basic data partition
2 923648 1126399 99.0 MiB EF00 EFI system partition
3 1126400 1159167 16.0 MiB 0C01 Microsoft reserved part
4 1159168 22206463 10.0 GiB 0700 Basic data partition
Image nach Partition 4 abschneiden (+1MB Reserve für Backup GPT)
$ truncate --size=$(((22206463+2048)*512)) W10.img
Backup GPT wiederherstellen
$ echo -e "r\nd\nw\nY" | gdisk W10.img
### oder
$ gdisk W10.img # und Kommandos 'r' 'd' 'w' und 'Y' zum Bestätigen
Gruß TNT
|
Fried-rich
(Themenstarter)
Anmeldungsdatum: 2. Mai 2013
Beiträge: 1093
|
Mir ging es schon darum das Image wiederherzustellen und fertig ohne erst den BL reparieren zu müssen. Am Ende ist ja keine Partition mehr, nur unformatierter Bereich.
|
Benno-007
Anmeldungsdatum: 28. August 2007
Beiträge: 29240
Wohnort: Germany
|
Dann sichere alle sdXY bis sdXZ. Und die GPT/ den MBR.
|
Fried-rich
(Themenstarter)
Anmeldungsdatum: 2. Mai 2013
Beiträge: 1093
|
Benno-007 schrieb: Dann sichere alle sdXY bis sdXZ. Und die GPT/ den MBR.
Das hatte ich schonmal versucht, wobei ich die Systempartition nicht mit dd sondern fsarchiver gesichert hatte. Bei einer Installation im Bios-Modus klappte die Wiederherstellug auf einem Stick, bei einer Installation im EFI-Modus nicht. Der Stick war nicht einmal lesbar (wurde im EFI gefunden, aber vom Mainboard nicht erkannt [es kam die Anzeige "Can't find any Decive"] und daher wurde auch nicht davon gebootet). Daher jetzt der Versuch mit dd und Verkleinerung des ganzen. Leider klappte es ja nicht das Image als loop-Decive einzubinden und zu verkleinern. Daher habe ich es jetzt erstmal auf eine andere (größere) SSD wiederhergestellt und dort die Partitionen verkleinert (bzw. bei der DAT32-Boot-Partition, mit dd geklont. Jetzt läuft gerade dd mit count um ein passend großes Image zu erstellen. Hab bis auf den letzten Sektor der letzten Partition + 1 Sektor begrenzt. Mal sehen ob es geht. Etwas merkwürdiges ist mir aufgefallen:
fdisk -l /dev/sdb sagt mir, dass GPT vorliegen, die Info-Anzeige in GParted sagt aber msdos (also MBR). Das OS wurde auch zuerst auf einem Rechner im Bios-Modus installiert, an den Installationssettings hab ich nichts geändert (daher denke ich nicht, dass GPT erstellt wurde). Dann habe ich nachträglich daraus eine EFI-Installation gemacht - läuft so bisher problemlos. Nur fdisk sagt m. M. n. etwas falsches.
|
TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 853
|
Fried-rich schrieb: Mir ging es schon darum das Image wiederherzustellen und fertig ohne erst den BL reparieren zu müssen.
Genau das müßte auch mit deinem Image klappen. Mein Win 10 Image jedenfalls kann ich auf dem gezeigten Weg fehlerfrei verkleinern. Auch wenn du mit Bios/MBR startest sollte das funktionieren (hier die gdisk Befehle weglassen und fdisk zur Anzeige der Image Infos verwenden). Dann das Image mit dd auf die Platte geschrieben und fertig. BL=Bootloader(?) Also am Bootloader wird nichts verändert, sonst würde mein Test Win 10 nach der Bearbeitung nicht mehr starten. Du meinst wohl GUID-Partitionstabelle (GPT), die befindet sich am Anfang des Images, eine Kopie(Backup) davon ist am Ende des Images, jeweils außerhalb der Partitionen.
Am Ende ist ja keine Partition mehr, nur unformatierter Bereich.
Wenn du das Image hinten abschneidest, geht die Backup GPT verloren und die Tools beschweren sich daraufhin, weil da was fehlt.
Leider klappte es ja nicht das Image als loop-Decive einzubinden und zu verkleinern.
Auch nicht mit kpartx und GParted?
Jetzt läuft gerade dd mit count um ein passend großes Image zu erstellen. Hab bis auf den letzten Sektor der letzten Partition + 1 Sektor begrenzt. Mal sehen ob es geht.
In diesem Image fehlt dir auch die Backup GPT am Ende.
Etwas merkwürdiges ist mir aufgefallen: fdisk -l /dev/sdb sagt mir, dass GPT vorliegen, die Info-Anzeige in GParted sagt aber msdos (also MBR).
Dann hast du wohl ein MBR-GPT-Mischmasch, um das du dich auch noch kümmern solltest. Die gdisk Ausgabe vom fertigen Image liefere ich auch noch nach:
$ echo -e "p\nq" | gdisk W10.img
GPT fdisk (gdisk) version 0.8.8
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): Disk W10.img: 22208510 sectors, 10.6 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 6A13297A-8A86-4CD5-9B48-3CE5804798CD
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 22208476
Partitions will be aligned on 2048-sector boundaries
Total free space is 4027 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 923647 450.0 MiB 2700 Basic data partition
2 923648 1126399 99.0 MiB EF00 EFI system partition
3 1126400 1159167 16.0 MiB 0C01 Microsoft reserved part
4 1159168 22206463 10.0 GiB 0700 Basic data partition
Gruß TNT
|
Fried-rich
(Themenstarter)
Anmeldungsdatum: 2. Mai 2013
Beiträge: 1093
|
Du meinst wohl GUID-Partitionstabelle (GPT), die befindet sich am Anfang des Images, eine Kopie(Backup) davon ist am Ende des Images, jeweils außerhalb der Partitionen.
Gut, ich bin davon ausgegangen, dass man den unpartitionierten Bereich wegschneiden kann wie man will.
Auch nicht mit kpartx und GParted?
Hab ich jetzt auch getestet, geht auch nicht. GParted startet zwar, ich sehe auch die Partitionen aber z. B. keinen belegten Speicher. Auch kann ich die Partitionen nicht verkleinern. Der Schieberegler geht gar nicht zu bewegen, wenn ich manuell eine Grße eingebe springt der Wert wieder zurück zur Originalgröße.
Dann hast du wohl ein MBR-GPT-Mischmasch, um das du dich auch noch kümmern solltest.
Dem scheint so zu sein, denn dein erster Befehl in deiner Anleitung (mit gdisk) bringt bei mir Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format! Ich hatte das system ursprünglich auf einem USB-Stick installiert als das EFI im Bios-Modus lief, dann auf eine SSD geklont und dort dann aus der Bios- eine EFI-Installation gemacht. Ich dachte nun, dass dabei nur der Bootloader aus dem MBR gelöscht und in die Bootpartition geschrieben wurde, aber nicht, dass aus den MPT GPT gemacht wurden - oder sowas ähnliches zumindest. Hier scheint MPT vorzuliegen der irgendwie während des Betriebs im Arbeitsspeicher in GPT umgewandelt wird (so verstehe ich die Meldung). Hier https://wiki.ubuntuusers.de/EFI_Problembehebung#Aufloesen-des-MBR-GPT-Mischmasches-im-bereits-installierten-und-an-sich-lauffaehigen-System steht wie man das im laufenden System beheben kann. Hier werden 2 Wege beschrieben. Die Anzeige bei mir stimmt mit keinem der im Wiki überein: Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present Spontan würde ich vermuten, dass die "GPT-reste" gelöscht werden müssen da es eigentlich ein MPT ist. Geht das überhaupt: EFI-Modus mit EFI-Bootpartition mit MPT oder braucht das zwingend GPT?
|
Benno-007
Anmeldungsdatum: 28. August 2007
Beiträge: 29240
Wohnort: Germany
|
Geht das überhaupt: EFI-Modus mit EFI-Bootpartition mit MPT oder braucht das zwingend GPT?
Gute Frage - hier sind nur die beiden anderen Fälle, GPT mit oder ohne EFI: GRUB_2/Grundlagen#MBR-mit-Master-Partitionstabelle-MPT.
|
TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 853
|
Fried-rich schrieb: Du meinst wohl GUID-Partitionstabelle (GPT), die befindet sich am Anfang des Images, eine Kopie(Backup) davon ist am Ende des Images, jeweils außerhalb der Partitionen.
Gut, ich bin davon ausgegangen, dass man den unpartitionierten Bereich wegschneiden kann wie man will.
Das mag bei Images mit (nur) MBR Partitionsschema funktionieren, bei GPT nicht. Ist aber nicht tragisch, da man die Backup GPT ja wiederherstellen kann.
Auch nicht mit kpartx und GParted?
Hab ich jetzt auch getestet, geht auch nicht.
Bei mir heute - aus welchen Gründen auch immer - auch nicht, bin mir aber sicher, die Partition im Image mit GParted verkleinert zu haben. Egal, ich habs mit GParted trotzdem hinbekommen. Man muß vorher im Ordner, in dem sich das Image befindet, für jede Partition Links zu den von kpartx erstellten Devices machen. GParted will z.B. auf Partition 1 von W10.img über die Datei W10.img1 zugreifen. Dazu hab ich diesen Befehl benutzt (vorher in Ordner mit Image wechseln und Befehl entspr. anpassen):
for dev in /dev/mapper/loop0*; do ln -s ${dev} W10.img${dev##*/loop0p}; done
### und Gparted mit Imagedatei aufrufen
gksudo gparted W10.img
Gruß TNT
|
TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 853
|
Fried-rich schrieb: Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
Das sieht so aus, als würde nur MBR verwendet und kein GPT. Zeig mal die Ausgabe von
fdisk -l IMAGE
|
Fried-rich
(Themenstarter)
Anmeldungsdatum: 2. Mai 2013
Beiträge: 1093
|
Dein zweiter Vorschlag mit dem Einbinden der einzelnen Partitionen hat funktioniert und ich konnte 2 Partitionen verkleinern - nicht aber die FAT32. Dabei hab ich das Image scheinbar zerschossen. Ich zieh jetzt ein neues Image direkt von der SSD und teste es nochmal und versuche mal FAT32 mit dem HowTo aus dem Beitrag #2 zu verkleinern und zu verschieben. Da wie gesagt das Image zerschossen wurde hier die Ausgabe direkt von der SSD, da die gerade am Laptop klemmt Disk /dev/sdb: 32.0 GB, 32044482560 bytes
255 Köpfe, 63 Sektoren/Spur, 3895 Zylinder, zusammen 62586880 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Festplattenidentifikation: 0x000e4e9c
Gerät boot. Anfang Ende Blöcke Id System
/dev/sdb1 2048 27834367 13916160 83 Linux
/dev/sdb2 27834368 31332351 1748992 5 Erweiterte
/dev/sdb5 28246016 31332351 1543168 82 Linux Swap / Solaris
/dev/sdb6 * 27836416 28243967 203776 b W95 FAT32
Partitionstabelleneinträge sind nicht in Platten-Reihenfolge Was die Reihenfolge (letzte Zeile betrifft): sdX5 ist die Swap sdX6 die Bootpartition. Die Bootpartition liegt aber VOR der Swap, wurde aber danach erstellt. Kann man für die Bootpartition auch ein anderes Format als FAT32 verwenden? Nervt, wen ich dafür kein GParted nehmen kann.
|
TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 853
|
Wenn das die komplette fdisk Ausgabe ist, dann hast du ein reines MBR Image und kein GPT. ... nicht aber die FAT32.
Stimmt, FAT32 kann ich mit GParted auch nicht verkleinern. Aber ne schöne Meldung kommt:
libparted-Benachrichtigungen ( INFO )
GNU Parted kann diese Partition nicht auf diese Größe verändern. Wir arbeiten daran!
|
Fried-rich
(Themenstarter)
Anmeldungsdatum: 2. Mai 2013
Beiträge: 1093
|
Das bezieht sich dann aber nur auf den Typ der Partitionstabellen, nicht auf den Bootloader? Denn ich habe im EFI CSM deaktiviert und das ganze bootet dennoch, also müsste es der EFI-Bootmechanismus sein. Merkwürdig ist nur, dass neben der EFI-Bootpartition in der Bootreihenfolge auch der Device Name auftaucht, k.A. ob das normal ist, ist mein erstes EFI-System. Laut der o.g. Meldung von gdisk scheint aber eine Wandlung im RAM nach GPT zu erfolgen.
|
TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 853
|
Linux ist es egal, ob es auf MBR oder GPT Platte installiert ist. Und wenn dein System im EFI Modus auf einer MBR Platte startet, würde ich es auch so lassen. Windows dagegen würde das nicht zulassen. Edit: Du solltest gdisk nur für GPT Platten verwenden und fdisk nur für MBR Platten.
|
Fried-rich
(Themenstarter)
Anmeldungsdatum: 2. Mai 2013
Beiträge: 1093
|
Edit: Du solltest gdisk nur für GPT Platten verwenden und fdisk nur für MBR Platten.
Mag sein, dass wüsste ich aber von dieser komischen Konvertierung nach GPT nichts 😊
|
TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 853
|
fdisk kann mit GPT nichts anfangen und wenn fdisk keine Warnung wegen GPT ausgibt und die Partitionen richtig auflistet, dann hat die Platte kein GPT, fertig.
|