Как смонтировать один раздел из файла образа, который содержит несколько разделов в Linux? - PullRequest
40 голосов
/ 14 сентября 2009

Файл изображения содержит таблицу разделов и содержит несколько разделов.

петлевые устройства могут быть возможны.

Похожие темы:

Ответы [ 6 ]

74 голосов
/ 06 февраля 2012

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

# 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
#
51 голосов
/ 04 марта 2013

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

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

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

# mount /dev/loop0p1 /mnt/tmp
25 голосов
/ 14 сентября 2009

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

fdisk -u sectors -l $IMAGE

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

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

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

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

8 голосов

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

losetup -P - лучший метод, начиная с Ubuntu 16.04, как упомянуто в https://stackoverflow.com/a/15200862/895245, здесь приведены функции для автоматизации, если это будет продолжаться. Использование:

$ 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

Источник:

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"
)
3 голосов
/ 03 апреля 2015

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

Цитата:

rmmod loop
modprobe loop max_part=63
losetup -f /path/to/your/disk/image.raw
mount /dev/loop0p1 /mnt/path
0 голосов
/ 11 ноября 2016

Еще немного автоматизации предыдущих ответов, которые были великолепны.

Чтобы еще больше упростить задачу (что необходимо, если вы делаете это часто), вы можете использовать мой скрипт 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...