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

Я знаю, как смонтировать диск, имеющий соответствующий файл устройства в/dev, но я не знаю, как это сделать для образа диска, который не представляет физическое устройство и не имеет аналога в /dev (например, файл ISO или образ дискеты). Я знаю, что могу сделать это в Mac OS X, дважды щелкнув значок образа диска в Finder, что автоматически установит диск, но я хотел бы иметь возможность сделать это с терминала. Я не уверен, существует ли общий способ Unix для этого или он зависит от платформы.


Если бы это был образ жесткого диска с таблицей разделов MBR, я бы fdisk образа, чтобы найти смещение раздела, который мне нужно смонтировать.

  fdisk -  lu/path/disk.img

Тогда я бы смонтировал его, передав смещение.

  mount -o loop, offset =  xxxx/path/disk.img/mnt/disk.img.partition

Значение смещения указывается в байтах, тогда как fdisk показывает количество блоков , поэтому вам следует умножить значение из столбца «Begin» или «Start» вывода fdisk на 512 (или любой другой размер блока) на получить смещение для монтирования.

1


В большинстве современных систем GNU с этим справляется команда mount :

  mount -o loop  file.iso/mnt/dir  

для размонтирования вы можете просто использовать команду umount

  umount/mnt/dir  

Если в вашей ОС нет этой опции, вы можете создать устройство цикла:

   losetup -f # это напечатает первое доступное устройство цикла, например:/dev/loop0losetup/dev/loop0/path/file.iso #associate loop0 с указанным filemount/dev/loop0/mnt/dir #It  может потребоваться указать тип (-t iso9660)  

для подключения, вы можете использовать -d :

   umount/mnt/dirlosetup -d/dev/loop0  

Если файл имеет разделы, например HD-изображение, вы можете использовать - P (в зависимости от вашей ОС), он отобразит разделы в содержимом файла:

  losetup -P/dev/loop0/path/file.iso  # создаст/dev/loop0 ls/dev/loop0p * # разделы в формате/dev/loop0pX  

3


losetup -P автоматизация для образов с несколькими разделами

Как смонтировать образ диска из командной строки? | В Unix и Linux Stack Exchange упоминается losetup -P , и вот несколько удобных функций Bash для дальнейшей автоматизации. Использование:

  $ los my. img/dev/loop0/mnt/loop0p1/mnt/loop0p2 $ ls/mnt/loop0p1/something/files/youhave/there $ sudo losetup -lNAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO/dev/loop1 0 0 0 0/full /path/to/my.img$ # Очистка. $ losd 0 $ ls/mnt/loop0p1 $ ls/dev |  grep loop0loop0  

Источник:

  los () (img = "$ 1" dev = "$ (sudo losetup --show  -f -P "$ img") "echo" $ dev "для части в" $ dev "? *; делать, если [" $ 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 "для части в" $ dev "? *; do if [" $ part "=" $ {dev} p * "]; then part =" $ {dev} "fi dst ="/mnt/ $ (basename "$ part") "sudo umount" $ dst "done sudo losetup -d" $ dev ")  


Попробуйте:

  mount -o loop/path/to/ file.iso/mnt  

После цикла вы можете добавить:

  • -t msdos для дискеты
  • -t iso9660 для образа компакт-диска

Linux обычно пытается угадать тип файла.

iv>



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

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

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


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

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

  kpartx -a -v myimage.diskmount/dev/mapper/loop0p1/mnt/myimage  

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

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

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

   losetup/dev/loop0 myimage. diskpartprobe/dev/loop0 # Перечитать таблицу разделов, если/dev/loop0 использовался с другим образом до монтирования/dev/loop0p1/mnt/myimage  

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

  losetup -d/dev/loop0  

Нашел это:

Mounting a hard disk image including partitions using Linux

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

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

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

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

3


В настоящее время вы можете минимизировать свою работу, используя udisks . Решение от ArchWiki: udisks — Подключите устройства цикла

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

  udisksctl loop  -setup -r -f image.iso  

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

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

0


  local_image_file =/var/tmp /image.imgfirst_byte=$(parted -m $ {local_image_file} unit B print | grep Linux | cut --fields 2 --delimiter ':' | sed 's/.$//') loop_file =/var/tmp/ loopmkdir -p $ {loop_file} mount -o loop, ro, offset = $ {first_byte} $ {local_image_file} $ {loop_file}  

1

Оцените статью
clickpad.ru
Добавить комментарий