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="$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"
)
Контурный модуль 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"
до /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
устройства.
Так что это самый удобный способ, если вы готовы перезагрузиться.
Смотрите также