Wie eine Partition aus einer Image-Datei zu montieren, die mehrere Partitionen auf Linux enthält?

StackOverflow https://stackoverflow.com/questions/1419489

Frage

Die Bilddatei hat eine Partitionstabelle, und es enthält mehrere Partitionen.

Loopback-Geräte könnten eine Möglichkeit sein.

Verwandte Themen:

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top