2009-09-14 8 views
35

Gibt es eine neue/bessere Art des Loopback-Mounten einzelner Partitionen aus einer Datei, die eine Partitionstabelle unter Linux enthält? Ich sehe das Folgende, aber sie sind etwas veraltet.Loopback Mounten einzelner Partitionen aus einer Datei, die eine Partitionstabelle unter Linux enthält

http://linux.derkeiler.com/Mailing-Lists/Kernel/2005-01/7183.html

http://lists.gnu.org/archive/html/grub-devel/2005-01/msg00077.html

ftp://ftp.hq.nasa.gov/pub/ig/ccd/enhanced_loopback/

+0

http://askubuntu.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device || http://superuser.com/questions/117136/how-can-i-mount-a-partition-from-dd-created-image-of-a-block-device-e-g-hdd-u || http://unix.stackexchange.com/questions/9099/reading-a-filesystem-from-a-whole-disk-image –

Antwort

25

Sagen wir mal $ BILD auf den Pfad zur Bilddatei festgelegt ist. Sie könnten ein kleines Skript schreiben von

fdisk -u sectors -l $IMAGE 

mit einer Liste von Partitionen innerhalb des Bildes zu erhalten. Und dann eine Sequenz verwenden von

mount -o ro,loop,offset=$OFFSET -t auto $IMAGE /media/$DEST 

Wo Offset berechnet wird, bedeutet, die Informationen von fdisk und $ DEST einen eindeutigen Namen für jede der Partitionen (Sektor * Größe eines Sektors in Bytes beginnen).

Das ist nicht direkt die Lösung, aber ich hoffe, ein ziemlich guter Hinweis darauf, wie es zu realisieren ist. Wenn Sie den Job einmal machen, haben Sie einen kleinen netten Anfang für irgendeinen forensischen Werkzeugkasten!

+1

Während diese Antwort funktioniert, ist die neuere KPTX Antwort wirklich besser; es gibt Ihnen einen einzigen Befehl, der alle Partitionen verfügbar macht. – mkj

+1

Während kpartx ein nettes Werkzeug ist, ist es nicht auf jedem System verfügbar. Mehrere eingebettete Systeme, an denen ich arbeite, haben es nicht nativ und ich muss Partitionen von Disk-Images oder sogar Sub-Partitionen einer Partition mounten. – gnac

+0

Beispiel Anwendung der obigen Antwort für Raspibian Bilder: http://raspberrypi.stackexchange.com/a/13138/359 –

62

Sie könnten es so tun ohne viel Aufwand,:

# kpartx -v -a logging-test.img 
add map loop0p1 (251:0): 0 497664 linear /dev/loop0 2048 
add map loop0p2 (251:1): 0 66605058 linear /dev/loop0 501758 
add map loop0p5 (251:2): 0 66605056 251:1 2 
# ls /dev/mapper/ 
control loop0p1 loop0p2 loop0p5 
# mount /dev/mapper/loop0p1 /mnt/test 
# mount | grep test 
/dev/mapper/loop0p1 on /mnt/test type ext2 (rw) 
# 

und das Loop-Gerät zu entfernen, nachdem Sie fertig:

# kpartx -v -d logging-test.img 
del devmap : loop0p2 
del devmap : loop0p1 
loop deleted : /dev/loop0 
# 
+10

Sollte auch -d für das Zerreißen der Einrichtung zu erwähnen. –

+1

Guter Punkt, danke! Haben Sie das Volldisketten-Image jetzt nicht zur Hand, um es zu spielen, also müssen die Notleidenden vielleicht kpartx :-) –

+4

Um es herunterzureißen, ersetzen Sie einfach "-a" durch "-d"; im Beispiel wäre das kpartx -v -d logging-test.img – mkj

35

Wenn Sie util-linux v2.21 oder höher haben, können Sie jetzt tun dies mit losetup. Verwenden Sie die -P (--partscan) Option, um die Partitionstabelle zu lesen und Geräteknoten für jede Partition erstellen:

# losetup --show -f -P test.img 
/dev/loop0 

# ls /dev/loop0* 
/dev/loop0 
/dev/loop0p1 
/dev/loop0p2 

# mount /dev/loop0p1 /mnt/tmp 
+1

funktioniert nicht für mich. benutze util-linux-ng 2.22.2, bekomme ich nur/dev/loop0 ... –

+2

Ich habe Losetup von util-linux 2.22.2 erfolgreich wie oben beschrieben (Mageia 3 Paket util-linux-2.22.2-5.mga3 .src.rpm). – kbulgrien

+0

Eine Sache, die ich bemerkte, ist jedoch, dass die Verwendung von Root anstelle von Sudo einen Unterschied machte, ob es funktionierte oder nicht. – kbulgrien

3

Ok, diese Frage ist Äonen alt, aber nur für die sako der Vollständigkeit halber: This here scheint viel einfacher zu mir .

Zitat:

rmmod loop 
modprobe loop max_part=63 
losetup -f /path/to/your/disk/image.raw 
mount /dev/loop0p1 /mnt/path 
+1

Dies schlägt auf Ubuntu 14.04 fehl, da das 'loop' Modul eingebaut ist, so dass' rmmod' nicht funktioniert. Wie man das repariert: http://askubuntu.com/a/673257/52975 –

5

losetup -P Automatisierung

losetup -P die beste Methode ist in Ubuntu 16.04 beginnend wie bei https://stackoverflow.com/a/15200862/895245 erwähnt, sind hier Funktionen weiter zu automatisieren, wenn. Verbrauch:

$ los my.img 
/dev/loop0 
/mnt/loop0p1 
/mnt/loop0p2 

$ ls /mnt/loop0p1 
/whatever 
/files 
/youhave 
/there 

$ sudo losetup -l 
NAME  SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                      DIO 
/dev/loop1   0  0   0 0 /full/path/to/my.img 

$ # Cleanup. 
$ losd 0 
$ ls /mnt/loop0p1 
$ ls /dev | grep loop0 
loop0 

Quelle:

los() (
    img="$1" 
    dev="$(sudo losetup --show -f -P "$img")" 
    echo "$dev" 
    for part in "$dev"?*; do 
    if [ "$part" = "${dev}p*" ]; then 
     part="${dev}" 
    fi 
    dst="/mnt/$(basename "$part")" 
    echo "$dst" 
    sudo mkdir -p "$dst" 
    sudo mount "$part" "$dst" 
    done 
) 
losd() (
    dev="/dev/loop$1" 
    for part in "$dev"?*; do 
    if [ "$part" = "${dev}p*" ]; then 
     part="${dev}" 
    fi 
    dst="/mnt/$(basename "$part")" 
    sudo umount "$dst" 
    done 
    sudo losetup -d "$dev" 
) 
0

Einige weitere Automatisierung auf die vorherigen Antworten, die toll waren.

Um die Aufgabe weiter zu vereinfachen (was erforderlich ist, wenn Sie es oft tun), können Sie mein Skript mountimg verwenden, um alles für Sie zu tun.Nehmen Sie einfach es aus https://github.com/AlexanderAmelkin/mountimg und verwenden Sie wie folgt aus:

mountimg disk_image.img $PARTNO /mnt/mountpoint 

Sie auch Dateisystem-Typ und andere zusätzliche Mount-Optionen angeben können, wenn Sie mögen:

mountimg disk_image.img $PARTNO /mnt/mountpoint -t vfat -o codepage=866,iocharset=utf-8 

Wenn Sie mit der Partition getan , einfach umount es:

umount /mnt/mountpoint 
Verwandte Themen