LINUX.ORG.RU

udev монтирование


0

0

Вот, уже давно считается хорошим тоном среди линуксоидов монтирование флешек силами udev Однако есть трудности которые так и не удалось преодолеть:

1) что бы отмонтировать флешку надо делать sudo umount, а это обязательно надо делать, иначе как.. ? как бы это делать без sudo

2) непонятен вопрос интеграции с такими fm как pcmanfm. Всвязи с пунктом 1 отмонтировать через gui xfe например не выходит.

3) был случай когда флешка без label на фат разделе подмонтировалась с моим прежнем label то есть в /media/rodionov_iv

Ниже привожу правило удев, взятое с арч-вики. В кратце: монтирование происходит по метке флешки, по label. Отмонтирование и очистка /meida происходит при вынимании флешки, что удобно может быть удобно, но имеет известные подводные камни. Что если запись ещё не произведена до конца? Вот это правило:

KERNEL!="sd[b-z]*", GOTO="media_by_label_auto_mount_end"
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="media_by_label_auto_mount_end"

# Open luks partition if necessary
PROGRAM=="/sbin/blkid -o value -s TYPE %N", RESULT=="crypto_LUKS", ENV{crypto}="mapper/", ENV{device}="/dev/mapper/%k"
ENV{crypto}!="?*", ENV{device}="%N"
ACTION=="add", ENV{crypto}=="?*", PROGRAM=="/usr/bin/xterm -display :0.0 -e 'echo Password for /dev/%k; /usr/sbin/cryptsetup luksOpen %N %k'"
ACTION=="add", ENV{crypto}=="?*", TEST!="/dev/mapper/%k", GOTO="media_by_label_auto_mount_end"

# Global mount options
ACTION=="add", ENV{mount_options}="noatime,users,uid=100"
# Filesystem specific options
ACTION=="add", PROGRAM=="/sbin/blkid -o value -s TYPE %E{device}", RESULT=="vfat|ntfs", ENV{mount_options}="%E{mount_options},utf8,gid=100,umask=002"

# Get label
ACTION=="add", PROGRAM=="/sbin/blkid -o value -s LABEL %E{device}", ENV{dir_name}="%c"
# use basename to correctly handle labels such as ../mnt/foo
ACTION=="add", PROGRAM=="/usr/bin/basename '%E{dir_name}'", ENV{dir_name}="%c"
ACTION=="add", ENV{dir_name}!="?*", ENV{dir_name}="usbhd-%k"

ACTION=="add", ENV{dir_name}=="?*", RUN+="/bin/mkdir -p '/media/%E{dir_name}'", RUN+="/bin/mount -o %E{mount_options} /dev/%E{crypto}%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}'"
ACTION=="remove", ENV{crypto}=="?*", RUN+="/usr/sbin/cryptsetup luksClose %k"
LABEL="media_by_label_auto_mount_end"
★★★

1) man mount по словам uhelper (suid-ная программа-отмонтировальщик или что-то вроде этого)

3) весьма странно // монтирую в /media/%k

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

>GotF
sync? а какой смысл? как я пойму что всё уже переписалось? Например если файл достаточно большой?

AITap

umount -O uhelper=udev /media/rodionov_iv/ - что то не выходит ((

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

/sbin/mount.udev существует? выполняется?

Попробуйте в начало скрипта дописать id, чтобы убедиться, что он обладает нужными параметрами.

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

Стойте, всё неправильно. Его нужно было _монтировать_ с -o uhelper=udev.

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

>umount -O uhelper=udev /media/rodionov_iv/ - что то не выходит ((
Надо нарисовать скрипт-враппер в /sbin/umount.udev (чего-то вроде sudo umount -i «$@» хватит за глаза)и _монтировать_ диски с опцией uhelper=udev (название, вообще-то, может быть любым).

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

Знаю. Но кроме шелла, идеально для этого подошедшего бы, есть ещё другие скриптовые языки.
Как предложите обойти проблему? sudo ведь потребует возможности запускать umount, чего ТС хочет избежать (или я что-то не понял?)

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

Как предложите обойти проблему?

Можно и на сях враппер написать, если ну очень хочется обойтись без sudo...

Но у самого такой расклад: Скриптик взял вот отсюда, добавил опцию uhelper и нарисовал /sbin/umount.imount

#!/bin/sh

cat /etc/mtab | grep "$@" | awk ' { print $4 }' | grep "uhelper=imount" || exit
sudo /sbin/umount.imount.real "$@"
exit 0
и /sbin/umount.imount.real
#!/bin/sh

sync
umount "$@"
rmdir /media/* 2>/dev/null
Все пустые папки в /media/, вестимо, сносит подчистую.

Deleted
()
Ответ на: комментарий от AITap

Спасибо, протез подействовал!

ivan@lenovo:~ $ cat /sbin/umount.udev
#!/bin/sh
sudo /bin/umount -i «$@»

ну и добавил опцию монтирования uhelper=udev в правило удева.

baaba ★★★
() автор топика
Ответ на: комментарий от Deleted

>cat /etc/mtab | grep «$@» | awk ' { print $4 }' | grep «uhelper=imount» || exit 1

Deleted
()
Ответ на: комментарий от AITap

так же у меня проблемы с непревилигированным монтированием нтфс раздела, всё делал как здесь сказано: http://www.tuxera.com/community/ntfs-3g-faq/#unprivileged
но не работает. Самое главное раньше работало, на других компах работает, не знаю ..

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

Из GUI это делается средствами DE, в частности, udisk (бывший devkit-disks).

AITap ★★★★★
()

> уже давно считается хорошим тоном среди линуксоидов монтирование флешек силами udev

я бы сказал что это среди хомячков на ubuntu завели такую моду чтобы «усё было как в моей винде». На линукс я сам привык контролировать что и когда монтируется. Если хочется чтобы обычный пользователь мог монтировать флешки — создай соответствующее правило udev чтобы устройства типа «флешка» создавались с именем «/dev/fleshkaN», и пропиши в fstab «/dev/fleshaN /media/fleshkaN auto noauto,user». После этого обычные пользователи смогут честно говорить «mount /media/fleshkaN» и «umount /media/fleshkaN»

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

Скажи чем твой метод лучше обычного halevt? Кстати о halevt... как там настроить vfat на русскую языку, а то плееры видят абракадабру, а я нормальную кодировку.

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

> Скажи чем твой метод лучше обычного halevt?

ни разу про «обычный» halevt не слышал, но подозреваю что у него функционал схожий с udev. Так что ничем не лучше, единственно что HAL сейчас deprecated, и например я его вообще снёс (Debian squeeze).

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

тебе не кажется что это не проблема udev или HAL, а проблема mount и твоего плейера? У меня с «mount -o utf8» русские буквы прекрасно на плейере видны.

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

> создай соответствующее правило udev чтобы устройства типа «флешка» создавались с именем «/dev/fleshkaN»

А можно, чтобы создавалось и автомонтировалось, например?

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

> А можно, чтобы создавалось и автомонтировалось, например?

в правилах udev можно прописать всё что угодно, например чтобы при вставлении флешки форматировался жёсткий диск или через динамики проигрывался «чижик-пыжик». Только ты получишь ту же проблему что и у ТС — размонтировать сможет только root, потому что udev не будет знать из под какого пользователя её монтировать.

Как я уже сказал, автомонтирование сменных носителей я считаю сомнительной фичей. Если коробит монтировать флешку через командную строку — можно и мышкой через интерфейс GNOME, но всё-таки лучше самостоятельно.

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

> размонтировать сможет только root

Ну так можно использовать sudo без пароля ;)

Deleted
()
Ответ на: комментарий от pupok

Да нет, как-раз плееров/дисков несколько(они от разных производителей) и все работают примерно одинаково из Linux, а вот с записью в нужной(системной для плееров) кодировке для vfat проблемы появились в какой-то момент, не могу сказать в какой именно(давно сижу на автомонтировщиках, и на основном плеере всё чаще видел не имена файлов а теги ID3). А отказаться от HAL... я не против, вот только пускай дистростроители созреют, всё-таки пока и у Ubuntu 10.04 хватает пакетных зависимостей именно от HAL, да и перспектива остаться без Xfce как-то не сильно внушает уважения к идее отказа от HAL.

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