я использовал ежедневные сборки и бета-версии 14.04, и до сих пор держал пальцы в руках и стучал в мой поддельный лес. Пока 14.04 очень стабильна, я получаю некоторые сбои, как известно для предварительных выпусков, но они были более стабильными, чем предыдущие версии ubuntu.
Обновление для Ubuntu 16.04: с новым losetup это теперь проще:
sudo losetup -Pf disk_image.raw
См. остальную часть ответа для более старых версий Ubuntu.
Простое решение использует kpartx: он будет определять макет раздела и сопоставлять каждый с блочными устройствами. После этого все, что вам нужно сделать, это смонтировать ту, которую вы хотите.
Откройте терминал, найдите образ диска и введите следующую команду:
$ sudo kpartx -av disk_image.raw
add map loop0p1 (252:2): 0 3082240 linear /dev/loop0 2048
add map loop0p2 (252:3): 0 17887232 linear /dev/loop0 3084288
Это создало loop0p1 и loop0p2 в /dev/mapper. На выходе вы можете увидеть размеры разделов, которые помогут вам идентифицировать их. Вы можете установить тот, который вы хотите, с помощью:
$ sudo mount /dev/mapper/loop0p2 /mnt
В качестве альтернативы блочное устройство обнаружено Nautilus, и вы можете установить его с боковой панели:
Когда вы закончите, отключите монтированное и удаленное отображение устройства:
$ sudo umount /mnt
$ sudo kpartx -d disk_image.raw
Изменить: работает с util-linux> = 2.21. На момент написания ubuntu с версией 2.20 только
Из 2.20 :
-P, --partscan
force kernel to scan partition table on newly created loop device
Итак, просто запустите
$ sudo losetup -f --show -P /path/to/image.img
[d8 ], чтобы создать узлы устройств для каждого раздела образа вашего диска на первом неиспользуемом устройстве цикла и распечатать его на stdout. Если вы используете устройство /dev/loop0, он создаст как минимум /dev/loop0p1, который вы сможете установить как обычно. Попробуйте gnome-disk-image-mounter:
$ gnome-disk-image-mounter sda.img
Нет sudo. Он будет установлен на /media/your_user_name/partition_name, как USB-накопители.
losetup -P automation
losetup -P - лучший способ, начинающийся с Ubuntu 16.04, как упоминалось на https://askubuntu.com/a/496576/52975, вот функции для автоматизации, если это необходимо. Использование:
$ 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="$1"
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$1"
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"
)
losetup -P automation
Это достойный метод до 16.04.
loop - модуль ядра, встроенный в ядро в Ubuntu 14.04.
Если вы правильно настроите его, Linux автоматически разломит устройства для вас.
[ f3]указывает, сколько устройств раздела loop может сгенерировать.
По умолчанию Ubuntu 14.04 по умолчанию 0, поэтому автоматическое расщепление не происходит.
To измените его, мы можем либо добавить:
options loop max_part=31
в файл в /etc/modprobe, либо:
GRUB_CMDLINE_LINUX="loop.max_part=31"
до /etc/default/grub, а затем sudo update-grub.
Как установить параметр модуля, также рассматривается в: https://askubuntu.com/a/496576/52975
После перезагрузки, когда вы делаете :
sudo losetup -f --show my.img
он монтирует изображение на устройство /dev/loopX и автоматически монтирует разделы на устройства /dev/loopXpY.
Так что это самый удобный способ, если вы готов к перезагрузке.
См. также
https://unix.stackexchange.com/questions/9099/reading-a-filesystem- from -a-all-disk-image https://superuser.com/questions/117136/how-can-i-mount-a-partition-from-dd-created-image-of-a-block-device-eg- hdd-u Установите отдельный раздел из образа всего диска (устройства) https://stackoverflow.com/questions/1419489/loopback-mounting-individual-partitions-from-within-a-file-that-contains-a-parti [ ! d22]Используйте losetup для прикрепления всего образа диска.
# sudo losetup /dev/loop2 sda.img
Затем используйте mdadm для создания md-устройства, и блокирующие устройства будут созданы для всех разделов.
# sudo mdadm --build --level=0 --force --raid-devices=1 /dev/md2 /dev/loop2
mdadm: array /dev/md2 built and started.
Теперь вы должны увидеть устройства разделов.
nile-172-b0fef38-76:/mnt/sdb1 # ls -l /dev/md2*
brw-rw---- 1 root disk 9, 2 Oct 10 12:37 /dev/md2
brw-rw---- 1 root disk 259, 0 Oct 10 12:37 /dev/md2p1
Самый простой способ, на мой взгляд, использовать mount -o loop,offset=..., как упоминалось в этом ответе на StackOverflow. Идея такова:
fdisk -l $IMAGE
# calculate the offset in bytes
mount -o loop,offset=$OFFSET $IMAGE $MOUNTPOINT
Этот метод лучше всего потому, что он не требует удаления устройства цикла после того, как вы включите смонтированный раздел.
Чтобы еще больше упростить задачу ( который необходим, если вы это делаете часто), вы можете использовать мой скрипт mountimg, чтобы сделать все для вас. Просто получите его из в этом ответе на StackOverflow и используйте вот так:
mountimg /media/external_media/sda.img 2 /media/sda_image
Вы можете также указать тип файловой системы и любые другие дополнительные параметры монтирования, если хотите:
mountimg /media/external_media/sda.img 2 /media/sda_image -t vfat -o codepage=866,iocharset=utf-8
Когда вы закончите с разделом, просто umount это:
umount /media/sda_image