Wie kann ich die Größe von Partitionen in einem vollständigen Festplatten-Image ändern?


8

Ich habe ein vollständiges Image einer Festplatte aufgenommen mit:

dd if=/dev/sda of=/home/user/harddriveimg bs=4M

Es scheint mir, dass ich in der Lage sein sollte, die Größe der darin enthaltenen Partitionen nach entsprechender Montage zu ändern.

Da ich mit der getrennten Befehlszeile weniger als vertraut bin, habe ich versucht:

gparted /home/user/harddriveimg

Während dies die Partitionstabelle lud, konnte es die Partitionen selbst nicht finden, z. B. harddriveimg0.

Ist es möglich, eine Bilddatei wie diese zu ändern, ohne sie auf eine Festplatte zurückzuschreiben, und wenn ja, wie? Ich würde mich sehr über eine Lösung freuen, die nur Terminalbefehle verwendet.


1
Wenn Sie als Blockgeräte auf einzelne Partitionen aus Ihrer Disk-Image-Datei zugreifen möchten (um sie beispielsweise zu mounten), schauen Sie in kpartx nach .
Celada

@ Celada, das sieht nach einer guten Lösung aus! Ist kpartx nur ein Wrapper für partx?
Timesquare

Ich glaube, dass dies partxnur mit echten Festplatten funktioniert, da es die kernelbasierte Partitionserkennungsmagie verwendet, während kpartxDevice-Mapper verwendet wird, ein generischer und leistungsfähigerer Mechanismus zum Erstellen von Blockgeräten im Kernel.
Celada

@Celada kpartxverwendet den Kernel nicht zur Erkennung von Partitionstabellen, informiert den Kernel jedoch darüber, sodass ein partitionierbares Gerät erforderlich ist, z. B. ein Schleifengerät.
Psusi

Antworten:


3

Sie müssen der Datei ein Loopback-Gerät zuordnen:

sudo losetup /dev/loop0 /home/user/harddriveimg

Dann laufen Sie gparted darauf.


Das funktioniert leider nicht. Gparted sucht immer noch nach / dev / loop0p1 für die erste in der Partitionstabelle aufgeführte Partition und so weiter.
Timesquare

@ Timesquare, dann scheint es, dass Ihre libparted kaputt ist. Welche Version verwenden Sie und welche Distribution?
Psusi

Meine libparted Version ist 2.0.0 unter Archlinux. Ich glaube, das Problem liegt in der Methode von Gparted, das Blockgerät auszuwählen, das einem bestimmten Partitionsdatensatz zugeordnet ist. (Gparted ist Version 0.14.1)
Timesquare

@Timesquare, nein, das ist das richtige Blockgerät für die Partition. Sie müssen 3.0 oder höher getrennt haben.
Psusi

Wenn ich verstehe, was Sie richtig sagen, liegt das Problem woanders. Nachdem Sie losetup wie vorgeschlagen verwendet haben, sind die Blockgeräte / dev / loop0p1, / ​​dev / loop0p2 ... nicht vorhanden.
Timesquare
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.