7.4. Wie kann ich Partitionen aus dd-Images mounten?
7.4.1
Hat man eine einzelne Festplatten-Partition mit dd in ein Imagefile
kopiert (z. B. mit dem Befehl dd if=/dev/hda2 of=<Image-Dateiname>),
kann man dieses Image relativ einfach über ein loop-Device mounten:
mount -t <filesystem> -o loop,ro <Image-Dateiname> <Zielverzeichnis>
Ist jedoch von einer kompletten Festplatte mit mehreren Partitionen
eine solche Kopie erstellt worden
(z. B. dd if=/dev/hda of=<Image-Dateiname>)
und man möchte einzelne Partitionen aus diesem Image mounten, dann muss
man genau wissen, wo diese Partitionen beginnen.
Angenommen, die kopierte Festplatte ist ein Hitachi-Microdrive mit
512 MB, hat zwei primäre Partitionen und einen MasterBootRecord (MBR)
und wurde in das Image platte.bin kopiert. Wir wollen die
beiden Partitionen einzeln mounten, also müssen wir zuerst die Lage der
Partition feststellen. Das geht mit fdisk:
fdisk -l -u platte.bin
Mit dem Argument -l bekommen wir von fdisk eine Ausgabe der
Partitionstabelle und -u sorgt dafür, daß Anfang und Ende jeder
Partition in Sektoren statt Zylindern angegeben wird. Man bekommt dann
eine solche oder mindestens eine sehr ähnliche Ausgabe:
Platte platte.bin: 0 MByte, 0 Byte
16 Köpfe, 63 Sektoren/Spuren, 0 Zylinder, zusammen 0 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Gerät boot. Anfang Ende Blöcke Id System
platte.bin1 63 498959 249448+ c W95 FAT32 (LBA)
platte.bin2 499968 1052351 276192 83 Linux
Die Größen-Angaben von null Byte bei einem Image sollten uns nicht
stören, wichtig ist die Angabe der Sektorengröße, hier 512 Byte. Die
erste Partition, hier die FAT32-Partition, beginnt mit Sektor 63. Da
jeder Sektor 512 Byte groß ist, rechnen wir nun den Speicherbereich aus,
den wir am Anfang des Images überspringen müssen, um bei Sektor 63
anzukommen: 63 * 512 = 32256 Byte.
Diese 32256 Byte nehmen wir jetzt als Offset für ein loop-Device. Dieses
wird mit losetup eingerichtet:
losetup -o 32256 /dev/loop0 platte.bin
Danach kann dann dieses loop-Device gemountet werden:
mount -t vfat -o ro /dev/loop0 /mnt
Nachdem das Image wieder umountet wurde oder falls doch Fehler bei der
Offset-Berechnung aufgetreten sind, sollte man das loop-Device wieder
freigeben:
losetup -d /dev/loop0
— Jens Nixdorf (cboltz)
|