HOWTO Ivman
Материал из Gentoo Linux Wiki
- Вернуться в раздел железо
[править] Цель
Целью статьи является установка ivman для автомонтирования устройств.
Внимание: часть информации может быть недействительна для старых версий Ivman, особенно Ivman 0.5.x. Пожалуйста, используйте последние стабильные версии Ivman.
[править] Требуемые программы
Все требуемые пакеты есть в портежах, поэтому минимальным действием будет:
emerge -av ivman
Размаскируйте требуемые пакеты, если необходимо.
Если установка HAL выдаёт предупреждения, что не установлены "u64" или "BLKGETSIZE64"и вы используете ядро 2.6, обновите пакет linux-headers:
emerge --oneshot linux-headers
Когда linux-headers полностью обновится, пересоберите glibc:
emerge --oneshot glibc
[править] Использование
Есть два пути использования Ivman: от root, или от обычного пользователя. У любого из методов имеются как преимущества, так и недостатки.
[править] Запуск Ivman от root
- Для запуска Ivman выполните: /etc/init.d/ivman start
- Чтобы Ivman стартовал при каждом запуске выполните: rc-update add ivman default
- Все действия Ivman после запуска выполняются с привилегиями пользователя «ivman» и группы «plugdev».
- По умолчанию, сменные устройства будут монтироваться для доступа на чтение/запись только входящим в группу «plugdev» (группа пользователей, которым разрешено использовать pmount). Это более безопасно, чем запуск Ivman от обычного пользователя.
- Размонтирование дисков обычным пользователем может быть затруднено. Вам может потребоваться использование sudo pumount или sudo umount. Размонтирование используя 'media:/' ioslave в KDE может не работать.
- Для легкого размонтирования дисков обычными пользователями отредактируйте файл /usr/share/hal/fdi/policy/10osvendor/10-storage-policy.fdi, изменив
user code> наusers code> в строке <merge key="storage.policy.default.mount_option.user" type="bool">true</merge>. Если у вас нет такого файла, поищите похожий в /usr/share/hal. (Внимание: это работает для ivman 0.5.x, но не для последних версий ivman.)
[править] Запуск Ivman от обычного пользователя
- Для начала, у вас должен быть запущен HAL. Выполните как root: /etc/init.d/hald start
- Для запуска HAL каждый раз при загрузке выполните: rc-update add hald default
- Для запуска Ivman единично выполните команду ivman под вашим пользовательским аккаунтом. Чтобы Ivman запускался автоматически, когда вы входите в систему, вы должны сделать следующее:
- KDE: создать символьную ссылки для ivman в ~/.kde/Autostart: ln -s $(which ivman) ~/.kde/Autostart/ivman
- X: поместите ivman-launch --exit-with-session xinit & в ~/.xinitrc (требуется Ivman 0.6.9 или более новый).
- E17: Создание Ivman.eap (секция 'приложения GTK+'), и добавьте это в ~/.e/e/applications/all/ . После отредактируйте ~/.e/e/applications/startup/.order, добавив Ivman.eap.
- fluxbox: поместите ivman-launch --exit-with-session xinit & в ~/.fluxbox/startup (требуется Ivman 0.6.9 или более новый)
- Другие: пожалуйста, добавьте ваши инструкции здесь!
- Ivman запустится под вашим пользовательским аккаунтом.
| Примечание: Вы можете не находиться в группе plugdev, потому что сейчас устройства монтируются так, что только вы имеете к ним доступ. |
- По умолчанию сменные устройства будут монтироваться на запись/чтение для вас и не допускать больше никого.
- Размонтирование работает как обычно. Работает стандартный pumount. Размонтирование используя 'media:/' ioslave в KDE работает.
- Когда возможно (а, как правило, это возможно), запускайте Ivman одновременно от root и от обычного пользователя. В этом случае автомонтирование будет произведено от пользовательского запуска Ivman, а если пользовательский Ivman отсутствует, автомонтирование будет автоматически передано запуску Ivman от root. Не запускайте более одного пользовательского Ivman, даже под различающимися пользовательскими аккаунтами – это приведёт к войне за ресурсы.
Ivman не требует дополнительной конфигурации для автомонтирования. Данные fstab игнорируются, сменные устройства/диски будут смонтированы в /media. Однако, Ivman может быть использован не только для монтирования. Обретите свободу для добавления ваших супер-правил на этой странице :-)
[править] Примеры некоторых правил
| Code: Смонтировать всё, что есть |
<ivm:Match name="ivm.mountable" value="true">
<ivm:Option name="mount" value="true" />
</ivm:Match>
|
| Code: Открыть мой MP3-плеер в mc, когда он подключен |
<ivm:Match name="hal.info.product" value="IAUDIO">
<ivm:Option name="exec" value="xterm -e mc /home/share/music /media/IAUDIO" />
</ivm:Match>
|
| Code: Открыть мою камеру в mc, когда она подключена |
<ivm:Match name="hal.info.vendor" value="FUJIFILM">
<ivm:Option name="exec" value="xterm -e mc /home/share/pics /media/usbdisk/DCIM/100_FUJI" />
</ivm:Match>
|
Для KDE
| Code: Выводит всплывающее окошко, когда что-нибудь подключено |
<ivm:Match name="hal.info.category" value="storage">
<ivm:Match name="hal.storage.bus" value="usb">
<ivm:Option name="exec" value="kdialog --passivepopup 'USB storage device detected: $hal.info.vendor$ $hal.info.product$' 4" />
</ivm:Match>
</ivm:Match>
|
[править] Проблемы
[править] Использование записей в fstab (ivman 0.6.x или более новый)
Ivman 0.6.x или более новый использует pmount для монтирования устройств, и не нуждается в записях fstab. Но если хочеться, то можно.
pmount (и Ivman, таким образом) будет автоматически учитывать записи fstab. С версии 0.6.0, на каждую символьную ссылку будет создано правило, без использования IvmConfigMappings.xml. Устройства, не отмеченные в fstab, будут монтироваться в /media.
[править] Использование записей в fstab (ТОЛЬКО ivman 0.5.x!)
Ivman 0.5.x может использовать ваш /etc/fstab. Если вы до этого пользовались supermount, вам необходимо изменить записи для использования ivman. Например:
/dev/cdroms/cdrom0 /mnt/cdrom iso9660 noauto,ro 0 0
Может также потребоваться отключение devfs.
[править] Монтирование устройств с размонтированием от обычного пользователя (ТОЛЬКО ivman 0.5.x!)
Когда вы подключаете USB-носитель, ivman, запущеный от root монтирует его автоматически, но вы не можете размонтировать его иначе, чем от root. Это можно устранить, настроив HAL на монтирование всех устройств хранения данных с опцией "users", чего вам может очень не хотеться.
Создайте файл с названием whatever.fdi в директории /usr/share/hal/fdi/95userpolicy/ со следующим содержимым:
| Файл: whatever.fdi |
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<!-- Append users to default mount options -->
<device>
<merge key="storage.policy.default.mount_option.users" type="bool">true</merge>
</device>
</deviceinfo>
|
Для дополнительной информации смотрите HAL Specifications.
[править] Решение проблемы неразмонитирования флешки после ее физического удаления
Иногда может возникать ситуация что после удаления флешки команда mount выдает что она подмонтирована, в результате следующие подсоединение флешки приводит к тому что ей присваевается следующая буква и в резульатет чего возникает множество мертвых точек монтирования
| Code: Пример ситуации когда два раза вынута и вставлена одна и таже флешка |
#mount /dev/sdb1 on /media/sdb1 type vfat (rw,noexec,nosuid,nodev,quiet,shortname=mixed,uid=104,gid=412,umask=007,fmask=0117,dmask=0007,iocharset=utf8) /dev/sdc1 on /media/sdc1 type vfat (rw,noexec,nosuid,nodev,quiet,shortname=mixed,uid=104,gid=412,umask=007,fmask=0117,dmask=0007,iocharset=utf8) |
это происходит из за того что по умолчанию ivman для размонтирования вызывает команду pumount /dev/sdb1, которая нечего не выполняет выдавая что /dev/sdb1 нет (udev успевает удалить это устройсво)
решение проблемы следующее правим /etc/ivman/IvmConfigBase.xml таким образом
| Файл: /etc/ivman/IvmConfigBase.xml |
<!-- mount command. default is autodetected. Must be specified with
umountcommand. -->
<ivm:Option name="mountcommand" value="/usr/bin/pmount -u 007 '$hal.block.device$'" />
<!-- umount command. default is autodetected. Must be specified with
mountcommand. -->
<ivm:Option name="umountcommand" value="/usr/bin/sudo /bin/umount -l '$hal.block.device$'" />
|
а так же добавляя в /etc/sudoers строчку
| Файл: /etc/sudoers |
ivman ALL = NOPASSWD: /bin/umount |
sudo конечно же должен быть установлен.
[править] Разное
HAL может потребовать добавление coldplug на уровень загрузки boot для работы распознавания USB-устройств.
Если у вас проблемы с пользовательскими запусками ivman для автомонтирования USB flash, вам может потребоваться включить поддержку utf-8 в вашем ядре. Смотрите это обсуждение на форуме для подробностей.
[править] Другие проблемы
Если ivman не работает, для начала остановите его:
/etc/init.d/ivman stop
Отредактируйте базовые настройки:
nano -w /etc/ivman/IvmConfigBase.xml
Отключите fork, и включите отладку. Потом запустите ivman из консоли. Смотрите сообщения.
