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 на users в строке <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 из консоли. Смотрите сообщения.

Источник — «http://ru.gentoo-wiki.com/HOWTO_Ivman»