Создание файла-образа hdd из /dev/zero, создание разделов и файловых систем в файле образа
и монтирование файловых систем файла-образа
Создадим файл-образ винчестера ~10Gb
# dd if=/dev/zero of=/root/image.img bs=1024M count=10
10+0 записей получено
10+0 записей отправлено
скопировано 10737418240 байт (11 GB), 248,248 c, 43,3 MB/c
Создадим в файле образа первичный раздел, расширенный и в нём два логических диска:
# fdisk /root/image.img
Welcome to fdisk (util-linux 2.22.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xb086d311.
...
Команда (m для справки): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Номер раздела (1-4, по умолчанию 1): 1
Первый sector (2048-20971519, по умолчанию 2048):
Используется значение по умолчанию 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, по умолчанию 20971519): 5000000
Partition 1 of type Linux and of size 2,4 GiB is set
Команда (m для справки): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
Номер раздела (1-4, по умолчанию 2): 2
Первый sector (5000001-20971519, по умолчанию 5001216):
Используется значение по умолчанию 5001216
Last sector, +sectors or +size{K,M,G} (5001216-20971519, по умолчанию 20971519):
Используется значение по умолчанию 20971519
Partition 2 of type Расширенный and of size 7,6 GiB is set
Команда (m для справки): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 5
Первый sector (5003264-20971519, по умолчанию 5003264):
Используется значение по умолчанию 5003264
Last sector, +sectors or +size{K,M,G} (5003264-20971519, по умолчанию 20971519): 10000000
Partition 5 of type Linux and of size 2,4 GiB is set
Команда (m для справки): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 6
Первый sector (10002049-20971519, по умолчанию 10002432):
Используется значение по умолчанию 10002432
Last sector, +sectors or +size{K,M,G} (10002432-20971519, по умолчанию 20971519):
Используется значение по умолчанию 20971519
Partition 6 of type Linux and of size 5,2 GiB is set
Команда (m для справки): p
Disk /root/image.img: 10.7 GB, 10737418240 bytes, 20971520 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
Disk identifier: 0xb086d311
Устр-во Загр Начало Конец Блоки Id Система
/root/image.img1 2048 5000000 2498976+ 83 Linux
/root/image.img2 5001216 20971519 7985152 5 Расширенный
/root/image.img5 5003264 10000000 2498368+ 83 Linux
/root/image.img6 10002432 20971519 5484544 83 Linux
Команда (m для справки): w
Таблица разделов была изменена!
Синхронизируются диски.
Посмотрим loop-устройства в файле образа:
# kpartx -l /root/image.img
loop0p1 : 0 4997953 /dev/loop0 2048
loop0p2 : 0 2 /dev/loop0 5001216
loop0p5 : 0 4996737 /dev/loop0 5003264
loop0p6 : 0 10969088 /dev/loop0 10002432
Карта разделов loop-устройств создаётся kpartx с опцией -a
# kpartx -a -v /root/image.img
add map loop0p1 (253:0): 0 4997953 linear /dev/loop0 2048
add map loop0p2 (253:1): 0 2 linear /dev/loop0 5001216
add map loop0p5 (253:2): 0 4996737 linear /dev/loop0 5003264
add map loop0p6 (253:3): 0 10969088 linear /dev/loop0 10002432
Создадим файловые системы с метками на разделах файла-образа
# mkfs.ext3 -L L1 /dev/mapper/loop0p1
# mkfs.ext3 -L L5 /dev/mapper/loop0p5
# mkfs.ext3 -L L6 /dev/mapper/loop0p6
Смонтируем файловую систему первого раздела файла-образа
# mount /dev/mapper/loop0p1 /mnt/disk
и посмотрим
# mount|grep disk
/dev/mapper/loop0p1 on /mnt/disk type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=writeback)
# df -m /dev/mapper/loop0p1
Файловая система 1M-blocks Использовано Доступно Использовано% Cмонтировано в
/dev/mapper/loop0p1 2402 68 2213 3% /mnt/disk
# du -m /mnt/disk/
1 /mnt/disk/lost+found
1 /mnt/disk/
Скопируем что-нибудь в смонтированную файловую систему и посмотрим результат копирования
# cp -a /root/.aptitude /mnt/disk/
# ls -laR /mnt/disk/
/mnt/disk/:
итого 28
drwxr-xr-x 4 root root 4096 май 27 17:38 .
drwxr-xr-x 17 root root 4096 апр 11 20:48 ..
drwx------ 2 root root 4096 фев 14 01:03 .aptitude
drwx------ 2 root root 16384 май 27 17:09 lost+found
/mnt/disk/.aptitude:
итого 8
drwx------ 2 root root 4096 фев 14 01:03 .
drwxr-xr-x 4 root root 4096 май 27 17:38 ..
-rw-r--r-- 1 root root 0 фев 14 01:03 config
/mnt/disk/lost+found:
итого 20
drwx------ 2 root root 16384 май 27 17:09 .
drwxr-xr-x 4 root root 4096 май 27 17:38 ..
Демонтирование файловой системы первого раздела файла-образа
# umount /mnt/disk
Удаление devmapp-разделов
# kpartx -dv /root/image.img
del devmap : loop0p6
del devmap : loop0p5
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0
Удалено, loop-устройства отсутствуют
# ls -all /dev/mapper/
итого 0
drwxr-xr-x 2 root root 60 май 27 18:00 .
drwxr-xr-x 14 root root 14380 май 27 18:00 ..
crw------- 1 root root 10, 236 май 26 18:52 control
Полезная ссылка:
Mounting a disk image containing several partitions (англ.яз.)
http://blog.vodkamelone.de/archives/137-Mounting-a-disk-image-containing-several-partitions.htmlВариант II
Монтирование файловых систем расположенных на разделах файла-образа
Список всех используемых петлевых устройств
# losetup -a
#
Найти неиспользуемые устройства и создать loop-устройства соответствующие разделам
# losetup -fP /root/image.img
Посмотреть используемые и созданные петлевые устройства
# losetup -a
/dev/loop0: [2049]:3279623 (/root/image.img)
# ls -1a /dev/|grep loop0p
loop0p1
loop0p2
loop0p5
loop0p6
Здесь *p1[2,5,6] - номер партиции в файле образе
Список петлевых блочных устройств
# blkid | grep loop
/dev/loop0p1: LABEL="L1" UUID="79947f6a-6dc8-47d3-96a7-3646d9ae754b" SEC_TYPE="ext2" TYPE="ext3"
/dev/loop0p5: LABEL="L5" UUID="7749692a-d38f-4d02-832e-e6dfb2368629" SEC_TYPE="ext2" TYPE="ext3"
/dev/loop0p6: LABEL="L6" UUID="54e5811f-2d1d-4dfb-909d-1518a6d92602" SEC_TYPE="ext2" TYPE="ext3"
/dev/loop0: PTTYPE="dos"
Смонтировать файловую систему первого раздела в файле-образе
# mount /dev/loop0p1 /mnt/disk/ -o loop
Посмотреть параметры монтирования
# mount|grep disk
/dev/loop0p1 on /mnt/disk type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=writeback)
Маленькое лирическое отступление:Поскольку после команды
# losetup -fP /root/image.img
петлевые устройства
# ls -a /dev/loop??*
/dev/loop0p1 /dev/loop0p2 /dev/loop0p5 /dev/loop0p6 /dev/loop-control
являются блочными устройствами
# blkid|grep loop
/dev/loop0p1: LABEL="L1" UUID="79947f6a-6dc8-47d3-96a7-3646d9ae754b" SEC_TYPE="ext2" TYPE="ext3"
/dev/loop0p5: LABEL="L5" UUID="7749692a-d38f-4d02-832e-e6dfb2368629" SEC_TYPE="ext2" TYPE="ext3"
/dev/loop0p6: LABEL="L6" UUID="54e5811f-2d1d-4dfb-909d-1518a6d92602" SEC_TYPE="ext2" TYPE="ext3"
/dev/loop0: PTTYPE="dos"
то опция/параметр '-o loop' при монтировании блочных устройств, в данном случае loop0p?, необязательна
# mount /dev/loop0p5 /mnt/disk2/
# mount|grep p5
/dev/loop0p5 on /mnt/disk2 type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=writeback)
Скопируем что-нибудь в смонтированную файловую систему
# cp -av /root/.install-log /mnt/disk/
«/root/.install-log» -> «/mnt/disk/.install-log»
«/root/.install-log/alteratord.log» -> «/mnt/disk/.install-log/alteratord.log»
«/root/.install-log/x11.log» -> «/mnt/disk/.install-log/x11.log»
«/root/.install-log/install2.log» -> «/mnt/disk/.install-log/install2.log»
«/root/.install-log/pkg-install.log» -> «/mnt/disk/.install-log/pkg-install.log»
«/root/.install-log/remount.log» -> «/mnt/disk/.install-log/remount.log»
«/root/.install-log/wizard.log» -> «/mnt/disk/.install-log/wizard.log»
Посмотрим результат копирования
# ls -la /mnt/disk/.install-log/
итого 216
drwx------ 2 root root 4096 янв 4 13:24 .
drwxr-xr-x 5 root root 4096 май 28 17:03 ..
-rw-r--r-- 1 root root 33 янв 4 13:24 alteratord.log
-rw-r--r-- 1 root root 5640 янв 4 13:24 install2.log
-rw-r--r-- 1 root root 92682 янв 4 13:24 pkg-install.log
-rw-r--r-- 1 root root 9819 янв 4 13:24 remount.log
-rw-r--r-- 1 root root 52980 янв 4 13:24 wizard.log
-rw-r--r-- 1 root root 29862 янв 4 13:24 x11.log
Размонтируем файловую систему
# umount /mnt/disk
Посмотреть используемые и созданные петлевые устройства
# losetup -a
/dev/loop0: [2049]:3279623 (/root/image.img)
# ls -1a /dev/|grep loop0p
loop0p1
loop0p2
loop0p5
loop0p6
Отсоединить все используемые петлевые устройства
# losetup -D /root/image.img
Посмотреть используемые и созданные петлевые устройства (не используются)
# losetup -a
#
# ls -1a /dev/|grep loop0p
#