Образы блочных устройств создаются в качестве резервных копий флешек или дисков. Например, копия флешки с бухгалтерскими сертификатами или закрытыми ключами для доступа к определённой программе. Создать такую резервную копию проще простого командой
dd if=/dev/sdd of=flash.iso, где sdd Ваша флешка. Но вот как потом подмонтировать её, чтобы посмотреть, изменить или обновить информацию в образе?
Казалось бы, простейший вариант
mount -o loop flash.iso /mnt/temp, но в итоге получаем ошибку:
1 2 3 4 5 |
mount: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so. |
Посмотрим, что из себя представляет flash.iso
file flash.iso
1 |
flash.iso: DOS/MBR boot sector; GRand Unified Bootloader, stage1 version 0x3, stage2 address 0x2000, stage2 segment 0x200, extended partition table (last) |
У нас имеется DOS-овский бутсектор, GRUB, несколько стадий загрузки. Это определённо блочное устройство (это загрузочная флешка с системой Mandriva Flash 2008.1 и дополнительным местом под личные файлы). В этом случае нам помогут иные утилиты монтирования: losetup — утилита управления устройствами обратной петли и kpartx — создаёт карту устройства на основе партиций. Далее все команды выполняются с root правами.
Смонтируем наш образ на loop-устройство.
losetup /dev/loop0 flash.iso
Проверим.
losetup -lv
1 2 |
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO /dev/loop0 0 0 0 0 /home/aleksey/flash.iso 0 |
Теперь мапируем прикрипленное устройство (создадим карту).
kpartx -av /dev/loop0
1 |
add map loop0p1 (253:0): 0 62741396 linear /dev/loop0 62 |
Посмотрим, что получилось.
ls -al /dev/mapper/loop0p1
Если наш образ содержит разделы/партиции, то каждая из них будет создана в виде loop0p1, loop0p2 и так далее.
1 |
lrwxrwxrwx 1 root root 7 Oct 12 14:31 /dev/mapper/loop0p1 -> ../dm-0 |
Теперь смонтируем новое устройство обычной командой:
mount /dev/mapper/loop0p1 /mnt/temp
Далее с устройством можно работать как с обычной файловой системой.
df -h|egrep 'File|loop'
1 2 |
Filesystem Size Used Avail Use% Mounted on /dev/mapper/loop0p1 30G 22G 8.8G 71% /mnt/temp |
ls -al /mnt/temp
1 2 3 4 5 6 7 8 9 10 |
drwxr-xr-x 20 root root 4096 Oct 12 14:49 . drwxr-xr-x. 4 root root 4096 Feb 4 2016 .. -rwxr-xr-x 1 root root 3498250 Feb 20 2014 Postfix.pdf -rwxr-xr-x 1 root root 1947417 Feb 8 2015 rtl8190p-0011.1029.2009.zip -rwxr-xr-x 1 root root 3176876 May 14 2015 RT-N15_2.0.1.9.trx -rwxr-xr-x 1 root root 3177248 May 14 2015 RT-N15_2.0.2.1_beta_RU.trx -rwxr-xr-x 1 root root 8092188 Oct 26 2012 s.jpg drwxr-xr-x 2 root root 4096 Mar 27 2015 'System Volume Information' -rwxr-xr-x 1 root root 1486 Jun 25 2013 test.ppk -rwxr-xr-x 1 root root 8 Jun 11 2008 th.bin |
Например, удалим ненужную папку ‘System Volume Information’.
rm -rf /mnt/temp/System\ Volume\ Information/
ls -al /mnt/temp
1 2 3 4 5 6 7 8 9 |
drwxr-xr-x 20 root root 4096 Oct 12 14:49 . drwxr-xr-x. 4 root root 4096 Feb 4 2016 .. -rwxr-xr-x 1 root root 3498250 Feb 20 2014 Postfix.pdf -rwxr-xr-x 1 root root 1947417 Feb 8 2015 rtl8190p-0011.1029.2009.zip -rwxr-xr-x 1 root root 3176876 May 14 2015 RT-N15_2.0.1.9.trx -rwxr-xr-x 1 root root 3177248 May 14 2015 RT-N15_2.0.2.1_beta_RU.trx -rwxr-xr-x 1 root root 8092188 Oct 26 2012 s.jpg -rwxr-xr-x 1 root root 1486 Jun 25 2013 test.ppk -rwxr-xr-x 1 root root 8 Jun 11 2008 th.bin |
Для размонтирования и отключения устройства выполним команды в обратном порядке.
umount /mnt/temp
kpartx -dv /dev/loop0
1 |
del devmap : loop0p1 |
losetup -l /dev/loop0
1 2 |
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO /dev/loop0 0 0 0 0 /home/aleksey/flash.iso 0 |
losetup -d /dev/loop0
losetup -l /dev/loop0
1 2 |
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO /dev/loop0 0 0 0 |