Как смонтировать раздел из DD-созданного образа блочного устройства (например, HDD) под Linux?

у меня есть образ диска, который создается с помощью dd. Структура диска следующая:

kent@cow:~$ sudo fdisk -l

Disk /dev/sda: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b8508

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           5       90872   729929303+  83  Linux
/dev/sda2           90873       91201     2642692+   5  Extended
/dev/sda5           90873       91201     2642661   82  Linux swap / Solaris

изображение было создано с помощью:

dd if=/dev/sda of=image750.img

Как бы я, если это возможно, смонтировать / dev / sda1 из образа, чтобы я мог прочитать содержимое?

это не вариант, чтобы клонировать жесткий диск снова, я знаю, как это сделать, если бы я только клонировал один раздел сам по себе. Я надеюсь, что это возможно с текущим изображением.

14
задан Hennes
10.02.2023 14:45 Количество просмотров материала 2716
Распечатать страницу

7 ответов

В настоящее время, есть лучший способ, нет необходимости использовать смещения или kpartx больше:

losetup --partscan --find --show disk.img

mount /dev/loop0p1 /mnt

чтобы освободить loop0, используйте после umount:

losetup -d /dev/loop0
42
отвечен bhelm 2023-02-11 22:33

Я сегодня столкнулся с этой проблемой и хотел обновить ответы просто как напоминание для себя. Вместо вычисления смещения самостоятельно, вы можете использовать инструмент, который предоставляет вам монтируемые устройства из образа dd: kpartx

http://robert.penz.name/73/kpartx-a-tool-for-mounting-partitions-within-an-image-file/

http://linux.die.net/man/8/kpartx

в данном случае, для этого нужно что-то как

sudo kpartx -a image750.img
sudo mount /dev/mapper/loop1p1 /mount/point -o loop,ro

где loop1p1 стоит на первом разделе, loop1p2 для второго и т. д.

11
отвечен GrGr 2023-02-12 00:50

у вас есть первая часть: fdisk-l, чтобы найти начальное смещение. Возьмите это число, умножьте на 512, и вы получите опцию смещения для монтирования. Итак, для sda1 в вашем случае 5 * 512 = 2560. Затем запустите маунта:

mount -o loop,offset=2560 -t auto /path/to/image.dd /mount/point
5
отвечен baumgart 2023-02-12 03:07

Loopmounting это только часть ответа.

посмотреть http://wiki.edseek.com/guide:mount_loopback#accessing_specific_partitions_in_the_image Для справки с указанием раздела. I think mount-o loop, offset=32256/путь/к / image750.img / mnt будет работать для вас. но вы действительно должны прочитать упомянутый учебник.

4
отвечен Richard June 2023-02-12 05:24

losetup -P автоматизация

метод, упомянутыйhttps://superuser.com/a/684707/128124 (добавлено в util-linux v2.21, добавлено Ubuntu 16.04) , вот функции для дальнейшей автоматизации. Использование:

$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2

$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there

$ sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                                                      DIO
/dev/loop1         0      0         0  0 /full/path/to/my.img

$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0

источник:

los() (
  img=""
  dev="$(sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    echo "$dst"
    sudo mkdir -p "$dst"
    sudo mount "$part" "$dst"
  done
)
losd() (
  dev="/dev/loop"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    sudo umount "$dst"
  done
  sudo losetup -d "$dev"
)

модуль цикла max_part config

достойный метод перед util-linux v2.21.

loop - это модуль ядра, встроенный в ядро Ubuntu 14.04.

если вы настроите его правильно, Linux автоматически разделит устройства для вас.

cat /sys/module/loop/parameters/max_part

говорит, сколько разделы loop устройства могут генерировать.

это 0 по умолчанию на Ubuntu 14.04, поэтому автоматическое разделение не происходит.

чтобы изменить его, мы можем либо добавить:

options loop max_part=31

в файл /etc/modprobe, или:

GRUB_CMDLINE_LINUX="loop.max_part=31"

to /etc/default/grub а то sudo update-grub.

Как установить параметр модуль также рассматриваются в: https://askubuntu.com/questions/51226/how-to-add-kernel-module-parameters

после перезагрузки, когда вы делаете:

sudo losetup -f --show my.img

монтирует изображение в /dev/loopX устройства и автоматически монтирует разделы /dev/loopXpY устройства.

так что это самый удобный метод, если вы хотите перезагрузиться.

посмотреть также

1
отвечен Ciro Santilli 新疆改造中心 六四事件 法轮功 2023-02-12 07:41

Если у вас есть файловая система пользовательского режима, такая как fuse, то в настольных средах нравится Gnome и установлен инструмент, такой как gnome-disk-image-mounter, то он даже без root правой кнопкой мыши и открывается с ним.

0
отвечен Kasun 2023-02-12 09:58

Я считаю loopmounting ответ -

sudo mkdir /path/to/dir/
mount -o loop example.img /path/to/dir/

выше следует подключить его в этом каталоге.

Это должно отключить это:

umount /path/to/dir
0
отвечен Journeyman Geek 2023-02-12 12:15

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх