Wie eine Partition aus einer Image-Datei zu montieren, die mehrere Partitionen auf Linux enthält?
-
07-07-2019 - |
Frage
Die Bilddatei hat eine Partitionstabelle, und es enthält mehrere Partitionen.
Loopback-Geräte könnten eine Möglichkeit sein.
Verwandte Themen:
Lösung
Lassen Sie uns sagen $ BILD auf den Pfad zur Bilddatei festgelegt ist. Sie könnten ein kleines Skript schreiben, indem Sie mit
fdisk -u sectors -l $IMAGE
eine Liste von Partitionen innerhalb des Bildes zu erhalten. Und dann verwenden, um eine Folge von
mount -o ro,loop,offset=$OFFSET -t auto $IMAGE /media/$DEST
Wo Offset berechnet wird, bedeutet die Informationen von fdisk (Sektor * Größe eines Sektors in Bytes beginnen) und $ DEST einen eindeutigen Namen für jede der Partitionen.
Das ist nicht direkt die Lösung, aber ich hoffe, einen ziemlich guten Indikatoren, wie es zu realisieren. Wenn Sie den Job einmal machen, haben Sie einig kleinen netten Anfang für einige Forensic Toolkit!
Andere Tipps
Sie können 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
#
Wenn Sie util-linux v2.21 oder höher haben, können Sie tun dies jetzt mit losetup. Verwenden Sie die -P
(--partscan
) Option, um die Partitionstabelle zu lesen und erstellen Geräteknoten für jede Partition:
# losetup --show -f -P test.img
/dev/loop0
# ls /dev/loop0*
/dev/loop0
/dev/loop0p1
/dev/loop0p2
# mount /dev/loop0p1 /mnt/tmp
losetup -P
Automation
losetup -P
ist die beste Methode Start in Ubuntu 16.04 wie erwähnt unter https://stackoverflow.com/a/15200862/895245, hier sind 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"
)
Ok, ist diese Frage Äonen alt, aber nur für die sako der Vollständigkeit halber: Das hier scheint viel einfacher für mich.
Zitat:
rmmod loop
modprobe loop max_part=63
losetup -f /path/to/your/disk/image.raw
mount /dev/loop0p1 /mnt/path
Einige weitere Automatisierung auf die vorherigen Antworten, die toll waren.
weiter Um die Aufgabe zu vereinfachen (die benötigt wird, wenn man es oft tun), können Sie meinen Skript mountimg
verwenden, um alles für Sie tun. Just get it von https://github.com/AlexanderAmelkin/mountimg
und verwenden Sie wie folgt aus:
mountimg disk_image.img $PARTNO /mnt/mountpoint
Sie können auch Dateisystemtyp angeben und andere zusätzliche Mount-Optionen, wenn Sie mögen:
mountimg disk_image.img $PARTNO /mnt/mountpoint -t vfat -o codepage=866,iocharset=utf-8
Wenn Sie mit der Partition fertig sind, einfach umount
es:
umount /mnt/mountpoint