CDEmu и все-все-все: различия между версиями
(Добавление возможных методов монтирования образов) |
(Обновления статуса пакета mate-file-manager-actions для 9-й платформы) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 59: | Строка 59: | ||
Проверяем работоспособность. | Проверяем работоспособность. | ||
== | == Обходные пути == | ||
Да, можно. Для основных сред рабочего стола имеются скрипты и рецепты упрощения работы с образами, правда, придётся поколдовать в терминале :) | Можно ли обойтись без CDEmu? Да, можно. Для основных сред рабочего стола имеются скрипты и рецепты упрощения работы с образами, правда, придётся поколдовать в терминале :) | ||
=== XFCE === | === XFCE === | ||
Строка 69: | Строка 69: | ||
<code> | <code> | ||
apt-get install fuseiso | |||
cd Загрузки | cd Загрузки | ||
Строка 80: | Строка 82: | ||
=== MATE === | === MATE === | ||
====Для 8-й и 9-й платформы==== | |||
0. Устанавливаем пакет mate-file-manager-actions | |||
<source lang=shell>apt-get install mate-file-manager-actions | |||
</source> | |||
1. Создаём каталог для наших команд: | |||
<source lang=shell>mkdir -p ~/.local/share/caja/actions | |||
</source> | |||
2. Создаём desktop-файл нашего пункта меню: | |||
<source lang=shell>nano ~/.local/share/caja/actions/Mount_Image.desktop | |||
</source> | |||
3. Вставляем содержимое | |||
<source lang=shell>[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]=Примонтировать образ диска | |||
</source> | |||
4. Выходим из файлового менеджера и снова входим. В контекстном меню должна появиться строка "Caja-Actions actions", а в ней - наш пункт меню. | |||
==== Альтернативный вариант ==== | |||
В случае отсутствия <ref>https://bugzilla.altlinux.org/show_bug.cgi?id=37221 Сборка пакета для 9-й платформы. Статус: Исправлено. </ref> вышеуказанного пакета можно обойтись [https://drive.google.com/open?id=0B0ztncE54F5Edi0tTFIyT0NaRDQ bash-скриптом], который нужно положить по пути ~/.config/caja/scripts | |||
0. Создаём файл по указанному адресу | |||
1. Открываем любым текстовым блокнотом | |||
2. Вставляем следующее содержимое: | |||
<source lang=shell> | |||
#!/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 | |||
</source> | |||
3. Даём права на исполнение через свойства файла или командой в терминале: | |||
<source lang=shell> | |||
chmod +x ~/.config/caja/scripts/MountISO | |||
</source> | |||
== Доп. материалы == | == Доп. материалы == | ||
[https://bugzilla.altlinux.org/show_bug.cgi?id=37207 Добавление модуля vhba в список доп. пакетов] | [https://bugzilla.altlinux.org/show_bug.cgi?id=37207 Добавление модуля vhba в список доп. пакетов] | ||
== Примечания == | |||
[[Категория: HOWTO]] | [[Категория: HOWTO]] |
Текущая версия от 16:20, 19 сентября 2019
Озадачившись решить проблему с разнообразием способов монтирования образов дисков в Альт Линуксе (советовать простому смертному "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. Устанавливаем модули ядра видеокарты для новой версии ядра - если установилось последнее ядро, ставим для него, смотря на версию пакета.
NVIDIA
apt-get install kernel-modules-nvidia-std-def#<версия_драйвера>-<версия пакета>
AMD
kernel-modules-drm-radeon-std-def#<версия_драйвера>-<версия пакета>
3. Перезагружаемся.
Если не обновить ядро заранее, может так статься, что рабочий стол вы не увидите - ядро будет новое, а модули для видеокарты - старые.
4. Запускаем модуль ядра от рута:
modprobe vhba
5. Прописываем модуль в автозапуск (от рута)
sh -c "echo 'vhba' >> /etc/modules"
Проверяем работоспособность.
Обходные пути
Можно ли обойтись без CDEmu? Да, можно. Для основных сред рабочего стола имеются скрипты и рецепты упрощения работы с образами, правда, придётся поколдовать в терминале :)
XFCE
Пользователь Коля Щетинин предложил следующий метод
KDE
apt-get install fuseiso
cd Загрузки
git clone https://github.com/Arbars/-FuseISOMenu-.git fuseisomount
cd fuseisomount
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
3. Вставляем содержимое
[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
Доп. материалы
Добавление модуля vhba в список доп. пакетов
Примечания
- ↑ https://bugzilla.altlinux.org/show_bug.cgi?id=37221 Сборка пакета для 9-й платформы. Статус: Исправлено.