LINUX.ORG.RU

[gentoo] udev rule

 


0

1

Добавляю правило для udev, автоматически монтирующее плеер. При подключении девайса автомонтирование не происходит.

Вывод udevadm info -a -n для устройства: http://pastebin.com/fraFkKHG

Содержимое *rules файла:

#> cat /etc/udev/rules.d/50-sansa-player.rules
# sansa player
ACTION=="add", ATTRS{product}=="SanDisk Sansa Clip+", RUN="mkdir /mnt/player && mount /dev/disk/by-label/SANSA\\x20CLIPP /mnt/player"

Вывод udev-монитора при подключении девайса.


> udevadm monitor
KERNEL[1327842143.442927] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4 (usb)
KERNEL[1327842143.448815] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0 (usb)
KERNEL[1327842143.448906] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10 (scsi)
KERNEL[1327842143.448968] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/scsi_host/host10 (scsi_host)
UDEV  [1327842143.453327] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4 (usb)
UDEV  [1327842143.454370] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0 (usb)
UDEV  [1327842143.455443] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10 (scsi)
UDEV  [1327842143.456636] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/scsi_host/host10 (scsi_host)
KERNEL[1327842144.442966] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0 (scsi)
KERNEL[1327842144.442993] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0 (scsi)
KERNEL[1327842144.443224] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0/scsi_disk/10:0:0:0 (scsi_disk)
KERNEL[1327842144.443238] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0/scsi_device/10:0:0:0 (scsi_device)
KERNEL[1327842144.443253] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0/scsi_generic/sg2 (scsi_generic)
KERNEL[1327842144.443267] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0/bsg/10:0:0:0 (bsg)
KERNEL[1327842144.443287] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1 (scsi)
KERNEL[1327842144.443300] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/scsi_disk/10:0:0:1 (scsi_disk)
KERNEL[1327842144.443311] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/scsi_device/10:0:0:1 (scsi_device)
KERNEL[1327842144.443325] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/scsi_generic/sg3 (scsi_generic)
KERNEL[1327842144.443339] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/bsg/10:0:0:1 (bsg)
UDEV  [1327842144.444392] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0 (scsi)
KERNEL[1327842144.445419] add      /devices/virtual/bdi/8:48 (bdi)
KERNEL[1327842144.445447] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/block/sdd (block)
UDEV  [1327842144.446520] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0 (scsi)
UDEV  [1327842144.446945] add      /devices/virtual/bdi/8:48 (bdi)
KERNEL[1327842144.447999] change   /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/block/sdd (block)
UDEV  [1327842144.448720] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1 (scsi)
UDEV  [1327842144.452584] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0/bsg/10:0:0:0 (bsg)
UDEV  [1327842144.453208] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0/scsi_disk/10:0:0:0 (scsi_disk)
UDEV  [1327842144.454163] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/scsi_disk/10:0:0:1 (scsi_disk)
UDEV  [1327842144.454267] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0/scsi_device/10:0:0:0 (scsi_device)
UDEV  [1327842144.454733] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0/scsi_generic/sg2 (scsi_generic)
UDEV  [1327842144.455152] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/scsi_device/10:0:0:1 (scsi_device)
UDEV  [1327842144.456195] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/scsi_generic/sg3 (scsi_generic)
UDEV  [1327842144.456759] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/bsg/10:0:0:1 (bsg)
KERNEL[1327842144.459643] add      /devices/virtual/bdi/8:32 (bdi)
UDEV  [1327842144.460022] add      /devices/virtual/bdi/8:32 (bdi)
KERNEL[1327842144.487537] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0/block/sdc (block)
UDEV  [1327842144.489471] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/block/sdd (block)
UDEV  [1327842144.501874] change   /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:1/block/sdd (block)
UDEV  [1327842144.653831] add      /devices/pci0000:00/0000:00:02.1/usb1/1-4/1-4:1.0/host10/target10:0:0/10:0:0:0/block/sdc (block)

Может, это правило выполняется раньше, чем появляется /dev/disk/by-label/SANSA\\x20CLIPP? Так, наверное, и есть, потому что симлинки проставляет 60-persistent-storage.rules. Попробуй переименовать 50-sansa-player.rules в 90-sansa-player.rules.

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

Переименовал, сделал udevadm control reload_rules, девайс снова не примонтировался.

garmonbozia
() автор топика

Уважаемый, если вас тянет рисовать костыли то надо хотябы изучить немного то на чем пишете. Ваш плеер будет монтироваться только один раз, в лучшем случае:

r@rws /tmp % mkdir test && echo "ok"
ok
r@rws /tmp % mkdir test && echo "ok"
mkdir: невозможно создать каталог «test»: Файл существует
belous_k_a
()
Ответ на: комментарий от garmonbozia

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

В итоге был написан скрипт, в который передавалось имя устройства в качестве параметра, а скрипт уже производил монтирование. Вызов в действие RUN команды mount в udev почему=то не срабатывал.

Так что мой совет пишите скрипт вида:

mkdir -p /media/"$1"
mount -t <fs> "/dev/$1" /media/"$1"

И вызывайте его в действие RUN.

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

При такой конфигурации всё должно работать?

[code] #> cat /etc/udev/rules.d/90-sansa-player.rules # sansa player ACTION==«add», ATTRS{product}==«SanDisk Sansa Clip+», RUN=«/home/lk/bin/mount-player»

#> cat /home/lk/bin/mount-player #!/bin/bash

mkdir -p /mnt/player mount -o uid=$( id -u lk ) /dev/disk/by-label/SANSA\\x20CLIPP /mnt/player [/code]

При подключении девайса монтирование по-прежнему не происходит. Скрипт /home/lk/bin/mount-player работает.

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

А нет, действительно работает. С некоторой задержкой просто.

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

Вроде должен, но я бы указывал всё же через idVendor и idProduct, их значения можно узнать из вывод lsusb из пакета usbutils.

И дайте право на выполнение скрипту.

kostik87 ★★★★★
()

Кроме всего прочего, а какой ENV у правила RUN udev'а? Я к тому, что mount и mkdir вызываются по имени. А PATH, чтобы их искать есть?

Что касается начального примера, каким интерпретатором будет исполняться строка, указанная в RUN?

Delirium_veritas
()

хоть и стоит решено, но вся проблема в том, что необходимо указывать полный путь к исполняемым файлам mount & mkdir

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