Neulich stand ich vor dem Problem, eine Partition innerhalb eines Disk-Images mounten zu müssen. Das Image wurde mit dd of=IMAGE-FILE if=/dev/sdb erstellt, so dass alle Partitionen des ursprünglichen Datenträgers darin enthalten sind. Ein unparametriertes mount erwartet den Einstieg in das Dateisystem am Anfang der Image-Datei. Da sich dort jedoch die Partitionstabelle befindet, schlägt das Mounten als Loop-Device zunächst fehl. Hier folgt eine Anleitung, wie eine Partition in einem Disk-Image gemountet werden kann.
Zunächst werden wir das Offset bestimmen, an dem die gewünschte Partition beginnt. Dazu werden wir das Disk-Image an ein Loop-Device binden. Den benötigten Namen des nächsten freien Loop-Device erhalten wir mit dem Befehl
$ sudo losetup -f
Als Beispiel liefert dieser Befehl die Ausgabe /dev/loop1, das wir im folgenden verwenden. An diesen Gerätenamen binden wir das Disk-Image:
$ sudo losetup /dev/loop1 IMAGE-FILE
Die im Disk-Image enthaltenen Partitionen und ihre Startpositionen erhalten wir mit:
$ sudo fdisk -lu /dev/loop1
Platte /dev/loop1: 8168 MByte, 8168931328 Byte 255 Köpfe, 63 Sektoren/Spur, 993 Zylinder, zusammen 15954944 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Gerät boot. Anfang Ende Blöcke Id System /dev/loop1p1 * 63 144584 72261 c W95 FAT32 (LBA) /dev/loop1p2 144585 15952544 7903980 83 Linux
Das Loop-Device kann jetzt wieder entbunden werden:
$ sudo losetup -d /dev/loop1
Anhand der obigen fdisk-Ausgabe kann der Offset berechnet werden, an dem die gewünschte Partition innerhalb der Datei beginnt. Im Beispiel wollen wir die Partition 2 (Linux) mounten. Der Offset in Bytes ergibt sich hier durch die Multiplikation der Sektorengröße (512 Bytes) mit der Nummer des Tartsektors (144585): =74027520. Dieser Offset wird beim mount-Aufruf angegeben:
$ sudo mount -o loop,offset=74027520 IMAGE-FILE MOUNT-POINT
Neueste Kommentare