Як я можу встановити зображення диска?


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

1
Вам не потрібно -o loopвище, /dev/mapper/loop0p1це вже блок-пристрій (картографічний пристрій поверх петлевого пристрою, ви не хочете іншого шару петлевого пристрою поверх цього).
sch

2
Якщо /dev/loop0p1після запуску пристрої розділів ( тощо) не отримаєте losetup, запустіть partprobe /dev/loop0.
Володимир Пантелеев

kpartxЗдається, встановлено за замовчуванням у Linux Mint 18.
невдало

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
Хоча це може відповісти на питання, було б кращою відповіддю, якщо ви могли б дати пояснення, чому це так.
DavidPostill

2

Сьогодні ви можете мінімізувати свою роботу, використовуючи udisks. Рішення від ArchWiki: udisks - пристрої для монтажу циклу

Щоб легко монтувати ISO-образи, використовуйте таку команду:

udisksctl loop-setup -r -f image.iso

Це створить циклічний пристрій і покаже образ ISO, готовий до монтажу. Після відключення контурний пристрій буде припинено удевом.

-r є лише варіант для читання.


Це дивовижно, дякую за інформацію. Божевільно, як це вперше я знайшов посилання на нього udisksctl.
Oxwivi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.