Dies ist eine Zusammenfassung der Antworten oben und an anderer Stelle, die für mich funktioniert haben - sichern Sie Ihr Image, falls Sie einen Fehler machen:
Vergrößern Sie zuerst die Bilddatei (hier fügen wir am Ende 1 GB hinzu):
truncate -s +1G ./image.img
Ordnen Sie als Nächstes das gesamte Image als Loop-Gerät zu, damit wir auf den Partitionstisch zugreifen können
sudo losetup /dev/loop0 ./image.img
Zum späteren Nachschlagen lassen Sie es sich entleeren:
sudo fdisk -l /dev/loop0
Die Ausgabe sieht folgendermaßen aus:
Disk /dev/loop0: 2962 MB, 2962227200 bytes
255 heads, 63 sectors/track, 360 cylinders, total 5785600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c4661
Device Boot Start End Blocks Id System
/dev/loop0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/loop0p2 122880 5785599 2831360 83 Linux
Jetzt erstellen wir die letzte Partition neu, indem wir sie löschen und dann am gleichen Startort, demselben Typ, aber an einem anderen Endort neu erstellen. Notieren Sie sich also die Spalte "Start" für loop0p2 (Partition 2 - die Linux-Partition) - wir werden sie später verwenden - hier 122880.
sudo fdisk /dev/loop0
Geben Sie Folgendes ein - sie sind sicher einzugeben - nichts Bleibendes passiert, bis Sie meine folgende Erklärung gelesen haben:
p
d
2
n
p
2
122880
- Drücken Sie einfach die Eingabetaste, um die Standardeinstellung zu akzeptieren
p
Schritt 1 - Aktuelle Tabelle drucken. Schritte 2-3 - Partition 2 löschen, Schritte 4-8 - Partition 2 mit neuem Endpunkt neu erstellen (Standard ist Bildende), Schritt 9 - Neue Tabelle ausdrucken.
Angenommen, Ihre neu gedruckte Tabelle ist identisch mit der ursprünglichen Tabelle, mit Ausnahme des Endwerts und des Blockwerts (dh die Größe hat sich geändert), die Sie festschreiben möchten.
Geben Sie ein w
, um die Änderung zu bestätigen, und geben Sie ein , um den Vorgang q
zu beenden.
Sie können dieses Loopback-Gerät löschen, wir erstellen ein anderes für die zweite Partition. Merken Sie sich den Startoffset, den Sie oben notiert und verwendet haben - wir werden ihn wieder verwenden:
sudo losetup -d /dev/loop0 # delete the old loop setup
sudo losetup -o $((122880*512)) /dev/loop0 ./image.img
Dadurch wird eine neue Zuordnung erstellt, /dev/loop0
wenn nur auf Partition 2 gezeigt wird. Die Referenz 512 ist die Sektorgröße, die Sie in der ersten fdisk
Ausgabe sehen können.
Verändern Sie nun die Größe der Partition, um den verfügbaren Platz zu füllen:
sudo e2fsck -f /dev/loop0
sudo resize2fs /dev/loop0
Fertig - jetzt aufräumen:
sudo losetup -d /dev/loop0