Автоматическое монтирование

24 August 2009 #archlinux

В последнее время все больше и больше делается для упрощения работы в Linux. Это касается и автоматического монтирования сменных носителей. Если в Ubuntu или OpenSuse все работает из коробки, то в Archlinux нужно приложить некоторые усилия для того, чтобы все работало.

Во-первых, устанавливаем и настраиваем HAL. Если это еще не было сделано до этого.

$ yaourt -S hal dbus udev

Не забываем запускать hal при старте системы, для этого добавляем его в строку DAEMONS файла /etc/rc.conf.

Теперь необходимо прописать правила PolicyKit, для этого в файле /etc/PolicyKit/PolicyKit.conf прописываем следующее:

<match user="juev">
 <!-- replace with your login or delete the line if you want to allow all users to manipulate devices (keep security issues in mind though) -->
 <match action="org.freedesktop.hal.storage.*">
   <return result="yes"/>
 </match>
 <match action="hal-storage-mount-fixed-extra-options">
 <!-- for internal devices mounted with extra options like a wished mount point -->
   <return result="yes" />
 </match>
 <match action="hal-storage-mount-removable-extra-options">
 <!-- for external devices mounted with extra options like a wished mount point -->
   <return result="yes" />
 </match>
</match> <!-- don't forget to delete this line if you deleted the first one -->

Как видно из комментариев, чтобы все пользователи имели возможность автоматического монтирования, необходимо удалить первую и последнюю строчки конфигурации.

Осталось пользователей, которые будут использовать сменные носители добавить в группу storage, для это выполняем команду:

$sudo gpasswd -a user storage

Вместо user необходимо прописать имя своего пользователя.

Теперь все готово для использования автоматического монтирования на машине. Если используется gnome, kde или xfce то в их файловых менеджерах автоматическое монтирование будет работать из коробки.  Если же используется какой-нибудь box, то нужно выбрать файловый менеджер,  и установить его. Я рекомендую использовать Thunar:

$ yaourt -S thunar thunar-volman thunar-archive-plugin thunar-media-tags-plugin thunar-thumbnailers

В примере установки используется не только сам Thunar, но и дополнения к нему, которые позволяют упростить работу с изображениями, звуковыми файлами, архивами и сменными томами.

В принципе, сразу после установки Thunar готов к работе и при вставке сменного носителя, его можно будет в нем открыть. При установленном пакете thunar-volman можно настроить действия, которые будут выполняться при вставке сменного носителя в зависимости от его содержимого. А если мы хотим, чтобы при вставке флешки автоматически запускался thunar, то нужно добавить его запуск в режиме демона в сессию оконного менеджера. Я использую awesome, поэтому запуск прописываю в файл .xinitrc до строки запуска оконного менеджера:

thunar --daemon &

Теперь при вставке компакт-диска, флешки или иного сменного носителя будет автоматически открываться окно thunar с содержимым этого носителя. Для того, чтобы отмонтировать носитель просто в боковой панели thunar щелкнуть по имени носителя правой кнопкой мыши и выбрать пункт “Извлечь носитель”.

Просто и очень красиво!

Но что делать, если в иксах проводим очень мало времени? И в основном проводим время в консоли? Каждый раз набирать команду примонтировать носитель, отмонтировать носитель довольно муторно…

Есть решение, не очень корректное, но есть. Для этого достаточно установить пакет autofs:

$ yaourt -S autofs

И теперь настраиваем его использование. В файле /etc/autofs/auto.master указываем каталог, к которому будет производиться монтирование и файл, в котором описаны правила монтирования:

/media /etc/autofs/auto.misc

Теперь редактируем указанный файл:

cdrom -fstype=iso9660,ro,nodev,nosuid,utf8 :/dev/cdrom
floppy -fstype=auto,async,nodev,nosuid,umask=000,utf8 :/dev/fl
disk -fstype=auto,async,nodev,nosuid,umask=000,codepage=866 :/dev/sdb1

В данном случае указано только монтирование cdrom, флопика и только одной флешки. Если нужно больше – просто необходимо добавить соответствующие строки.

Обращаю внимание на то,что каталог, если он использовался в качестве точки монтирования в каком нибудь DM, должен быть предварительно очищен от всех файлов и вложенных каталогов.

В файле /etc/conf.d/autofs желательно указать время неактивности, по истечении которого раздел будет отмонтирован, для этого в кавычки добавляем параметр:

daemonoptions='--timeout=10'

То есть по истечении 10 секунд неактивности и свободы раздела, он будет отмонтирован автоматически. Для того, чтобы в логах не получать предупреждения типа таких:

Aug 23 13:05:42 matrix automount[2635]: syntax error in nsswitch config near [ syntax error ]

необходимо изменить файл /etc/nsswitch.conf, добавив строку:

automount:  files

Теперь запускаем демона:

$ sudo /etc/rc.d/autofs start

И добавляем его имя в строку DAEMONS файла /etc/rc.conf для автоматического старта при запуске системы. И теперь в консоли можно спокойно работать с флешками. Для этого просто присоединяем ее к порту и обращаемся к каталогу /media/disk, при обращении будет произведено автоматическое монтирование раздела и спокойно работаем… Как только закончили работу с флешкой, выходим из каталога, ждем некоторое время и просто извлекаем ее.

Единственно есть одна сложность. В моем примере для монтирования флешки используется параметр async, который будет кэшировать данные в оперативной памяти и сбрасывать их на диск в момент отмонтирования раздела. Если был передан большой объем данных, то момент отмонтирования можно будет определить только по сигналу светодиода на флешке, и если его нет, как на моей, то момент окончания сброса данных и отмонтирования отследить уже очень тяжело. А использовать параметр sync не эффективно, так как это приводит к быстрому выходу ее из строя.

Так что, метод эффективный, но не без подводных камней. И еще хотел бы сделать небольшое замечание. Не следует использовать оба варианта автоматического монтирования одновременно. Если используете оконные менеджеры, или DM, то используйте именно их файловые менеджеры и их способы автоматического монтирования (с помощью HAL), а если больше частью работаете в консоли, то используйте autofs. Не стоит их смешивать.