Wiki

Clone wiki

comp-house.repo / DebugUDEVRules

Отладка правил в Udev.

Правила udev находятся в файлах *.rules в каталогах

/usr/lib/udev/rules.d - системные предустановленные /etc/udev/rules.d - пользовательские

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

udevadm control --reload
udevadm control --reload-rules

Мониторинг событий udev. Втыкая устройство можно убедиться, что udev его видит и отрабатывает события.

udevadm monitor --subsystem-match=usb  --kernel --udev

Тест правил для конкретного устройства usb

Сначала ищем устройство, например, телефон:

# lsusb
...
Bus 001 Device 014: ID 0bb4:2008 HTC (High Tech Computer Corp.) 
...

Затем ищем соответствующее ему устройство:

# for dev in `find /sys/devices/ -name "idVendor"`; do echo -n "${dev}  "; cat $dev; done 
...
/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.8/idVendor  0bb4
...

Затем запускаем симулятор обработки правил и разбираемся. Этот тест просто симуляция добавления устройства, поэтому может работать неверно, но в целом можно понять, что файл с правилами грузится, что после него не грузится еще что-то переопределяющее и правила в нем интерпретируются верно:

# udevadm test /devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.8/
calling: test
version 208
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

load module index
read rules file: /usr/lib/udev/rules.d/10-dm.rules
read rules file: /usr/lib/udev/rules.d/11-dm-lvm.rules
read rules file: /usr/lib/udev/rules.d/13-dm-disk.rules
read rules file: /etc/udev/rules.d/20-lightworks.rules
read rules file: /usr/lib/udev/rules.d/40-libgphoto2.rules
IMPORT found builtin 'usb_id --export %%p', replacing /usr/lib/udev/rules.d/40-libgphoto2.rules:11
read rules file: /usr/lib/udev/rules.d/40-usb_modeswitch.rules
read rules file: /usr/lib/udev/rules.d/42-usb-hid-pm.rules
read rules file: /etc/udev/rules.d/50-euvccam.rules
read rules file: /usr/lib/udev/rules.d/50-udev-default.rules
read rules file: /usr/lib/udev/rules.d/60-cdrom_id.rules
read rules file: /usr/lib/udev/rules.d/60-drm.rules
read rules file: /usr/lib/udev/rules.d/60-ffado.rules
read rules file: /usr/lib/udev/rules.d/60-fprint-autosuspend.rules
read rules file: /usr/lib/udev/rules.d/60-keyboard.rules
read rules file: /usr/lib/udev/rules.d/60-net.rules
read rules file: /usr/lib/udev/rules.d/60-pcmcia.rules
read rules file: /usr/lib/udev/rules.d/60-persistent-alsa.rules
read rules file: /usr/lib/udev/rules.d/60-persistent-input.rules
read rules file: /usr/lib/udev/rules.d/60-persistent-serial.rules
read rules file: /usr/lib/udev/rules.d/60-persistent-storage-tape.rules
read rules file: /usr/lib/udev/rules.d/60-persistent-storage.rules
read rules file: /usr/lib/udev/rules.d/60-persistent-v4l.rules
read rules file: /usr/lib/udev/rules.d/60-raw.rules
read rules file: /usr/lib/udev/rules.d/61-accelerometer.rules
read rules file: /usr/lib/udev/rules.d/62-multipath.rules
read rules file: /usr/lib/udev/rules.d/63-md-raid-arrays.rules
read rules file: /usr/lib/udev/rules.d/64-btrfs.rules
read rules file: /usr/lib/udev/rules.d/64-md-raid-assembly.rules
read rules file: /usr/lib/udev/rules.d/65-md-incremental.rules
read rules file: /usr/lib/udev/rules.d/69-cd-sensors.rules
read rules file: /usr/lib/udev/rules.d/69-dm-lvm-metad.rules
read rules file: /usr/lib/udev/rules.d/69-libmtp.rules
read rules file: /usr/lib/udev/rules.d/69-pilot-link.rules
read rules file: /usr/lib/udev/rules.d/69-unifying-receiver.rules
read rules file: /usr/lib/udev/rules.d/69-xorg-vmmouse.rules
read rules file: /usr/lib/udev/rules.d/70-avrdude_usbprog.rules
read rules file: /usr/lib/udev/rules.d/70-power-switch.rules
read rules file: /usr/lib/udev/rules.d/70-printers.rules
read rules file: /usr/lib/udev/rules.d/70-spice-vdagentd.rules
read rules file: /usr/lib/udev/rules.d/70-touchpad-quirks.rules
read rules file: /usr/lib/udev/rules.d/70-uaccess.rules
read rules file: /usr/lib/udev/rules.d/70-wacom.rules
read rules file: /usr/lib/udev/rules.d/71-biosdevname.rules
read rules file: /usr/lib/udev/rules.d/71-seat.rules
read rules file: /usr/lib/udev/rules.d/73-seat-late.rules
read rules file: /usr/lib/udev/rules.d/75-net-description.rules
read rules file: /usr/lib/udev/rules.d/75-probe_mtd.rules
read rules file: /usr/lib/udev/rules.d/75-tty-description.rules
read rules file: /usr/lib/udev/rules.d/77-mm-ericsson-mbm.rules
read rules file: /usr/lib/udev/rules.d/77-mm-huawei-net-port-types.rules
read rules file: /usr/lib/udev/rules.d/77-mm-longcheer-port-types.rules
read rules file: /usr/lib/udev/rules.d/77-mm-nokia-port-types.rules
read rules file: /usr/lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules
read rules file: /usr/lib/udev/rules.d/77-mm-platform-serial-whitelist.rules
read rules file: /usr/lib/udev/rules.d/77-mm-simtech-port-types.rules
read rules file: /usr/lib/udev/rules.d/77-mm-telit-port-types.rules
read rules file: /usr/lib/udev/rules.d/77-mm-usb-device-blacklist.rules
read rules file: /usr/lib/udev/rules.d/77-mm-usb-serial-adapters-greylist.rules
read rules file: /usr/lib/udev/rules.d/77-mm-x22x-port-types.rules
read rules file: /usr/lib/udev/rules.d/77-mm-zte-port-types.rules
read rules file: /usr/lib/udev/rules.d/77-nm-olpc-mesh.rules
read rules file: /usr/lib/udev/rules.d/78-sound-card.rules
read rules file: /usr/lib/udev/rules.d/80-drivers.rules
read rules file: /usr/lib/udev/rules.d/80-mm-candidate.rules
read rules file: /usr/lib/udev/rules.d/80-net-name-slot.rules
read rules file: /usr/lib/udev/rules.d/80-udisks.rules
read rules file: /usr/lib/udev/rules.d/80-udisks2.rules
read rules file: /usr/lib/udev/rules.d/85-regulatory.rules
read rules file: /usr/lib/udev/rules.d/85-usbmuxd.rules
read rules file: /usr/lib/udev/rules.d/90-alsa-restore.rules
read rules file: /usr/lib/udev/rules.d/90-alsa-tools-firmware.rules
read rules file: /usr/lib/udev/rules.d/90-pulseaudio.rules
read rules file: /etc/udev/rules.d/90-vboxdrv.rules
read rules file: /etc/udev/rules.d/90-wireshark-usbmon.rules
read rules file: /usr/lib/udev/rules.d/91-drm-modeset.rules
read rules file: /usr/lib/udev/rules.d/95-cd-devices.rules
read rules file: /usr/lib/udev/rules.d/95-dm-notify.rules
read rules file: /usr/lib/udev/rules.d/95-udev-late.rules
read rules file: /usr/lib/udev/rules.d/95-upower-battery-recall-dell.rules
read rules file: /usr/lib/udev/rules.d/95-upower-battery-recall-fujitsu.rules
read rules file: /usr/lib/udev/rules.d/95-upower-battery-recall-gateway.rules
read rules file: /usr/lib/udev/rules.d/95-upower-battery-recall-ibm.rules
read rules file: /usr/lib/udev/rules.d/95-upower-battery-recall-lenovo.rules
read rules file: /usr/lib/udev/rules.d/95-upower-battery-recall-toshiba.rules
read rules file: /usr/lib/udev/rules.d/95-upower-csr.rules
read rules file: /usr/lib/udev/rules.d/95-upower-hid.rules
read rules file: /usr/lib/udev/rules.d/95-upower-wup.rules
read rules file: /etc/udev/rules.d/98-kexec.rules
read rules file: /etc/udev/rules.d/99-jayiu.rules
read rules file: /etc/udev/rules.d/99-libftdi.rules
read rules file: /usr/lib/udev/rules.d/99-qemu-guest-agent.rules
read rules file: /usr/lib/udev/rules.d/99-systemd.rules
rules contain 393216 bytes tokens (32768 * 12 bytes), 32761 bytes strings
29643 strings (247615 bytes), 26556 de-duplicated (217942 bytes), 3088 trie nodes used
IMPORT builtin 'usb_id' /usr/lib/udev/rules.d/40-libgphoto2.rules:11
IMPORT builtin skip 'usb_id' /usr/lib/udev/rules.d/50-udev-default.rules:9
IMPORT builtin 'hwdb' /usr/lib/udev/rules.d/50-udev-default.rules:9
MODE 0664 /usr/lib/udev/rules.d/50-udev-default.rules:37
PROGRAM 'mtp-probe /sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.8 1 14' /usr/lib/udev/rules.d/69-libmtp.rules:1205
starting 'mtp-probe /sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.8 1 14'
'mtp-probe /sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.8 1 14'(out) '0'
'mtp-probe /sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.8 1 14' [5844] exit with return code 0
RUN 'VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers' /etc/udev/rules.d/90-vboxdrv.rules:2
GROUP 0 /etc/udev/rules.d/99-jayiu.rules:1
MODE 0666 /etc/udev/rules.d/99-jayiu.rules:1
handling device node '/dev/bus/usb/001/014', devnum=c189:13, mode=0666, uid=0, gid=0
preserve permissions /dev/bus/usb/001/014, 020666, uid=0, gid=0
preserve already existing symlink '/dev/char/189:13' to '../bus/usb/001/014'
ACTION=add
BUSNUM=001
DEVNAME=/dev/bus/usb/001/014
DEVNUM=014
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.8
DEVTYPE=usb_device
DRIVER=usb
ID_BUS=usb
ID_MODEL=MT65xx_Android_Phone
ID_MODEL_ENC=MT65xx\x20Android\x20Phone
ID_MODEL_ID=2008
ID_REVISION=0216
ID_SERIAL=MediaTek_MT65xx_Android_Phone_DIPJKRMVNFAA4LUS
ID_SERIAL_SHORT=DIPJKRMVNFAA4LUS
ID_USB_INTERFACES=:ffff00:
ID_VENDOR=MediaTek
ID_VENDOR_ENC=MediaTek
ID_VENDOR_FROM_DATABASE=HTC (High Tech Computer Corp.)
ID_VENDOR_ID=0bb4
MAJOR=189
MINOR=13
PRODUCT=bb4/2008/216
SUBSYSTEM=usb
TYPE=0/0/0
USEC_INITIALIZED=13594497588
run: 'VBoxCreateUSBNode.sh 189 13 00 vboxusers'
unload module index

Updated