Как смонтировать dd образ или определенный раздел dd образа

Добро пожаловать!

Moderator: Blaze

Post Reply
User avatar
Blaze
Moderator
Moderator
Posts: 1386
Joined: 28 Dec 2010, 11:31
Distribution: ⟰ Porteus 3.2 Cinnamon x86_64
Location: ☭ Russian Federation, Lipetsk region, Dankov
Contact:

Как смонтировать dd образ или определенный раздел dd образа

Post#1 by Blaze » 17 Aug 2017, 20:01

Как смонтировать dd образ или определенный раздел dd образа
dd (dataset definition) программа UNIX и ее главное предназначение - это побайтовое копирование.
Предположим у нас есть USB-флешка 4Gb с одним разделом.
1) С помощью dd мы делаем образ данной флешки, с именем backup.img, на раздел жесткого диска /mnt/sda5
Заметка. Чтобы посмотреть устройства, или разделы, с которых Вы хотите сделать образ с помощью dd, используйте команду

Code: Select all

fdisk -l

Code: Select all

root@porteus:~# dd if=/dev/sdc of=/mnt/sda5/backup.img
7987200+0 записей получено
7987200+0 записей отправлено
4089446400 байт (4,1 GB, 3,8 GiB) скопирован, 201,58 s, 20,3 MB/s
root@porteus:~# file /mnt/sda5/backup.img
/mnt/sda5/backup.img: DOS/MBR boot sector
root@porteus:~#
2) Затем смотрим где начало раздела

Code: Select all

root@porteus:~# parted /mnt/sda5/backup.img unit s print
Модель:  (file)
Диск /mnt/sda5/backup.img: 7987200s
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: loop
Флаги диска: 

Номер  Начало  Конец     Размер    Файловая система  Флаги
 1     0s      7987199s  7987200s  ext2
В данном примере начало 1-го раздела USB-флешки равно 0-му сектору, а размер сектора равен 512 байт, тогда получаем 0 * 512 = 0

Code: Select all

root@porteus:~# expr 0 \* 512
0
root@porteus:~# 
Заметка. Если у Вашего устройства больше разделов, например второй раздел начинается с 7872 сектора, а размер сектора равен 512 байт, тогда получаем 7872 * 512 = 4030464 и именно это смещение указываем в offset=4030464 для того, чтобы смонтировать второй раздел (см. пункт 3)
На заметку. Обычно начало первого раздела с данными начинается с 2048 сектора и размер сектора равен 512 байт, тогда получаем 2048 * 512 = 1048576
3) Монтируем образ USB флешки в /mnt/loop

Code: Select all

mount -o ro,loop,offset=0 /mnt/sda5/backup.img /mnt/loop
проверяем

Code: Select all

root@porteus:~# mount | grep backup.iso
/mnt/sda5/backup.iso on /mnt/loop type ext2 (ro)
root@porteus:~#
4) Если вы сделали образ устройства или раздела (USB-флешки или жесткого) под принуждением (из-за сбоя диска или другой аварийной ситуации), вам может потребоваться сначала проверить и восстановить файловую систему. Это легко сделать. Ищем loop-устройство, которое не используется в данный момент в системе:

Code: Select all

root@porteus:~# losetup -f
/dev/loop21
root@porteus:~#
в данном примере это /dev/loop21

Подцепляем образ к /dev/loop21 устройству и проверяем на ошибки (не забываем указать правильное значение в смещении ключа --offset):

Code: Select all

root@porteus:~# losetup --offset 0 /dev/loop21 /mnt/sda5/backup.img
root@porteus:~# fsck /dev/loop21
fsck из util-linux 2.30.1
e2fsck 1.43.5 (04-Aug-2017)
/dev/loop21 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure                                           
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/loop21: 106/249984 files (17.9% non-contiguous), 160284/998400 blocks
root@porteus:~#
Как только проверка будет завершена, вы можете подключить loop-устройство напрямую:

Code: Select all

mount /dev/loop21 /mnt/loop
Для того что бы отмонтировать образ, используйте команду

Code: Select all

umount /mnt/loop
чтобы отцепить образ от /dev/loop21

Code: Select all

losetup -d /dev/loop21
Linux porteus 4.12.7-porteus #1 SMP PREEMPT Sun Aug 13 17:38:30 x86_64 Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz GenuineIntel GNU/Linux
MS-7A12 » [AMD/ATI] Tobago PRO [Radeon R7 360 / R9 360 OEM] (rev 81) » Vengeance LPX 16GB DDR4 K2 3200MHz C16


User avatar
Blaze
Moderator
Moderator
Posts: 1386
Joined: 28 Dec 2010, 11:31
Distribution: ⟰ Porteus 3.2 Cinnamon x86_64
Location: ☭ Russian Federation, Lipetsk region, Dankov
Contact:

Как смонтировать dd образ или определенный раздел dd образа

Post#3 by Blaze » 18 Aug 2017, 11:13

sfs,
1) пакет kpartx для Slackware есть только в /current/extra/
2) если искать usm -g kpartx, то 'Ничего не найдено: kpartx'
3) установка дополнительного пакета
Linux porteus 4.12.7-porteus #1 SMP PREEMPT Sun Aug 13 17:38:30 x86_64 Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz GenuineIntel GNU/Linux
MS-7A12 » [AMD/ATI] Tobago PRO [Radeon R7 360 / R9 360 OEM] (rev 81) » Vengeance LPX 16GB DDR4 K2 3200MHz C16

sfs
White ninja
White ninja
Posts: 29
Joined: 20 Apr 2013, 19:30
Distribution: Arch
Location: ru
Contact:

Как смонтировать dd образ или определенный раздел dd образа

Post#4 by sfs » 21 Aug 2017, 11:05

3- да :(
Хорошо было бы написать скрипт, который монтирует все разделы img
Идеально - без parted ;)

Post Reply