Подтвердить что ты не робот

Loopback монтирует отдельные разделы из файла, содержащего таблицу разделов в linux

Есть ли какой-либо новый/лучший способ loopback-монтажа отдельных разделов из файла, содержащего таблицу разделов в linux? Я вижу следующее, но они несколько устарели.

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/

4b9b3361

Ответ 1

Скажем, $IMAGE установлен в путь к вашему файлу изображения. Вы можете написать небольшой script с помощью

fdisk -u sectors -l $IMAGE

чтобы получить список разделов внутри изображения. Затем используйте последовательность

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

Если вычисление смещения означает информацию из fdisk (начальный сектор * размер сектора в байтах) и $DEST уникальное имя для каждого из разделов.

Это не прямое решение, но я надеюсь, что это очень хороший признак того, как его реализовать. Если вы выполните задание один раз, у вас есть небольшое небольшое начало для какого-нибудь судебно-медицинского инструментария!

Ответ 2

Вы можете сделать это так, без особых проблем:

# 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)
#

И удалить устройство цикла после того, как вы закончили:

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

Ответ 3

Если у вас есть util-linux v2.21 или выше, вы можете сделать это с помощью losetup. Используйте параметр -P (--partscan) для чтения таблицы разделов и создания узлов устройства для каждого раздела:

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

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

# mount /dev/loop0p1 /mnt/tmp

Ответ 4

losetup -P автоматизация

losetup -P - лучший способ, начиная с Ubuntu 16.04, как упоминалось в fooobar.com/questions/153176/..., вот функции для автоматизации, если это необходимо. Использование:

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

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

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

Источник:

los() (
  img="$1"
  dev="$(sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    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
    dst="/mnt/$(basename "$part")"
    sudo umount "$dst"
  done
  sudo losetup -d "$dev"
)

Ответ 5

Хорошо, этот вопрос старый, но только для сако полноты: Это здесь кажется мне намного легче.

Цитата:

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

Ответ 6

Некоторая дополнительная автоматизация предыдущих ответов была отличной.

Чтобы упростить задачу (что необходимо, если вы часто это делаете), вы можете использовать мой script mountimg, чтобы сделать все для вас. Просто получите его от https://github.com/AlexanderAmelkin/mountimg и используйте вот так:

mountimg disk_image.img $PARTNO /mnt/mountpoint

Вы также можете указать тип файловой системы и любые другие дополнительные параметры монтирования, если хотите:

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

Когда вы закончите с разделом, просто umount it:

umount /mnt/mountpoint