- CDEmu и все-все-все
- Алгоритм действий
- Обходные пути
- XFCE
- KDE
- MATE
- Для 8-й и 9-й платформы
- Альтернативный вариант
- Монтирование образов устройств
- Монтирование vdi, vmdk, vhd и qcow2
- VDI, VMDK, VHD
- qcow2
- Монтирование файловой системы из образа устройства
- Монтирование образов устройств
- Монтирование vdi, vmdk, vhd и qcow2
- VDI, VMDK, VHD
- qcow2
- Монтирование файловой системы из образа устройства
CDEmu и все-все-все
Озадачившись решить проблему с разнообразием способов монтирования образов дисков в Альт Линуксе (советовать простому смертному «mount -o loop» — не самый лучший вариант), первым делом решил глянуть на CDEmu и его оболочки, благо, для раб. столов на базе GTK она есть в репозиториях (для QT имеется тоже, правда, НЕ в репозиториях).
Установив нужные пакеты (cdemu-client, cdemu-daemon, gcdemu), я перезагружаюсь, и после входа, выбрав образ, жму по нему правой кнопкой мыши и выбираю пункт «Открыть с помощью => Клиент CDEmu». И. Ничего. То есть совсем ничего. Попробовав ещё пару раз, я полез в консоль, и попробовал примонтировать образ через cdemu оттуда. Ответ был получен незамедлительно:
ОШИБКА: Не удалось подключиться к демону CDEmu: g-dbus-error-quark: Error calling StartServiceByName for net.sf.cdemu.CDEmuDaemon: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildExited: Process net.sf.cdemu.CDEmuDaemon exited with status 255 (25)
Сам демон выдал следующее:
> Запуск демона CDEmu со следующими параметрами: > - количество накопителей: 4 > - управление накопителем: /dev/vhba_ctl > - аудиодрайвер: null > - тип шины: session > > cdemu0: Kernel I/O: failed to open control device /dev/vhba_ctl: Нет такого файла или каталога! > cdemu: Daemon: failed to start device #0! > cdemu: Daemon: failed to create device! > Не удалось инициализировать и запустить демон!
Интересное кино — демон не может найти нужное устройство — виртуальный привод, то есть программе чего-то не хватает, а именно виртуального блочного устройства /dev/vhba_ctl. Причём во время установки система молчала, программа молчала, а недовольство высказала лишь после того, как установилась.
Ладно, мы народ не гордый, лезем в Интернет. Решение нашлось довольно быстро — не установлен модуль ядра vhba. Итак, начинаем решать задачу.
Алгоритм действий
0. Обновляем систему до актуального состояния, включая ядро (это очень важно, почему — поймёте позже).
apt-get update && apt-get dist-upgrade && update-kernel -yy
1. Устанавливаем пакет с модулем (ВНИМАНИЕ! Если модуль собран для самой последней версии ядра, он потянет и его — не пугаемся и соглашаемся на установку новой версии ядра).
apt-get install kernel-modules-vhba-std-def
2. Устанавливаем модули ядра видеокарты для новой версии ядра — если установилось последнее ядро, ставим для него, смотря на версию пакета.
apt-get install kernel-modules-nvidia-std-def#-
kernel-modules-drm-radeon-std-def#-
Если не обновить ядро заранее, может так статься, что рабочий стол вы не увидите — ядро будет новое, а модули для видеокарты — старые.
4. Запускаем модуль ядра от рута:
5. Прописываем модуль в автозапуск (от рута)
sh -c "echo 'vhba' >> /etc/modules"
Обходные пути
Можно ли обойтись без CDEmu? Да, можно. Для основных сред рабочего стола имеются скрипты и рецепты упрощения работы с образами, правда, придётся поколдовать в терминале 🙂
XFCE
KDE
cp fuseisomenu.* ~/.local/share/kservices5/ServiceMenus/
MATE
Для 8-й и 9-й платформы
0. Устанавливаем пакет mate-file-manager-actions
apt-get install mate-file-manager-actions
1. Создаём каталог для наших команд:
mkdir -p ~/.local/share/caja/actions
2. Создаём desktop-файл нашего пункта меню:
nano ~/.local/share/caja/actions/Mount_Image.desktop
[Desktop Entry] Type=Action Tooltip=Mount Image Name=Mount Disk Image Name[ru]=Примонтировать образ диска Profiles=profile-zero; Icon=application-x-cd-image [X-Action-Profile profile-zero] MimeTypes=all/all; Exec=gksu "mount -o loop %f" /media/iso # каталог "iso" должен быть предварительно создан Name=Mount Image Name[ru]=Примонтировать образ диска
4. Выходим из файлового менеджера и снова входим. В контекстном меню должна появиться строка «Caja-Actions actions», а в ней — наш пункт меню.
Альтернативный вариант
В случае отсутствия [1] вышеуказанного пакета можно обойтись bash-скриптом, который нужно положить по пути ~/.config/caja/scripts
0. Создаём файл по указанному адресу
1. Открываем любым текстовым блокнотом
2. Вставляем следующее содержимое:
#!/bin/bash #script via TheeMahn gksu umount /media/ISO for I in `echo $*` do foo=`gkgksu -u root -k -m "enter your password for root terminal access" /bin/echo "got r00t?"` gksu mkdir /media/ISO gksu "mount -o loop -t iso9660 $I" /media/ISO done
3. Даём права на исполнение через свойства файла или командой в терминале:
chmod +x ~/.config/caja/scripts/MountISO
Монтирование образов устройств
Файловая система распознается и смонтируется автоматически.
Для размонтирования выполните:
Монтирование vdi, vmdk, vhd и qcow2
VDI, VMDK, VHD
1. Установите пакет vdfuse
# mkdir /mnt/vdi # vdfuse -w -f '/home/user/VirtualBox VMs/ALT Linux/ALT Linux.vdi' /mnt/vdi
В смонтированном образе отобразятся разделы. Теперь нужно смонтировать их.
# mkdir /mnt/vdi-part1 # sudo mount -t auto /mnt/vdi/Partition1 /mnt/vdi-part1 -o loop
Теперь по адресу /mnt/vdi-part1 у вас будет содержимое VDI-диска.[1]
qcow2
losetup -f lxde-p5.qcow2 kpartx -a /dev/loop0 mount /dev/mapper/loop0p2 /mnt # монтирование второго раздела
umount /mnt kpartx -d /dev/loop0 losetup -d /dev/loop0
Монтирование файловой системы из образа устройства
Задача: есть файл с образом устройства (e.g. /dev/sda), содержащим Partition Table и одну или несколько файловых систем. Одну из них нужно смонтировать. В качестве примера можно рассматривать образ установочной флешки, доступной для скачивания здесь, образ нужно разжать.
Монтировать файловую систему из такого образа можно указывая для программы mount опцию -o offset= (man losetup) со смещением начала файловой системы в байтах. Необходимое смещение мы можем узнать из Partition Table с помощью программы fdisk:
$ echo -en "x\np\n" |/sbin/fdisk altlinux-4.1.1-desktop-i586-install-flash.img . # AF Гол Сек Цил Гол Сек Цил Начало Разм ID 1 80 130 3 0 24 24 984 8192 3960832 0b
Мы видим, что файловая система, располагающаяся в первом разделе этого образа, начинается с 8192 сектора. Учитывая размер сектора равным 512 байтам, монтируем FS:
# mount -o loop,offset=$((8192*512)) altlinux-4.1.1-desktop-i586-install-flash.img mymountpoint/
Монтирование образов устройств
Файловая система распознается и смонтируется автоматически.
Для размонтирования выполните:
Монтирование vdi, vmdk, vhd и qcow2
VDI, VMDK, VHD
1. Установите пакет vdfuse
# mkdir /mnt/vdi # vdfuse -w -f '/home/user/VirtualBox VMs/ALT Linux/ALT Linux.vdi' /mnt/vdi
В смонтированном образе отобразятся разделы. Теперь нужно смонтировать их.
# mkdir /mnt/vdi-part1 # sudo mount -t auto /mnt/vdi/Partition1 /mnt/vdi-part1 -o loop
Теперь по адресу /mnt/vdi-part1 у вас будет содержимое VDI-диска.[1]
qcow2
losetup -f lxde-p5.qcow2 kpartx -a /dev/loop0 mount /dev/mapper/loop0p2 /mnt # монтирование второго раздела
umount /mnt kpartx -d /dev/loop0 losetup -d /dev/loop0
Монтирование файловой системы из образа устройства
Задача: есть файл с образом устройства (e.g. /dev/sda), содержащим Partition Table и одну или несколько файловых систем. Одну из них нужно смонтировать. В качестве примера можно рассматривать образ установочной флешки, доступной для скачивания здесь, образ нужно разжать.
Монтировать файловую систему из такого образа можно указывая для программы mount опцию -o offset= (man losetup) со смещением начала файловой системы в байтах. Необходимое смещение мы можем узнать из Partition Table с помощью программы fdisk:
$ echo -en "x\np\n" |/sbin/fdisk altlinux-4.1.1-desktop-i586-install-flash.img . # AF Гол Сек Цил Гол Сек Цил Начало Разм ID 1 80 130 3 0 24 24 984 8192 3960832 0b
Мы видим, что файловая система, располагающаяся в первом разделе этого образа, начинается с 8192 сектора. Учитывая размер сектора равным 512 байтам, монтируем FS:
# mount -o loop,offset=$((8192*512)) altlinux-4.1.1-desktop-i586-install-flash.img mymountpoint/