Примонтировать образ диска

Есть образ диска, получен ddrescue /dev/sda image.img mapfile, в нем три раздела sda1, sda2, sda3, как мне его примонтировать, чтобы забрать нужные файлы? Файловая система sda3 - NTFS, sda1, sda2 служебные, они не нужны.


Ответы (1 шт):

Автор решения: Oopss

Работа с образом

losetup -f -P --show ./image.img

или так

losetup --find --partscan --show ./image.img

--find заставит losetup найти первое свободное устройство loop. Затем --partscan прочитает образ, определит разделы и создаст соответствующие файлы, представляющие их, со смещением, как в таблице разделов. --show выведет это

/dev/loop0

Далее монтируем нужный раздел

mount /dev/loop0p3 /mnt

Чтобы проверить сделаем образ

Создаем образ пустого диска например 300М
dd if=/dev/zero of=disk.img bs=1M count=300

получилось

ls -l
итого 307204
-rw-r--r-- 1 root root 314572800 ноя 17 02:01 disk.img

Закидываем пустой образ на loop устройство

losetup -f disk.img

можно посмотреть доступные loop

losetup -a
/dev/loop0: [2049]:133880 (/root/test_vdisk/disk.img)

У нас был доступен loop0 будем с ним работать.

Создаем таблицу разделов

parted /dev/loop0 mklabel msdos

Создаем три раздела

parted -s /dev/loop0 -- mkpart primary fat32 1MiB 40MiB mkpart primary fat32 80MiB 160MiB mkpart p
rimary ntfs 160MiB 100%

Создаем файловую систему

mkfs.fat -F32 /dev/loop0p1
mkfs.fat -F32 /dev/loop0p2
mkfs.ntfs /dev/loop0p3
The partition start sector was not specified for /dev/loop0p3 and it could not be obtained automatically.  It has been set to 0.
The number of sectors per track was not specified for /dev/loop0p3 and it could not be obtained automatically.  It has been set to 0.
The number of heads was not specified for /dev/loop0p3 and it could not be obtained automatically.  It has been set to 0.
Cluster size has been automatically set to 4096 bytes.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.
Initializing device with zeroes: 100% - Done.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.

Получилось

parted /dev/loop0 p
Model: Loopback device (loopback)
Disk /dev/loop0: 315MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  41,9MB  40,9MB  primary  fat32        lba
 2      83,9MB  168MB   83,9MB  primary  fat32
 3      168MB   315MB   147MB   primary  ntfs

ddrescue в системе не оказалось, ставим

apt install gddrescue

Делаем образ диска

ddrescue /dev/loop0 image.img mapfile
GNU ddrescue 1.23
Press Ctrl-C to interrupt
     ipos:  314507 kB, non-trimmed:        0 B,  current rate:    139 MB/s
     opos:  314507 kB, non-scraped:        0 B,  average rate:    104 MB/s
non-tried:        0 B,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:  314572 kB,   bad areas:        0,        run time:          2s
pct rescued:  100.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Finished

Теперь есть образ диска image.img удаляем loop0

losetup -d /dev/loop0

удаляем оригинальный образ disk.img (у нас есть копия image.img)

rm disk.img

ls -l
итого 307204
-rw-r--r-- 1 root root 314572800 ноя 17 03:00 image.img

losetup -f -P --show ./image.img
lsblk /dev/loop0
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0       7:0    0  300M  0 loop
├─loop0p1 259:6    0   39M  0 part
├─loop0p2 259:7    0   80M  0 part
└─loop0p3 259:8    0  140M  0 part

mount /dev/loop0p3 /mnt
lsblk /dev/loop0
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0       7:0    0  300M  0 loop
├─loop0p1 259:6    0   39M  0 part
├─loop0p2 259:7    0   80M  0 part
└─loop0p3 259:8    0  140M  0 part /mnt
→ Ссылка