Автомонтирование через udev

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
shau-kote
Сообщения: 417
Статус: злобный хоббит
ОС: Arch

Автомонтирование через udev

Сообщение shau-kote »

Всем доброго времени суток.
Решил настроить автомонтирование съёмных носителей через udev, ибо подзадолбало слегка монтировать ручками. После чтения нескольких статей на данную тему (в частности АрчеВики и ГентуВики) написал такой файл правил:

Код: Выделить всё

BUS!="usb", SUBSYSTEM!="block", KERNEL!="sd[d-z]*", GOTO="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}="usb_%k"

ACTION=="add", %{ID_FS_TYPE}=="vfat", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -t auto -o rw,users,iocharset=utf8 /dev/%k /media/%E{dir_name}"
ACTION=="add", %{ID_FS_TYPE}=="udf", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -t auto -o rw,users /dev/%k media/%E{dir_name}"


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

LABEL="end"

Однако, к сожалению, работает он не совсем так, как хотелось бы.
Во-первых, при загрузке udev находит некий usb_fd0 и создаёт для него папку в /media/usb_fd0 (полагаю, даже пытается его монтировать, но, за очевидным отсутствием какого-либо флоппа вообще, безуспешно).
Во-вторых, несмотря на опцию монтирования users, размонтировать флешку из-под обычного пользователя не получается.
В-третьих, несмотря на условия %{ID_FS_TYPE}=="vfat" и %{ID_FS_TYPE}=="udf", вроде как не дающие udev'у обрабатывать командами, прописанными в RUN устройства, не имеющие ФС, при подключении флешки с таблицей разделов, udev упорно пытается монтировать устройства /dev/sdX (не знаю как корректно их обозвать).

Подскажите, пожалуйста, в чём может быть дело?
Спасибо сказали:
MrClon
Сообщения: 838
ОС: Ubuntu 10.04, Debian 7 и 6

Re: Автомонтирование через udev

Сообщение MrClon »

shau-kote писал(а):
03.08.2011 00:11
Во-первых, при загрузке udev находит некий usb_fd0 и создаёт для него папку в /media/usb_fd0 (полагаю, даже пытается его монтировать, но, за очевидным отсутствием какого-либо флоппа вообще, безуспешно).

Радикальное решение: отключи в BIOS флопарь.
Спасибо сказали:
Аватара пользователя
shau-kote
Сообщения: 417
Статус: злобный хоббит
ОС: Arch

Re: Автомонтирование через udev

Сообщение shau-kote »

MrClon писал(а):
03.08.2011 08:47
Радикальное решение: отключи в BIOS флопарь.

Хм, спасибо, помогло. Правда, всё равно не понимаю, как udev может реагировать на подключение флоппика, при его физическом отсутствии... :huh:

А с остальными проблемами что делать, не подскажете?
Спасибо сказали:
Аватара пользователя
DaemonTux
Сообщения: 1480
Статус: Юный падаван
ОС: Gentoo

Re: Автомонтирование через udev

Сообщение DaemonTux »

shau-kote писал(а):
03.08.2011 15:18
MrClon писал(а):
03.08.2011 08:47
Радикальное решение: отключи в BIOS флопарь.

Хм, спасибо, помогло. Правда, всё равно не понимаю, как udev может реагировать на подключение флоппика, при его физическом отсутствии... :huh:

Флопик достаточно архаичная вещь. И определение флопика не происходит как токового. Ось находит контролер и определить есть на нем флопик или нет не может, потому что сам интерфейс подключения не предполагает возможности определения есть ли флопик или нет. В те времена когда создался интерфейс подключения, все настраивалось ручками :)


P. S. надеюсь что объяснил более менее понятно.
Vladivostok Linux User Group
Спасибо сказали:
Аватара пользователя
shau-kote
Сообщения: 417
Статус: злобный хоббит
ОС: Arch

Re: Автомонтирование через udev

Сообщение shau-kote »

DaemonTux писал(а):
05.08.2011 18:42
Флопик достаточно архаичная вещь. И определение флопика не происходит как токового. Ось находит контролер и определить есть на нем флопик или нет не может, потому что сам интерфейс подключения не предполагает возможности определения есть ли флопик или нет. В те времена когда создался интерфейс подключения, все настраивалось ручками


P. S. надеюсь что объяснил более менее понятно.

Хм. Понятно, но с какого перепугу на шине USB? :huh:
Спасибо сказали:
Аватара пользователя
DaemonTux
Сообщения: 1480
Статус: Юный падаван
ОС: Gentoo

Re: Автомонтирование через udev

Сообщение DaemonTux »

shau-kote писал(а):
05.08.2011 23:25
DaemonTux писал(а):
05.08.2011 18:42
Флопик достаточно архаичная вещь. И определение флопика не происходит как токового. Ось находит контролер и определить есть на нем флопик или нет не может, потому что сам интерфейс подключения не предполагает возможности определения есть ли флопик или нет. В те времена когда создался интерфейс подключения, все настраивалось ручками


P. S. надеюсь что объяснил более менее понятно.

Хм. Понятно, но с какого перепугу на шине USB? :huh:

Про usb ничего сказать не могу. Так как я юсб флопиками дел не имею.
Vladivostok Linux User Group
Спасибо сказали:
Аватара пользователя
shau-kote
Сообщения: 417
Статус: злобный хоббит
ОС: Arch

Re: Автомонтирование через udev

Сообщение shau-kote »

DaemonTux писал(а):
06.08.2011 14:21
Так как я юсб флопиками дел не имею.

Я тоже. Отродясь не держал в руках.
Именно поэтому я зело удивлён, почему контроллер флоппика материнской платы моего компьютера, который, как Вы говорите, определяется ОС как флоппик вне зависимости от реального наличия подключённого к нему флоппика, вдруг оказывается на шине USB. :huh:
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: Автомонтирование через udev

Сообщение Nazyvaemykh »

Это очень, очень плохой способ автомонитрования.
Если ужь по какой-то причине нужно именно, чтобы были «монтирующие» правила udev, то адекватным решением была бы правка /etc/fstab при появлении и удалении устройств.
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
shau-kote
Сообщения: 417
Статус: злобный хоббит
ОС: Arch

Re: Автомонтирование через udev

Сообщение shau-kote »

Nazyvaemykh писал(а):
07.08.2011 16:46
Это очень, очень плохой способ автомонитрования.
Если ужь по какой-то причине нужно именно, чтобы были «монтирующие» правила udev, то адекватным решением была бы правка /etc/fstab при появлении и удалении устройств.

Можно узнать более подробные аргументы против автомонтирования с помощью правил udev?
Мне он как раз таки кажется наиболее оптимальным из всех мне известных, поэтому мне очень интерестна Ваша точка зрения.
Спасибо сказали:
Аватара пользователя
VoidExp
Сообщения: 208
Статус: Lead guitar adept
ОС: Ubuntu

Re: Автомонтирование через udev

Сообщение VoidExp »

А разве гномы, кеды и иксфейсы не полагаются на udev для автомонтирования?
Спасибо сказали:
Аватара пользователя
shau-kote
Сообщения: 417
Статус: злобный хоббит
ОС: Arch

Re: Автомонтирование через udev

Сообщение shau-kote »

VoidExp писал(а):
22.08.2011 19:28
А разве гномы, кеды и иксфейсы не полагаются на udev для автомонтирования?

Да, они получают из него нужную информацию о съёмных устройствах. А Вы это, собственно, к чему?
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: Автомонтирование через udev

Сообщение Nazyvaemykh »

shau-kote,

UNIX — многозадачная система, следовательно, многие пользователи должны имать возможность монтировать/отмонтировать устройства. Для этого есть и специальная опция в fstab (5). В приведенном примере происходит шажок от многопользовательской системе к однопользовательской. Плохо.

Это отход и от пути UNIX. Одна программа — одна задача. Задача udev в организации интерфейсов. Выполнять такие действия, как автомонтирование, должен кто-то другой.

Автомонитрование правилом udev — отход от любых стандартов. Есть спецификации freedesktop, есть какие-то умолчания, принятые в распространенных дистрибутивах. Достаточно ли оснований, чтобы быть не как все?

Если хочется именно прямо через udev, есть относительно хороший способ. Его, кажется, использует eddy: при появлении устройства добавляется записить в fstab, так что его можно монтировать. Ряд файловых менеджеров умеет анализировать fstab, так что монитрование/отмонтирование происходит прямо в GUI.
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Автомонтирование через udev

Сообщение eddy »

Nazyvaemykh писал(а):
22.08.2011 22:53
Если хочется именно прямо через udev, есть относительно хороший способ. Его, кажется, использует eddy

Использую. Правда, ntfs приходится монтировать от рута: ntfs-3g от имени пользователя запускаться не хочет, несмотря на опцию user в fstab.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
shau-kote
Сообщения: 417
Статус: злобный хоббит
ОС: Arch

Re: Автомонтирование через udev

Сообщение shau-kote »

Nazyvaemykh писал(а):
22.08.2011 22:53
Для этого есть и специальная опция в fstab (5).

Если Вы про [i]users[/], то я указал эту опцию команде mount в правиле.

Nazyvaemykh писал(а):
22.08.2011 22:53
В приведенном примере происходит шажок от многопользовательской системе к однопользовательской.

Честно говоря, не вижу никакого шажка. Не могли бы Вы привести конкретный пример?

Nazyvaemykh писал(а):
22.08.2011 22:53
Задача udev в организации интерфейсов. Выполнять такие действия, как автомонтирование, должен кто-то другой.

mount и монтирует. А udev лишь запускает mount в нужный момент. (:

Nazyvaemykh писал(а):
22.08.2011 22:53
Автомонитрование правилом udev — отход от любых стандартов. Есть спецификации freedesktop, есть какие-то умолчания, принятые в распространенных дистрибутивах. Достаточно ли оснований, чтобы быть не как все?

[irony]Не думаю, что в Archlinux'е есть какие-либо умолчания, касательно автомонтирования съёмных носителей.[irony]
И как же эти спецификации рекомендуют мне, обычному пользователю, не держащему в системе ни DE, ни файлового менеджера, реализовывать автомонтирование?

eddy писал(а):
22.08.2011 23:39
Использую.

Признаться, не вижу в таком решении особого смысла. :( ИМХО, ненамного сложнее тогда уж монтировать ручками.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Автомонтирование через udev

Сообщение eddy »

shau-kote писал(а):
23.08.2011 20:31
ненамного сложнее тогда уж монтировать ручками.

Постоянно писать su?
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
shau-kote
Сообщения: 417
Статус: злобный хоббит
ОС: Arch

Re: Автомонтирование через udev

Сообщение shau-kote »

eddy писал(а):
23.08.2011 21:52
Постоянно писать su?

Ну зачем же так грубо? Есть же sudo. (:
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Автомонтирование через udev

Сообщение eddy »

shau-kote писал(а):
23.08.2011 22:54
Есть же sudo

Неудобная штука, хотя, конечно, на монтирование можно настроить с NOPASSWD.
Ну, а sudo с TARGETPW от su -c отличается лишь логгированием (которое мне все равно не нужно) и отсутствием необходимости писать кавычки вокруг команды с параметрами.

Через udev же никаких su/sudo не надо (кроме ntfs - но эта штука настолько редка, что ее можно и не вспоминать): воткнул флешку/USB-HDD, зашел в mc в /media, набрал mount <что-там> - и готово.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
BIgAndy
Сообщения: 1923

Re: Автомонтирование через udev

Сообщение BIgAndy »

Nazyvaemykh писал(а):
22.08.2011 22:53
....... В приведенном примере происходит шажок от многопользовательской системе к однопользовательской. Плохо.
Это отход и от пути UNIX. Одна программа — одна задача.
........ Выполнять такие действия, как автомонтирование, должен кто-то другой.

Автомонитрование правилом udev — отход от любых стандартов.

Имхо не совсем так, вернее совсем не так.
1) Принцип одно действие-одна программа не нарушен. blkid определяет или создаёт блочноей устройство, команда mkdir создаёт нужную дирректорию (или по метке, а если ее нет, то по uuuid), mount - туда монтирует .
2) Udev только отлавливает событие появления нового устройства и выполняет цепочку этих команд. Мы, например, переписали правила udev для того, чтобы всё это монтировалось в домашние дирректории пользователей, поскольку за одним компом фактически может работать до 28 пользователей. в/media будет полный бардак.
3) Это не отход от многопользовательности, а наоборот, упорядочивание работы со съемными устройствами для нескольких пользователей, которые могут работать на одном хосте одновременно.
4) Когда "втыкаешь" в эти правила, всё становится просто, хотя меня,например сильно раздражало первое время наличие hal/udev/kudzu.

Задача udev в организации интерфейсов

Задача udev -отлавилвать события и передавать их обработчикам. Больше никаких задач у udev нет. Интерфейсы создают соответсвующие утилиты, как и во времена unixtime.
Спасибо сказали:
Аватара пользователя
shau-kote
Сообщения: 417
Статус: злобный хоббит
ОС: Arch

Re: Автомонтирование через udev

Сообщение shau-kote »

BIgAndy писал(а):
23.08.2011 23:11
1) Принцип одно действие-одна программа не нарушен. blkid определяет или создаёт блочноей устройство, команда mkdir создаёт нужную дирректорию (или по метке, а если ее нет, то по uuuid), mount - туда монтирует .
2) Udev только отлавливает событие появления нового устройства и выполняет цепочку этих команд. Мы, например, переписали правила udev для того, чтобы всё это монтировалось в домашние дирректории пользователей, поскольку за одним компом фактически может работать до 28 пользователей. в/media будет полный бардак.
3) Это не отход от многопользовательности, а наоборот, упорядочивание работы со съемными устройствами для нескольких пользователей, которые могут работать на одном хосте одновременно.
4) Когда "втыкаешь" в эти правила, всё становится просто, хотя меня,например сильно раздражало первое время наличие hal/udev/kudzu.

Подписываюсь под каждым словом.
Ну, кроме тех, что про 28 пользователей. (:
Спасибо сказали:
BIgAndy
Сообщения: 1923

Re: Автомонтирование через udev

Сообщение BIgAndy »

shau-kote писал(а):
23.08.2011 23:23
Ну, кроме тех, что про 28 пользователей. (:

Уточню : у нас одновременно может работать за одним компом до 28 человек одновременно ( ультратонкие клиенты с трансляцией usb и com портов на основной хост)
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: Автомонтирование через udev

Сообщение Nazyvaemykh »

BIgAndy,
да, в конце концов, в любом случае (авто)монтирование происходит через udev. В любом случае, udev вызывает программу-обработчик. (Тут я, наверное, погорячился, когда говорил об отходе от дороги UNIX).

Но вот обсуждаемый тут способ. Ведь все решения принимает ислючительно рут? А потом выполняет система? Пользователю не остается ничего? Вот я вставил флешку, она сама примонтировалась (хотя я, пользователь, этого, возможно, не хотел), а потом мне же ее и отмонтировать… Где справедливость и демократия?

Чем вам принципиально не нравится использование связки udev-udisks-polkit-dbus? Overhead? А ведь тут как раз можно дать пользователю какую-то свободу: сообщить ему, что, мол, появилось новое устройство, у тебя есть права что-то с ним сделать. А там уже пусть он, пользователь, и его, пользователя, программы, решают, что там с этим делать.
А если пользователь еще не блюёт от freedesktop.org, то, возможно, у него действительно есть какие-то надежды на систему, что она будет вести себя так, как написано в тех спецификциях.
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21245
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Автомонтирование через udev

Сообщение Bizdelnick »

iУведомление от модератора
Офтоп перемещён в su vs. sudo
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
shau-kote
Сообщения: 417
Статус: злобный хоббит
ОС: Arch

Re: Автомонтирование через udev

Сообщение shau-kote »

Nazyvaemykh писал(а):
25.08.2011 09:06
Но вот обсуждаемый тут способ. Ведь все решения принимает ислючительно рут? А потом выполняет система? Пользователю не остается ничего? Вот я вставил флешку, она сама примонтировалась (хотя я, пользователь, этого, возможно, не хотел), а потом мне же ее и отмонтировать… Где справедливость и демократия?
<...>
А ведь тут как раз можно дать пользователю какую-то свободу: сообщить ему, что, мол, появилось новое устройство, у тебя есть права что-то с ним сделать. А там уже пусть он, пользователь, и его, пользователя, программы, решают, что там с этим делать.

То есть Вам не по нраву то, что система сама монтирует съёмные накопители?.. Ей-богу не понимаю Вас...
Лично я пишу правила автомонтирования с расчётом на то, что в преобладающем числе случаев съёмный накопитель вставляется для того, чтобы его подмонтировать его и что-то туда записать. В редких случаях, когда это не так (например, когда мне нужны отформатировать накопитель), я его просто предварительно отмонтирую.
То есть мне удобно, когда я вставляю флешку, записываю данные в соответствующую папку, отмонтирую ей и отключаю флешку. Не вижу нарушения никаких way'ев.

Nazyvaemykh писал(а):
25.08.2011 09:06
Чем вам принципиально не нравится использование связки udev-udisks-polkit-dbus?

Не вижу принципиального смысла городить огород.

Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Автомонтирование через udev

Сообщение eddy »

shau-kote писал(а):
25.08.2011 12:35
То есть мне удобно, когда я вставляю флешку, записываю данные в соответствующую папку, отмонтирую ей и отключаю флешку. Не вижу нарушения никаких way'ев.

А вот проблема в том, что "умолчальный" способ автомонтирования не позволяет отмонтировать флешку.
Правила udev все равно надо писать самому. А автоматически вызывать mount при подключении носителя неудобно еще тем, что очень сложно на многопользовательской машине выяснить, какой же пользователь воткнул флешку. А если монтировать от рута, то пользователь не сможет ее отмонтировать. А если монтировать с флагом users, то другие пользователи смогут отмонтировать, что не всегда желательно.

Поэтому лучше в правиле udev для сменных носителей mount не прописывать, а прописывать только добавление/удаление нужной строчки в /etc/fstab и создание/удаление нужной директории в /media.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: Автомонтирование через udev

Сообщение Nazyvaemykh »

eddy, у команды mount есть параметр users.
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Автомонтирование через udev

Сообщение eddy »

Nazyvaemykh писал(а):
25.08.2011 13:21
у команды mount есть параметр users.

Про него я говорил:
eddy писал(а):
25.08.2011 12:39
если монтировать с флагом users, то другие пользователи смогут отмонтировать, что не всегда желательно

RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: Автомонтирование через udev

Сообщение Nazyvaemykh »

А вот такой вариант еще, вот воткнул я флешечку, она примонтировалась, я что-то с этой флешкой проделал, отмонтировал, и тут-то меня осенило, что хорошо бы еще что-то с этой флешкой проделать.
Как я смогу ее обратно примонтировать с этими вашими правилами udev?
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Автомонтирование через udev

Сообщение eddy »

Nazyvaemykh писал(а):
25.08.2011 15:13
Как я смогу ее обратно примонтировать с этими вашими правилами udev?

Пока вы ее не выдернули, примонтируете заново. Как только выдернете, строчка из fstab и директория из /media удалятся за ненадобностью.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: Автомонтирование через udev

Сообщение Nazyvaemykh »

eddy, это не про fstab вопрос.
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
shau-kote
Сообщения: 417
Статус: злобный хоббит
ОС: Arch

Re: Автомонтирование через udev

Сообщение shau-kote »

Nazyvaemykh писал(а):
25.08.2011 15:13
А вот такой вариант еще, вот воткнул я флешечку, она примонтировалась, я что-то с этой флешкой проделал, отмонтировал, и тут-то меня осенило, что хорошо бы еще что-то с этой флешкой проделать.
Как я смогу ее обратно примонтировать с этими вашими правилами udev?

Физически переподключить.
Не знаю, как людям, не отрывающим рук от клавиатуры и печатающим со скоростью свыше 200 зн/мин, но лично мне это сделать быстрее, чем напечатать mount /media/usb_disk(как пришлось бы делать в случае правил eddy).

eddy писал(а):
25.08.2011 12:39
А автоматически вызывать mount при подключении носителя неудобно еще тем, что очень сложно на многопользовательской машине выяснить, какой же пользователь воткнул флешку. А если монтировать от рута, то пользователь не сможет ее отмонтировать. А если монтировать с флагом users, то другие пользователи смогут отмонтировать, что не всегда желательно.

Хм. Резонно, да.
Хотя мне трудно представить, когда на домашнем ПК это может привести к каким-либо проблемам.
Спасибо сказали: