Как я могу смонтировать образ диска?

26

У меня есть образ диска, myimage.diskкоторый содержит таблицу разделов и основной раздел (то есть файловую систему FAT32). Думайте об этом как об изображении ручки USB.

Я хочу смонтировать основной раздел в локальный каталог. Я знаю, как смонтировать образ раздела, используя утилиты цикла, но здесь у меня есть образ диска. Я предполагаю, что мне нужно смонтировать образ, «пропуская» таблицу разделов, но как я могу это сделать?

Эмилиано
источник
7
См. Также superuser.com/questions/117136/… Вы можете использовать просто, losetup --partscan --find --show disk.imgа затемmount /dev/loop0p1 /mnt/disk
Flow

Ответы:

44

Инструмент kpartx делает это проще. Он создает устройства цикла в / dev / mapper для каждого раздела в вашем изображении. Затем вы можете установить петлевое устройство, которое соответствует вашему желаемому разделу, без необходимости вычислять смещение вручную.

Например, чтобы смонтировать первый раздел образа диска:

kpartx -a -v myimage.disk
mount /dev/mapper/loop0p1 /mnt/myimage

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

umount /mnt/myimage
kpartx -d -v myimage.disk

В качестве альтернативы, если у вас последнее ядро, и передайте loop.max_part = 63 при загрузке (если цикл встроен) или в modprobe (если цикл является модулем), то вы можете сделать это следующим образом:

losetup /dev/loop0 myimage.disk
partprobe /dev/loop0             # Re-read partition table if /dev/loop0 was used with a different image before
mount /dev/loop0p1 /mnt/myimage

Когда вы закончите с циклом:

losetup -d /dev/loop0
scott.squires
источник
1
Вы не нуждаетесь в -o loopвышесказанном, /dev/mapper/loop0p1это уже блочное устройство (устройство отображения поверх устройства цикла, вам не нужен еще один слой устройства цикла).
сч
2
Если вы не получили раздел устройства ( /dev/loop0p1и т. Д.) После запуска losetup, запустите partprobe /dev/loop0.
Владимир Пантелеев
kpartxкажется , должен быть установлен по умолчанию в Linux Mint 18
unfa
4

Нашел это:

http://www.andremiller.net/content/mounting-hard-disk-image-including-partitions-using-linux

что кажется именно то, что я искал.

Вот ключевая часть:

mount -o loop,ro,offset=32256 hda.img /mnt/rabbit

где значение смещения в байтах. Предлагаемый способ получить смещение - указать partedна изображение, затем на единицу B для байтов и взять начальное значение из вывода на печать. В качестве альтернативы, если у вас есть место на диске, сделайте очевидное: если у вас есть смещение и размер, просто используйте ddдля извлечения каждого раздела в отдельный файл.

Эмилиано
источник
1
Для написания действительно хорошего ответа, не могли бы вы объяснить здесь самые важные части? Наличие ссылки - это здорово, но лучше иметь здесь информацию.
Slhck
1
Вот ключевая часть:, mount -o loop,ro,offset=32256 hda.img /mnt/rabbitгде значение offsetв байтах. Предлагаемый способ получить смещение - указать разделенный на изображение, затем unit Bна байты и взять startзначение из printвыходных данных. В качестве альтернативы, если у вас есть место на диске, сделайте очевидное: если у вас есть смещение и размер, просто используйте ddдля извлечения каждого раздела в отдельный файл.
CVn
Да, извините за то, что был слишком коротким. Как указал Майкл, подходящая часть - это, конечно же, mountстрока с offsetопцией.
Эмилиано
2
local_image_file=/var/tmp/image.img
first_byte=$(parted -m ${local_image_file} unit B print | grep Linux | cut --fields 2 --delimiter ':' | sed 's/.$//')
loop_file=/var/tmp/loop
mkdir -p ${loop_file}
mount -o loop,ro,offset=${first_byte} ${local_image_file} ${loop_file}
блевать
источник
1
Хотя это может дать ответ на вопрос, было бы лучше, если бы вы могли объяснить, почему это так.
Дэвид Постилл
2

В настоящее время вы можете минимизировать свою работу с помощью udisks. Решение от ArchWiki: udisks - Монтирование петлевых устройств

Чтобы легко смонтировать образы ISO, используйте следующую команду:

udisksctl loop-setup -r -f image.iso

Это создаст устройство цикла и покажет ISO-образ, готовый к монтированию. После размонтирования устройство цикла будет прервано udev.

-r там только для чтения вариант.

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