Partitionierte Datenträgerimages mounten
Inhaltsverzeichnis
Partitionierte Datenträgerimages mounten
Gezielte Adressierung mittels 'offset'
Das oben beschriebene Vorgehen funktioniert auch für den direkten Zugriff auf Partitionen innerhalb eines Images. Das folgende Beispiel zeigt, wie die erste Partition eines SD-Card-Images gezielt adressiert und gemountet wird.
Das Image wurde von einer SD-Card gezogen. Darin befindet sich eine primäre Partition:
j3:~ # fdisk -l sd-card.img Disk sd-card.img: 29.5 GiB, 31674335232 bytes, 61863936 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type sd-card.img1 8192 61863935 61855744 29.5G c W95 FAT32 (LBA)
Die erste und einzige Partition 'sd-card.img1' beginnt bei Sektor 8192 (Spalte Start). Daraus kann der Offset als Produkt mit der Größe der Sektoren (512 bytes) errechnet und direkt adressiert werden:
j3:~ $ sudo mount -t vfat -o loop,ro,offset=$((8192 * 512)) sd-card.img /mnt
kpartx
Als Alternative bietet sich das Tool 'kpartx' an. Es erstellt für alle Partitionen Einträge für den DeviceMapper, welche dann nach Bedarf gemountet werden können:
# modprobe loop # kpartx -va sd-card.img add map loop0p1 (253:7): 0 8192 linear /dev/loop0 4224 add map loop0p2 (253:8): 0 1849216 linear /dev/loop0 12416 add map loop0p3 (253:9): 0 6002688 linear /dev/loop0 1861632
Um beispielsweise auf die Daten in der 3. Partition (aus Sicherheitsgründen nur) lesend zugreifen zu können, wird diese mit der Option 'ro' gemounted:
# mount -o loop,ro /dev/mapper/loop0p3 /mnt
Nach Verwendung sollten die Ressourcen wieder sauber freigegeben werden:
# umount /mnt # kpartx -d sd-card.img loop deleted : /dev/loop0