понедельник, 5 октября 2009 г.

Автомаунт флешек с помощью udev

Еще в то время, когда я только начинал осваивать систему, как деревянные игры осваевает малыш, автомонтирование в некоторых дистрибутивах мне казалось существенным прорывом, делающим Linux ближе к рядовому потребителю. Но часто возникала и обратная сторона медали. До сих пор, в некоторых дистрибутивах монтирование обычной флешки превращается в нетривиальную задачу. Поэтому я и обратил внимание на приведенный ниже пост, взятый отсюда.

После небольшой беседы c Juev по поводу автомонтирования родилася идея правил для udev с помщью которого реализуется автомаунт устройств /dev/sd* aka винты и флешки, ну и до кучи с опцией sync.
Монтирование с опцией sync, как мне кажется, в данном случае оправдано — несмотря на некоторое снижение скорости записи, гарантированность целостности записанного при ообычном выдергивании флешки намноооого больше чем без сей опции.

В общем порывшись в доках udev а так же великом и могучем гугле сии правила для udev были написаны. И как оказалось всё намного проще чем казалось изначально.
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mkdir -p /media/usbhd-%k" 

ACTION=="add", KERNEL=="sd[a-z][0-9]", PROGRAM=="/lib/udev/vol_id -t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o iocharset=utf8,codepage=866,rw,noauto,flush,quiet,nodev,nosuid,noexec,noatime,dmask=000,fmask=111 /dev/%k /media/usbhd-%k", OPTIONS="last_rule"

ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mount -t auto -o iocharset=utf8,codepage=866,rw,noauto,sync,dirsync,noexec,nodev,noatime /dev/%k /media/usbhd-%k", OPTIONS="last_rule"

ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/umount -l /media/usbhd-%k"

ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/rmdir /media/usbhd-%k", OPTIONS="last_rule"

Просто помещаем этот текст в /etc/udev/rules.d/блаблабла.rules и радуемся (хотя возможно понадобится ребут)

Сей метод имеет один недостаток (помимо опции sync) — файловые менеджеры использующие hal для монтирования (thunar, nautilus, dolphin, pcmanfm, etc) не отображают примонтированный раздел, а предлогают его примонтировать ещё раз. Если кто знает как сие обойти то дайте знать (насколько понимаю надо монтировать через hal или как-то давать ему знать о том что смонтировано, но как сие делать я не в курсе)

UP Тут решение проблем с несознательными файломанагерами

Комментариев нет: