Смонтируйте отдельный раздел из образа всего диска (устройства)

я использовал ежедневные сборки и бета-версии 14.04, и до сих пор держал пальцы в руках и стучал в мой поддельный лес. Пока 14.04 очень стабильна, я получаю некоторые сбои, как известно для предварительных выпусков, но они были более стабильными, чем предыдущие версии ubuntu.

1
задан 26 December 2016 в 21:29

6 ответов

Обновление для Ubuntu 16.04: с новым losetup это теперь проще:

sudo losetup -Pf disk_image.raw

См. остальную часть ответа для более старых версий Ubuntu.

Простое решение использует kpartx: он будет определять макет раздела и сопоставлять каждый с блочными устройствами. После этого все, что вам нужно сделать, это смонтировать ту, которую вы хотите.

Откройте терминал, найдите образ диска и введите следующую команду:

$ sudo kpartx -av disk_image.raw 
add map loop0p1 (252:2): 0 3082240 linear /dev/loop0 2048
add map loop0p2 (252:3): 0 17887232 linear /dev/loop0 3084288

Это создало loop0p1 и loop0p2 в /dev/mapper. На выходе вы можете увидеть размеры разделов, которые помогут вам идентифицировать их. Вы можете установить тот, который вы хотите, с помощью:

$ sudo mount /dev/mapper/loop0p2 /mnt

В качестве альтернативы блочное устройство обнаружено Nautilus, и вы можете установить его с боковой панели:

Когда вы закончите, отключите монтированное и удаленное отображение устройства:

$ sudo umount /mnt
$ sudo kpartx -d disk_image.raw
84
ответ дан 25 May 2018 в 17:52
  • 1
    Отличный ответ, быстрый и легкий, избегая шага умножения. – Elder Geek 14 May 2014 в 00:11
  • 2
    sudo apt-get install kpartx - получить доступ к kpartx. Ссылка kpartx в начале сообщения - это «ловушка», на мой взгляд. Ссылки, которые подразумевают установку программного обеспечения, - нет. – Hannu 31 July 2014 в 23:26
  • 3
    @Hannu, ссылки, которые интегрируются с Software Center, являются обычной практикой в askubuntu , хотя в этом конкретном случае можно добавить обычный значок и URL-адрес должен быть обновлен. – Joni 8 August 2014 в 13:46
  • 4
    losetup -Pf ранее упоминалось askubuntu.com/a/496576/52975 Я рекомендую вам хотя бы ссылку на этот ответ. – Ciro Santilli 包子露宪 六四事件 法轮功 22 June 2016 в 13:27

Изменить: работает с util-linux> = 2.21. На момент написания ubuntu с версией 2.20 только

Из 2.20 :

       -P, --partscan
          force kernel to scan partition table on newly created loop device

Итак, просто запустите

$ sudo losetup -f --show -P /path/to/image.img
[d8 ], чтобы создать узлы устройств для каждого раздела образа вашего диска на первом неиспользуемом устройстве цикла и распечатать его на stdout. Если вы используете устройство /dev/loop0, он создаст как минимум /dev/loop0p1, который вы сможете установить как обычно.

21
ответ дан 25 May 2018 в 17:52
  • 1
    Где я могу найти эту версию losetup? У меня в Ubuntu 14.04 есть manpage с июля 2003 года (util-linux), а опция `-P` (или что-то еще) для сканирования разделов. – Hannu 31 July 2014 в 23:26
  • 2
    Извините, я допустил ошибку, я использовал этот вариант в Arch Linux, который поставляется с более новой версией пакета util-linux. Кажется, Ubuntu печально застрял в версии 2.20.1, выпущенной в январе 2012 года! Опция --partscan была введена в util-linux 2.21 – Ludovic Ronsin 4 August 2014 в 20:09
  • 3
    Ну, gnome-disks имеет возможность монтировать образ диска и его разделы. (& lt; - то есть для установки и использования bash / Terminal, Disks в тире тоже находит это). – Hannu 4 August 2014 в 20:35
  • 4
    Это должен быть принятый ответ ... – matthid 23 April 2015 в 15:54
  • 5
    @matthid Возможно ли изменить принятый ответ? Это хорошо (и ответ kpartx на самом деле зависит от этой версии losetup), но это почти на три года новее, чем принятый ответ, - и это был способ сделать это в то время. – Auspex 27 December 2015 в 03:10

Попробуйте gnome-disk-image-mounter:

$ gnome-disk-image-mounter sda.img

Нет sudo. Он будет установлен на /media/your_user_name/partition_name, как USB-накопители.

6
ответ дан 25 May 2018 в 17:52

losetup -P automation

losetup -P - лучший способ, начинающийся с Ubuntu 16.04, как упоминалось на https://askubuntu.com/a/496576/52975, вот функции для автоматизации, если это необходимо. Использование:

$ 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"
)

losetup -P automation

Это достойный метод до 16.04.

loop - модуль ядра, встроенный в ядро ​​в Ubuntu 14.04.

Если вы правильно настроите его, Linux автоматически разломит устройства для вас.

[ f3]

указывает, сколько устройств раздела loop может сгенерировать.

По умолчанию Ubuntu 14.04 по умолчанию 0, поэтому автоматическое расщепление не происходит.

To измените его, мы можем либо добавить:

options loop max_part=31

в файл в /etc/modprobe, либо:

GRUB_CMDLINE_LINUX="loop.max_part=31"

до /etc/default/grub, а затем sudo update-grub.

Как установить параметр модуля, также рассматривается в: https://askubuntu.com/a/496576/52975

После перезагрузки, когда вы делаете :

sudo losetup -f --show my.img

он монтирует изображение на устройство /dev/loopX и автоматически монтирует разделы на устройства /dev/loopXpY.

Так что это самый удобный способ, если вы готов к перезагрузке.

См. также

https://unix.stackexchange.com/questions/9099/reading-a-filesystem- from -a-all-disk-image https://superuser.com/questions/117136/how-can-i-mount-a-partition-from-dd-created-image-of-a-block-device-eg- hdd-u Установите отдельный раздел из образа всего диска (устройства) https://stackoverflow.com/questions/1419489/loopback-mounting-individual-partitions-from-within-a-file-that-contains-a-parti [ ! d22]
5
ответ дан 25 May 2018 в 17:52

Используйте losetup для прикрепления всего образа диска.

# sudo losetup /dev/loop2 sda.img

Затем используйте mdadm для создания md-устройства, и блокирующие устройства будут созданы для всех разделов.

# sudo mdadm --build --level=0 --force --raid-devices=1 /dev/md2 /dev/loop2
mdadm: array /dev/md2 built and started.

Теперь вы должны увидеть устройства разделов.

nile-172-b0fef38-76:/mnt/sdb1 # ls -l /dev/md2*
brw-rw---- 1 root disk   9, 2 Oct 10 12:37 /dev/md2
brw-rw---- 1 root disk 259, 0 Oct 10 12:37 /dev/md2p1
4
ответ дан 25 May 2018 в 17:52

Самый простой способ, на мой взгляд, использовать mount -o loop,offset=..., как упоминалось в этом ответе на StackOverflow. Идея такова:

fdisk -l $IMAGE
# calculate the offset in bytes
mount -o loop,offset=$OFFSET $IMAGE $MOUNTPOINT

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

Чтобы еще больше упростить задачу ( который необходим, если вы это делаете часто), вы можете использовать мой скрипт mountimg, чтобы сделать все для вас. Просто получите его из в этом ответе на StackOverflow и используйте вот так:

mountimg /media/external_media/sda.img 2 /media/sda_image

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

mountimg /media/external_media/sda.img 2 /media/sda_image -t vfat -o codepage=866,iocharset=utf-8

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

umount /media/sda_image
1
ответ дан 25 May 2018 в 17:52

Другие вопросы по тегам:

Похожие вопросы: