Ivman (Russian)
From ArchWiki
Contents |
Общая информация
Этот документ описывает, как осуществить установку и первичную настройку пакета ivman. Ivman - это программа-оболочка для hal. Hal генерирует события при подключении и отключении устройств, ivman подхватывает эти события и производит требуемые операции (монтирование, размонтирование, запуск программы). Рабочие среды вроде KDE и Gnome имеют собственные механизмы монтирования. Но если вы используете сторонний оконный менеджер или работаете в консоли и вам нужно автоматическое монтирование устройств, ivman вполне может вам подойти.
Описанный способ проверен на cd,dvd-дисках и usbflash-накопителях при версии пакета ivman 0.6.14-1, ядре 2.6.22.7-1, в качестве оконного менеджера используется compiz 5.5.0 с декоратором emerald.
Установка пакета
Для нормального функционирования, помимо собственно пакета ivman, требуются следующие программы:
- udev
- hal
- d-bus
- pmount
Установите пакет следующей командой:
# pacman -Sy ivman
она подтянет за собой все нужные зависимости; или соберите пакет с помощью abs
Предварительные мероприятия
Для начала, необходимо запустить даемоны hal и d-bus, без них ничего работать не будет
Измените под суперпользователем файл /etc/rc.conf и добавьте hal в список даемонов DAEMONS, например так:
DAEMONS=(syslog-ng hal network netfs ...)
Даемон d-bus добавлять нет надобности, так как hal сам его запустит. Подробнее об | установке и настройке даемона hal
Точки монтирования
По умолчанию точки монтирования накопителей, которые монтируются pmount, располагаются в каталоге /media, каталоги для точек монтирования создаются (и при извлечении - удаляются) динамически, поэтому заранее создавать их не требуется. Для usbflash-накопителей создаются каталоги вида usbdisk, usbdisk1 и так далее. Для компакт-диска каталогу присваивается имя, совпадающее с меткой диска. Компакт-диски не требуют ручного размонтирования, т.е. могут быть извлечены простым нажатием кнопки выдвижения лотка на приводе и размонтируются при этом автоматически.
Работа с fstab
Ivman работает с записями в файле /etc/fstab следующим образом: если запись, соответствующая обрабатываемому устройству, в этом файле содержится, ivman использует команду mount с указанными в записи параметрами.; если запись отсутствует, используется команда pmount. Таким образом, если вам нужны специфические параметры монтирования для конкретного устройства, вы можете добавить соотвествующую запись в файл /etc/fstab (для информации о параметрах см. man mount)
Запуск
Даемон
Ivman может быть запущен как даемон добавлением ivman в файле /etc/rc.conf в список даемонов DAEMONS:
DAEMONS=(syslog-ng hal ivman network netfs ...)
но на моей системе он, хоть и запускался без ошибок, через некоторое время после запуска падал, по крайней мере на момент доступности системы для управления в списке процессов он не значился, копание в логах не дало результата. Если у кого есть идеи на этот счет - дайте мне знать или отредактируйте эту часть
Судя по документации, при таком запуске ivman будет монтировать устройства с правами чтения-записи для группы storage и с правами только чтения для остальных.
Пользователем
В этом случае ivman будет монтировать устройства с правами чтения-записи для запустившего его пользователя и без каких-либо прав для всех остальных.
Вручную
После того, как все пакеты установлены и даемон hal сотоварищи запущен, программу ivman можно вызвать простым запуском в консоли
> ivman
после чего вы можете вставить, скажем, компакт-диск и убедиться в том, что автомонтирование работает. Таким образом, если автомонтирование вам требуется нечасто, можете использовать программу этим способом (впрочем, в таком случае скорее всего не стоит усложнять решение, а использовать обычный mount)
Автоматически
Пожалуй самый удобный способ, который я и сам использую, - помещение записи в файл ~/.xinitrc в строке перед записью запуска вашего оконного менеджера, например у меня это сделано так:
ivman & exec fusion-icon
В комплекте поставки с программой идет скрипт ivman-launch, который, как утверждается, при запуске с параметром --exit-with-session xinit будет автоматически завершать работу программы при выходе из X. На практике у меня он нормально запускал ivman без этого параметра (хотя при выходе из X и не завершал его работу), а при указании параметра просто не запускал ivman вообще (в ближайшее время попробую разобраться в скрипте)
Использование программы одновременно как даемон и из-под пользователя
Вы можете безопасно запускать программу одновременно и как даемон, и из-под пользователя. Если ни один экземпляр программы не запущен из-под пользователя, работает даемон. В случае же если запущена программа из-под пользователя, она выполняет всю работу, а даемон бездействует.
Меры предосторожности при работе нескольких пользователей
При том, что схема даемон + пользовательская программа безопасен и даже рекомендуется, следует избегать запуска двух и более экземпляров программы из под одного, а тем более - нескольких пользователей. В первом случае начнется борьба за ресурсы, во втором - еще и будет непонятно, экземпляр программы какого именно пользователя смонтирует устройство, в результате чего возникнет проблема доступа к каталогу монтирования.
Трюки с ivman
Описаной выше настройки более чем достаточно для автоматического монтирования устройств, но это еще не предел возможностей ivman. Он способен реагировать на изменение состояния устройства куда гибче с помощью инструкций, которые вы ему зададите. Конфигурационные файлы ivman для даемона находятся в каталоге /etc/ivman, а для запуска из-под пользователя - в каталоге ~/.ivman, и представляют собой набор файлов формата xml.
IvmConfigActions.xml
Наибольший интерес (по крайней мере для меня пока) представляет файл IvmConfigActions.xml. Он уже содержит несколько сформированных правил, но они закомментированны. Реально в умолчальной конфигурации раскомментированно и работает только правило mount everything we can. Изучить способы формирования правил можно на закомментированных примерах, а также man IvmConfigActions.xml.
- Приведу несколько правил, которые сам использую, чтобы было понятнее.
Уведомление о подключении устройства
Вы можете сделать уведомление "как в виндовс", точнее - даже лучше, так как выводимое сообщение настраиваемо в весьма широких пределах. В файле имеются закомментированные примеры в разделе, помеченном KDE notifications, для вывода уведомлений там используется программа kdialog, но вам ничто не мешает использовать любую другую аналогичную на ваш выбор. Мой пример несколько модифицированного правила:
<ivm:Match name="hal.info.category" value="storage"> <ivm:Match name="hal.storage.bus" value="usb"> <ivm:Option name="exec" value="kdialog -passivepopup 'обнаружен USB-накопитель $hal.info.vendor$ $hal.info.product$ с меткой $hal.partition.label$' 4" /> </ivm:Match> </ivm:Match>
как видите, я использовал русский вместо дефолтного английского и добавил показ метки раздела. Впрочем, если метка русскоязычная, она не выводится, точнее выводится пустая строка.
Монтирование компакт-диска всегда в один каталог и уведомление о вставке диска
Как говорилось выше, по умолчанию компакт-диски монтируются в каталоге /media в подкаталог, имя которого совпадает с меткой диска. У этого метода сразу два недостатка:
- если метка неанглоязычная, могут возникнуть проблемы на этой почве
- если какие-либо из используемых вами программ/скриптов для работы с компакт-дисками требуют указания каталога монтирования, вы просто не сможете им его указать - в общем случае метка каждый раз будет другой
если для вас эти недостатки существенны, есть такой способ решения, который я использую сам:
<ivm:Match name="hal.block.device" value="/dev/sr0"> <ivm:Option name="mount" value="false" /> <ivm:Option name="exec" value="kdialog -passivepopup 'в устройстве DVD-RW обнаружен оптический $hal.volume.disc.type$ c меткой $hal.volume.label$' 4 $amp; pmount $hal.block.device$ optical" /> </ivm:Match>
- ($amp; - комбинация символов в xml, при парсинге превращаемая в знак амперсанда '&', так как этот знак, указанный непосредственно, здесь имеет специальное значение).
Такое правило (с уведомлением, содержащим метку) может быть вам полезным в том случае, если вы, как и я, имеете привычку при записи дисков указывать метку, характеризующую содержимое. При этом поиск нужного диска среди стопки неподписанных значительно упрощается - вам достаточно вставить диск в привод и дождаться, когда выведется уведомление, т.е. нет необходимости пользоваться файловым менеджером, чтобы узнать, что же на диске содержится.
Монтирование жесткого диска eSATA
В моем распоряжении также имеется внешний диск eSATA, и в ближайшее время я планирую разобраться с его автомонтированием, о чем отпишу здесь.
Решение проблем
Многие проблемы с монтированием можно решить, используя информацию, выдаваемую debug-режимом работы ivman. Для этого завершите работу всех запущеных экземпляров программы (это не касается даемона, если он запущен), и в командной строке консоли или терминала выполните
ivman -d
после чего он запустится и будет работать с выводом диагностических сообщений.
Чтобы узнать имеющиеся атрибуты устройств, можете использовать программу hal-devices. Она выведет список (довольно обширный) обслуживаемых даемоном hal устройств с полным списком атрибутов для каждого из них.
Strafer