Udev reeglid

Allikas: Digilabor

udev reeglid lubavad sul linuxis ära kasutada seadmete ühendamise ja lahtiühendamise sündmuseid ja seda operatsioonisüsteemi tasemel. Näiteks on võimalik käivitada oma script, mis keskkonnamuutujate ('enviroment variables') vahendusel saab lugeda täpsemaid parameetreid toimunud sündumsest, nagu kas tegemist oli ühendamise või lahti ühendamisega ja mis seadmega oli täpselt tegu.

Teine väga kasulik võimalus on luua täiendavaid symlinke sinu seadmele. Kui sinu lahti ühendatud seadmest on zombi veel alles, võib OS anda samale seadmele uue nime... näiteks veebikaamera kiiresti taasühendamisel tekkib /dev/video(n+1). Et sinu programm saaks alati arvestada seadme path'iga, võib sundida nimeks määrama alati /dev/minuKaamera vms. Veel kasutatakse udev reegleid näiteks siis, kui soovid kindla programmi käivitumist enda USB mälupulga ühendamisel - või näiteks roboti elektroonika ühendamisel?

Sisukord

reeglite failid

... asuvad /etc/udev/rules.d/. Käivitatakse leksograafilises järjekorras.

Näide 1

Testi eesmärk oli näha eventide puhul tekkivad keskkonnamuutujaid.

Udev rule

SUBSYSTEMS=="input", ATTRS{name}=="  USB Keyboard", RUN+="/home/johu/test.sh"

Script

johu@johuti:~$ cat test.sh 
#!/bin/bash
echo -e "$(date) - $KERNEL\n$(env)" > /home/johu/test.txt

Output

johu@johuti:~$ cat test.txt 
Fri Dec  3 12:17:24 EET 2010 - 
ID_USB_DRIVER=usbhid
ID_MODEL=USB_Keyboard
ID_MODEL_ENC=USB Keyboard
ID_REVISION=0280
ID_BUS=usb
SUBSYSTEM=input
ID_SERIAL=_USB_Keyboard
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/input/input66/event8
ID_MODEL_ID=1503
ID_VENDOR_ENC= 
MINOR=72
ACTION=remove
PWD=/
UDEV_LOG=3
ID_CLASS=kbd
MAJOR=13
DEVLINKS=/dev/char/13:72 /dev/input/by-id/usb-_USB_Keyboard-event-kbd /dev/input/by-path/pci-0000:00:1d.2-usb-0:1:1.0-event-kbd
ID_VENDOR_ID=1241
DEVNAME=/dev/input/event8
SHLVL=1
ID_TYPE=hid
DMI_VENDOR=COMPAL
ID_USB_INTERFACE_NUM=00
ID_PATH=pci-0000:00:1d.2-usb-0:1:1.0
ID_USB_INTERFACES=:030101:030000:
SEQNUM=2420
_=/usr/bin/env

Näide 2

Reeglite eesmärk oli fikseerida kaamera ja atmega device'ide nimed. Lisaks keelab see serial modemit imiteerivale atmegale modemitele mõeldud jama saatmise.

SUBSYSTEM=="tty", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", SYMLINK+="mallAju", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="video4linux", ATTR{name}=="UVC Camera (046d:0821)", SYMLINK+="mallCam"

Kaslikke võtteid udev reeglite koostamisel

  • lsus - näitab usb device'ide nimekirja
  • udevadm info -a -n /dev/input/mouse0 näitab kõikvõimalikke vajalikke parameetreid seadme kohta reegli koostamiseks
  • udevadm test saad testida reegli toimimist. vaata manuaali

Vaata ka

Personaalsed tööriistad
Navigeerimine
Käsitöö