Erweiterung der Linux-Partitionsfehler

370
Mark

Ich rätsele über eine sehr einfache Aufgabe. Ich habe eine img-Datei, die ein Dateisystem mit 2 Partitionen enthält. Wie in einigen Tutorials gefunden, habe ich den verfügbaren Speicherplatz auf folgende Weise erweitert:

dd if=/dev/zero of=./temp_image bs=1 count=1 seek=3G cat temp_image >> orig_image.img losetup --offset [offset of the second partition*512] /dev/loop0 orig_image.img e2fsck -f /dev/loop0 resize2fs -f /dev/loop0 losetup -d /dev/loop0 

Aber ich fürchte, die Größe der Partitionstabelle wird nicht korrekt geändert:

parted orig_image.img > print Model: (file) Disk /home/user/orig_image.img: 7255MB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags:   Number Start End Size Type File system Flags 1 4194kB 67,1MB 62,9MB primary fat16 lba 2 67,1MB 4000MB 3933MB primary ext4 

Aber wenn ich in das System chrootiere, findet es tatsächlich neuen Raum ... Hat ich einige Schritte verpasst?

Ich habe versucht, die Partition mit gparted in der Größe zu ändern, aber es schlägt fehl, mich über Fehler während e2fsck zu beschweren.

0
Das Ausführen von e2ksck auf / dev / loop0 schlägt mit einem Fehler in der Superblock-Magic-Nummer fehl Mark vor 8 Jahren 0
FWIW sollte besser nicht "parted" verwenden, da standardmäßig die SI-Einheit anstelle der binären Einheit verwendet wird, was zu Verwirrung führen kann. Verwenden Sie stattdessen `fdisk -l`. Tom Yan vor 8 Jahren 0
Sie müssen auch die Größe der Partition (Eintrag in der Partitionstabelle) ändern, bevor Sie das Dateisystem mit `resize2fs` ändern. Tom Yan vor 8 Jahren 0
FIY Dies ist der Link, an dem ich den Befehl dd finde (zweite Antwort): http://raspberrypi.stackexchange.com/questions/4943/resize-image-file-before-writing-to-sd-card Mark vor 8 Jahren 0
Keine Ursache. Ich hab mich geirrt. Der Befehl erstellt ein Bild mit einer 3GiB-Sparse-Datei + 1 Byte-Nullen. Trotzdem ist `truncate -s 3G image_for_append` noch besser Tom Yan vor 8 Jahren 0

2 Antworten auf die Frage

0
ansi_lumen

Ich habe die beschriebene Methode noch nie getestet, aber wenn Sie mit einer SD-Karte umgehen, funktioniert das folgende für mich.

  1. dd das bild unverändert zur sdcard mit dd if=my.img of=/dev/mmcblk0 bs=1M

  2. sync nachdem

  3. Verwenden Sie fdiskdiese dOption, um die 2Partition zu löschen . Erstellen Sie dann eine nneue Partition und akzeptieren Sie alle Standardeinstellungen. Dann write die Partitionstabelle.
  4. sync nochmal
  5. Überprüfen Sie das Dateisystem mit e2fsck -f /dev/mmcblk0p2
  6. Ändern Sie die Größe der FS mit resize2fs /dev/mmcblk0p2
  7. sync nochmal
Danke, aber ich muss die Partitionen vor dem Brennen der SD-Karte verwalten. Ich muss das ganze Zeug mit der img-Datei machen. Im Detail möchte ich die zweite Partition (ext4) erweitern und danach eine weitere ext4-Partition erstellen. Mark vor 8 Jahren 0
0
Tom Yan

Ich empfehle, truncateanstelle eines schrulligen ddBefehls, der 3GiB-Datei mit geringer Dichte + 1 Byte Nullen erstellt. truncatesparse-Datei ebenfalls verwenden. Mit -s 3Gbekommen Sie ein Bild von genau 3GiB-Dateien mit geringer Dichte (oder können Sie auch count=0für verwenden dd):

enter image description here

Ich bevorzuge es "in-place" mit zu machen truncate, da catdie spärliche Datei in Nullen konvertiert werden würde (obwohl dies vielleicht das ist, was Sie möchten), was Zeit, Speicherplatz und übermäßiges Schreiben erfordert.

Das folgende Beispiel macht es "in-place" (siehe das +Präfix zwischen -sund 3Gim truncateBefehl):

enter image description here

Wie Sie sehen können, müssen Sie die Partition, um die Größe (zB mit fdisk) auch . Sie müssen also losetup -Pdie Partition anhängen, indem Sie einen Versatz angeben. Dies haben Sie verpasst, da die verknüpfte / zitierte Lösung nur für ein Dateisystem-Image gilt .

Wenn Sie nach dem Löschen des Partitionseintrags den Partitionseintrag erneut erstellen, müssen Sie sicherstellen, dass er mit derselben LBA wie das Original beginnt (im Beispiel ist dies der 206848Fall). Andernfalls geht das Dateisystem verloren.

Mit Ihrer Hilfe habe ich meine Bedürfnisse erfolgreich erfüllt. Vielen Dank. Mark vor 8 Jahren 0