Wie erweitere ich ein Raw-Image?

13

Die offiziellen Images, die geliefert werden, sind Raw-Disk-Images, die möglicherweise mit erstellt wurden dd.

Wie vergrößere ich ein Bild? Ich bin nicht daran interessiert, das Image neu zu partitionieren, da dies bereits in Wie kann ich die Größe meiner / (Root-) Partition ändern? Beantwortet wurde . .

Alex Chamberlain
quelle
Ich bin mir nicht ganz sicher, was Sie unter Erweitern verstehen. Möchten Sie die Größe der Partition ändern, bevor Sie sie auf die Festplatte kopieren?
Joost
Das ist ein Ziel, aber dazu muss man das Disk-Image erweitern.
Alex Chamberlain

Antworten:

13

Wie in dieser Frage erläutert , gibt es zwei Methoden zum Erweitern des Bildes. Im Folgenden finden Sie zwei Beispiele zum Erweitern der Datei um 1 Kilobyte.

DD erstellt eine nicht übersichtliche Datei

dd if=/dev/zero bs=1k count=1 >> myimage.img

Abschneiden erstellt eine Sparse-Datei

truncate -s +1024 myimage

Wahrscheinlich möchten Sie "Truncate" verwenden. In einer Sparse-Datei werden nur die Metadaten der verwendeten Blöcke geschrieben, anstatt die Blöcke tatsächlich zu schreiben. Dadurch wird die Erstellung der Datei beschleunigt (da keine tatsächlichen Nullen auf die Festplatte geschrieben werden müssen) und Speicherplatz auf der Festplatte gespart.

Hinweis: Das HFS + -Dateisystem von Apple unterstützt keine Sparse-Dateien.

Joost
quelle
HFS + entspricht nicht POSIX? linux.die.net/man/2/truncate
Alex Chamberlain
Wenn die Unterstützung von Sparse-Dateien eine Voraussetzung für POSIX ist, denke ich nicht. Hier ist eine schöne Demonstration der Unterschiede zwischen HFS + und einigen ext (ich vermute) stackoverflow.com/a/193015/689893 . Anscheinend wird die Datei zwar erstellt, der Speicherplatz wird jedoch wie bei einer normalen Datei anstelle einer spärlichen Datei verwendet.
Joost
Nein, ich glaube ich hatte falsch verstanden!
Alex Chamberlain
Wenn Sie ddeine spärliche Datei haben, ist sie dann immer noch richtig?
Alex Chamberlain
Eine Sparse-Datei enthält Daten. Sie können also einfach Nullen hinzufügen. Dieser Teil wird als nicht sparsam behandelt.
Joost
10

Eine unglaublich einfache Möglichkeit, die Größe des Bildes zu ändern, ist die Verwendung eines der qemugenannten Tools qemu-img. Dies hängt natürlich davon ab, dass Sie qemuinstalliert haben (von dem ich weiß, dass Sie bereits Alex machen).

Der Befehl sieht folgendermaßen aus:

qemu-img resize filename [+|-]size[K|M|G|T]

Wo filenamebefindet sich die Bilddatei und Größe ist die Größe, die Sie das Bild vergrößern (oder verkleinern) möchten.

Wenn Sie beispielsweise das Image archarm.imgum 2 GB erweitern möchten, führen Sie Folgendes aus:

qemu-img resize archarm.img +2G
Jivings
quelle
Bevor Sie mit diesem Befehl ein Festplatten-Image verkleinern, MÜSSEN Sie die Dateisystem- und Partitionierungs-Tools in der VM verwenden, um die zugewiesenen Dateisysteme und Partitionsgrößen entsprechend zu reduzieren. Andernfalls gehen Daten verloren!
AntonioK