Partition eines Festplattenimage mounten
Partition eines Festplattenimage mounten
Wer sich von Festplatten oder partitionierten Wechseltatenträgern Image erstellt, kann eventuell einmal in die Verlegenheit kommen, dass er einige Daten eines der Filesysteme dieses Image benötigt. Nun müsste man ja das Image erst wieder komplett zurück auf eine Platte schreiben, und dann erst könnte man die entsprechende Partition mounten. Wenn es sich nicht um ein komprimiertes Image handelt, ist es aber auch möglich über ein Loop-Device und speziellen Optionen von mount einzelne Partitionen innerhalb eines Image selbst zu mounten. (Ein komprimiertes Image müsste dazu erst wieder dekomprimiert werden.) Man benötigt dazu einen so genannten Offset-Wert als Mountoption. Dieser Wert gibt an, ab welcher Position im Image sich der Beginn dieser Partition befindet. Ermitteln kann man diesen Offset mit Hilfe der Partitionstabelle die man mit fdisk aus einem Image ermitteln kann.
Linux:/data1/tmp #fdisk -l platte.image You must set cylinders. You can do this from the extra functions menu. Disk platte.image: 0 MB, 0 bytes 255 heads, 63 sectors/track, 0 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System platte.image1 * 1 4 32098+ 6 FAT16 platte.image2 5 125 971932+ 5 Extended platte.image5 5 50 369463+ 83 Linux platte.image6 51 125 602406 83 Linux You must set cylinders. You can do this from the extra functions menu.
Script zur Ermittlung der Mountoptionen
Im folgenden wird ein Script help-mount-image.sh vorgestellt, dass den Offset für den Mountbefehl ermittelt und auch gleich die richtigen Mountbefehle für alle belegten Partitionen (1 bis 9 soweit vorhanden) des jeweiligen Images ausgibt.
#!/bin/bash #---------------------------------------------------------------------- # Author: haveaniceday # Version: 1, Last updated: 12/2007 #---------------------------------------------------------------------- # fdisk finden PATH="/sbin:$PATH" if [ $# -lt 1 ] then echo "usage: ${0##*/} <image>" exit 1 fi IMAGE=$1 if [ ! -f $IMAGE ] then echo "Warnung, $IMAGE ist kein File" fi # tr -d '*' => bootflag entfernen LANG=C fdisk -lu $IMAGE 2>&1 | tr -d '*' | grep "$IMAGE[a-z0-9]" | while read part start end blocks id rest do echo echo "$read $part $start $end $blocks $id $rest" case $id in 5|f|85) echo "Ignoriere extended partition" continue ;; 82) echo "Ignoriere Swap" continue ;; *) ;; esac let offset=$start*512 echo mount -o loop,ro,offset=$offset $IMAGE /mnt done exit 0
Die Benutzung ist simpel, einfach das Script mit dem Image als Option aufrufen, die entsprechende Partition aussuchen und mit dem vom Script ausgegebenen Mountbefehl nach /mnt mounten.
(In wenigen Einzelfällen kann es eventuell notwendig werden die Mountoptionen entsprechend dem Filesystemtype und dessen Eigenschaften anzupassen.) Der mount-Befehl muss als root eingegeben
werden. Andere Benutzer haben keine Erlaubnis für so einen mount.
Beispiel einer Konsolausgabe Imagedatei ist platte.image im aktuellen Verzeichnis:
Linux:/data1/tmp # ./help-mount-image.sh platte.image platte.image1 63 64259 32098+ 6 FAT16 mount -o loop,ro,offset=32256 platte.image /mnt platte.image2 64260 2008124 971932+ 5 Extended Ignoriere extended partition platte.image5 64323 803249 369463+ 83 Linux mount -o loop,ro,offset=32933376 platte.image /mnt platte.image6 803313 2008124 602406 83 Linux mount -o loop,ro,offset=411296256 platte.image /mnt Linux:/data1/tmp # mount -o loop,ro,offset=32933376 platte.image /mnt Linux:/data1/tmp # mount | grep /mnt /data1/tmp/platte.image on /mnt type ext3 (ro,loop=/dev/loop0,offset=32933376)
Quellen und weiterführende Links
- Orginalbeitrag im Forum
- ISO-Images per Loopdevice mounten
- Partitionierte Datenträgerimages mounten (sollte vielleicht hiermit zusammengeführt werden)