LINUX.ORG.RU

Automount with udev


0

1

Требуется сделать automount для флешек.

Вначале сам пытался настроить udev для совместной работы с autofs. Потом нагуглил такой код:

KERNEL!="sd[a-z][0-9]", GOTO="auto_mount_end"

IMPORT{program}="/sbin/blkid -o udev -p %N"
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -t auto -o rw,relatime,noexec,nodev,utf8 /dev/%k /media/%E{dir_name}"

ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

LABEL="auto_mount_end"

В результате, при подключении флешки, создается /media/usbhd-sda1, но не монтируется.

Система: Debian Версия udev: 125

ЧЯДНТ?

★★★★★

Это ж autofs. Оно и не монтируется сразу, только при первом обращении.
Сделай ls -al /media/usbhd-sda1, а потом уже смотри, что куда смонтировано.

Если все равно не смонтировалось, попробуй от рута скомандовать
/bin/mount -t auto -o rw,relatime,noexec,nodev,utf8 /dev/sda1 /media/usbhd-sda1
и посмотреть, на что оно будет материться.

anonymous
()
Ответ на: комментарий от arknir

>Это ж autofs. Оно и не монтируется сразу, только при первом обращении.
Сделай ls -al /media/usbhd-sda1, а потом уже смотри, что куда смонтировано.

Нет. С autofs у меня не получилось.

Это только udev.

У меня не работало даже RUN+=«/bin/echo 123 >> /tmp/mlog»
Почему-то поучилось сделать скрипт /tmp/ololo:
#!/bin/sh
mkdir -p ...
mount ...

и RUN+=«/tmp/ololo %E{dir_name} %k»

Какое-то извращение, но работает.



А, я кажется понял:



core/udev 162-1 (base)

<<



Это для чего такое?

Tanger ★★★★★
() автор топика

>KERNEL!=«sd[a-z][0-9]»

[a-z]


«a» смени на первую незанятую букву. sda у тебя ведь навернякак уже занят?

kernelpanic ★★★★★
()
Ответ на: комментарий от Tanger

Это я тебе показал свою версию udev. Попробуй обновиться.

arknir
()

1) зачем-то упоминаешь autofs - оно у тебя не используется. "-t auto" - это не autofs, а «определи тип файловой системы методом научного тыка» (что для модульных драйверов не работает без /etc/filesystems)

2) пихаешь опции, которые не все файловые системы понимают (в результате, например, из-за опции utf8 не будет монтироваться ext2)

3) забываешь, что флешки будут монтироваться от рута, что даже при успешном монтировании не даст пользователь ничего на них записать

4) размонтируешь ПОСЛЕ извлечения (в результате теряешь данные)

5) изобретаешь велосипед - либо не пользуйся автомонтированием, либо пользуйся GNOME / LXDE / KDE / XFCE (но из этого только GNOME и LXDE git умеют автомонтировать без HAL). Остальное либо не работает, либо слишком сложно.

6) прочитай, наконец, исходный код udisks, libfm и pcmanfm на предмет того, как это должно работать в связке с udev.

На ту же тему: http://np237.livejournal.com/28866.html

AEP ★★★★★
()

После выкидывания hal отовсюду пользуюсь самописным скриптом. Нужны udev, pmount, zenity, libnotify и возможность вывести иконку в трей. Скрипт разбит на две части - системную и пользовательскую, что, конечно, снижает универсальность.

[root@home ~]# cat /lib/udev/rules.d/40-usbmount.rules
# добавление
KERNEL=="sd*", SUBSYSTEMS=="usb",   ACTION=="add",   RUN+="/bin/su lizard -c '/home/lizard/bin/usermount.sh /dev/%k'"
KERNEL=="ub*", SUBSYSTEMS=="usb",   ACTION=="add",   RUN+="/bin/su lizard -c '/home/lizard/bin/usermount.sh /dev/%k'"
# извлечение (на всякий случай)
KERNEL=="sd*",            ACTION=="remove",   RUN+="/usr/bin/pumount /dev/%k"
KERNEL=="ub*",            ACTION=="remove",   RUN+="/usr/bin/pumount /dev/%k" 
~> cat bin/usermount.sh
#!/bin/sh
export DISPLAY=:0
pmount $1
zenity --notification --text="Unmount $1" --window-icon=/usr/share/icons/gnome/32x32/devices/drive-removable-media.png
pumount $1
notify-send "$1 unmounted"
Размонтирование по щелчку на иконке в трее.

lizard ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.