Вопрос:
Имеется файл образа диска, созданного через команду dd. Это побайтная копия диска, в которой есть таблица разделов и несколько разделов, скопированных с реального жесткого диска. Можно ли примонтировать один из разделов, находящихся внутри такого файла, так чтобы содержимое раздела было видно в виде директории?
Ответ:
Да, можно. Для этого необходимо сделать несколько действий.
1. Нужно создать пустую директорию, или воспользоваться стандартной /mnt, если она пуста и не используется в данный момент.
2. Надо создать файл блочного устройства, который будет связан с содержимым файла образа диска. Делается это от суперпользоватея (root) следующей командой:
> losetup --partscan --find --show our_disk.img
В результате работы данной команды в консоль будет выведена информация о созданном файле блочного устройства:
/dev/loop0
3. Далее надо выполнить команду монтирования раздела с заданным номером (счет разделов идет с единицы):
> mount /dev/loop0p2 /mnt
Данная команда примонтирует второй раздел (partition), о чем говорит суффикс p2, из блочного устройства /dev/loop0. Монтирование призведется в каталог /mnt. В нем будут видны все файлы, находящиеся на выбранном разделе. Убедиться, что каталог примонтировался, можно командой mount без параметров:
> mount | grep loop
/dev/loop0p2 on /mnt type ext4 (rw,relatime)
Внимание! Монтирование происходит в режиме RW (разрешены чтение и запись), то есть, все изменения, вносимые в файлы и в структуру каталогов внутри директории монтирования, будут отражаться на содержимом образа диска! Это очень удобно, если необходимо что-то поменять внутри образа. Но так же это накладывает ограничения: надо быть внимательным, чтобы случайно не изменить данные.
После окончания работы, каталог (устройство) необходимо размонтировать:
umount /dev/loop0p2
* * *
Кстати, чтобы увидеть, какие разделы существуют внутри файла-образа и какова его структура, можно воспользоваться командой fdisk с опцией -l или командой file:
> fdisk -l our_disk.img
Disk our_disk.img: 2,36 GiB, 2537553920 bytes, 4956160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x57c84f67
Device Boot Start End Sectors Size Id Type
/home/user/our_disk.img1 8192 1056767 1048576 512M c W95
/home/user/our_disk.img2 1056768 4956159 3899392 1,9G 83 Linux
> file our_disk.img
file our_disk.img: DOS/MBR boot sector;
partition 1 : ID=0xc, start-CHS (0x40,0,1), end-CHS (0x3ff,3,32), startsector 8192, 1048576 sectors;
partition 2 : ID=0x83, start-CHS (0x3ff,3,32), end-CHS (0x3ff,3,32), startsector 1056768, 3899392 sectors
* * *
Программа losetup может показать список устройств, которые ассоциированы с файлами-образами. Делается это с помощью опции -l:
> losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
/dev/loop0
0 0 0 0 /home/user/our_disk.img