Login
Newsletter
Mi, 15. April 2009, 16:36

Partitionen in Image-Dateien bearbeiten

Benutzer von virtuellen Maschinen kennen das Problem - die virtuelle Festplatte ist in einer Datei untergebracht, die sich aber nicht mounten lässt, weil sie intern nochmals in Partitionen eingeteilt ist. Die Option »offset« des Kommandos losetup löst das Problem. Die Option kann auch dem Mount-Kommando mitgegeben werden.

Doch noch einmal langsam. Worum geht es? Wir haben eine Image-Datei, hier im Beispiel datei.image, in der eine Partitionstabelle und eine oder mehrere Partitionen enthalten sind. Mit sfdisk -l datei.image können wir die Partitionstabelle sehen. Gleichzeitig liefert uns dieses Kommando den Startsektor der Partitionen, wenn wir dazu noch die Option -uS angeben:

sfdisk -l -uS datei.image

Die Sektornummer müssen wir mit 512 multiplizieren, weil der Offset für losetup in Bytes angegeben wird. Hat die gesuchte Partition beispielsweise die Sektornummer 63, so lässt sie sich einfach mit einem Kommando ähnlich

mount -o loop,offset=$((63 * 512)) datei.image /mnt/tmp

mounten.

Eventuell will man die Partition aber nicht mounten, sondern einen Dateisystem-Check laufen lassen. In diesem Fall muss man ebenfalls ein Loop-Blockgerät anlegen, allerdings direkt das Programm losetup verwenden:

losetup -o $((63 * 512)) /dev/loop0 datei.image

Statt /dev/loop0 kann man auch die Option -f verwenden. Der Nachteil der Option -f ist allerdings, dass man dann nachsehen muss, welches Loop-Gerät benutzt wird.

Nun kann man mit /dev/loop arbeiten, z.B.:

e2fsck /dev/loop0

oder

xfs_repair /dev/loop0

Man muss darauf achten, dass kein anderes Programm gleichzeitig auf das Image zugreift, insbesondere keine virtuelle Maschine, sonst ist das Chaos vorprogrammiert.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten