Примонтировать образ диска
Есть образ диска, получен ddrescue /dev/sda image.img mapfile
, в нем три раздела sda1, sda2, sda3, как мне его примонтировать, чтобы забрать нужные файлы? Файловая система sda3 - NTFS, sda1, sda2 служебные, они не нужны.
Ответы (1 шт):
Работа с образом
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