Я новичок в udev. Мне нужно выяснить, какие правила выполняются для USB-устройства, подключенного к Linux-машине. Есть ли каротаж, предоставляемый udev?Какие правила udev выполняются для USB-устройства?
ответ
Это именно то, что
udevadm trigger --verbose ...
скажу. Это вызовет повторную оценку правил udev, и вы можете использовать другие флаги, такие как --subsystem-match
и --attr-match
, чтобы сузить устройство USB.
И найти эти атрибуты вашего использования устройства USB
lsusb -v
Попробуйте что-то вроде: udevadm test /dev/bus/usb/001/045
Я пробовал это, он отображается как «файл правил чтения» и отображает все файлы правил. Мне нужно точно, какой файл правила выполняется для этого устройства. Спасибо за ваш вклад :) – kayle
Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – Mathias
Все файлы, отображаемые 'udevadm test' ..., считываются для каждого устройства. Однако для каждого устройства используются только совпадающие строки в каждом файле. –
ответ Carlqvist является правильным, но он оставляет большую часть деталей. От реального случая жизни ...
Проблема: Моя клавиатура USB работает в моей настройке gNewsense, но мой SourceMage. Поэтому я пытаюсь выяснить, какие правила udev в gNewsense применяются к этой клавиатуре.
1) Получить основную информацию
# lsusb
[...omitted...]
Bus 007 Device 006: ID 413c:2003 Dell Computer Corp. Keyboard
[...omitted...]
Так что теперь я знаю ...
Узел USB устройство (не то же самое, как устройство клавиатуры) является/DEV/автобус/USB/007/006 idVendor = 413c и idProduct = 2003 И если на клавиатуре не было никаких логотипов или марок, у меня был бы удобный текст для поиска.
В настоящее время клавиатура и мышь находятся под/dev/input/*, это просто то, что вам нужно знать или выглядеть с веб-страниц. Мне повезло, и есть/DEV/вход/по-ид/USB-Dell_Dell_USB_Keyboard-событийно-KBD
Что в моем случае это ссылка SYM в/Dev/вход/event0
2) Это позволит получить «другой» путь к устройству (ядро или Udev внутренний) для клавиатуры
# udevadm info --query=path --name=/dev/input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd
/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/input/input9/event0
3) Теперь, что правила произошло, чтобы сделать эту работу клавиатуры?
Обратите внимание, что grep'ing для idVendor и idProduct может быть достаточным, но обычно используются дикие карты и стандартные встроенные случаи, которые выполняют большую часть работы.
Команда udevadm test сообщит вам все правила в том порядке, в котором они обрабатываются во время этого события (событие подключения USB-клавиатуры к разъему USB).
Линии, начинающиеся с parse_file показать вам файлы сценариев правил, которые фактически были подключены к (e) udev в том порядке, в котором они были прочитаны (префикс нижнего номера должен быть первым). Обычно это файлы трекинга, поэтому их игнорировать пока нет.
Линии, начинающиеся с udev_node_mknod представляют интерес, потому что именно тогда udev делает узел устройства.
Линия пуски с udev_rules_apply_to_event, вероятно, что вы заинтересованы. Это даст файл правило сценария и номер строки правила запускающий некоторые изменения в Udev.
Итак, вот мой вывод. Там будет много шума (который я пропущенный), но вы по-прежнему можно проследить до конца и увидеть создание Девых узлов
# udevadm test /devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/input/input9/event0
[...]
parse_file: reading '/lib/udev/rules.d/69-cd-sensors.rules' as rules file
add_rule: IMPORT found builtin 'usb_id', replacing /lib/udev/rules.d/69-cd-sensors.rules:78
[...]
udev_rules_apply_to_event: IMPORT builtin 'input_id' /lib/udev/rules.d/50-udev-default.rules:4
[...]
udev_builtin_add_property: ID_INPUT_KEY=1
udev_builtin_add_property: ID_INPUT_KEYBOARD=1
[...]
udev_rules_apply_to_event: IMPORT builtin 'usb_id' /lib/udev/rules.d/60-persistent-input.rules:7
builtin_usb_id: /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0: if_class 3 protocol 0
udev_builtin_add_property: ID_VENDOR=Dell
udev_builtin_add_property: ID_VENDOR_ENC=Dell
udev_builtin_add_property: ID_VENDOR_ID=413c
udev_builtin_add_property: ID_MODEL=Dell_USB_Keyboard
udev_builtin_add_property: ID_MODEL_ENC=Dell\x20USB\x20Keyboard
udev_builtin_add_property: ID_MODEL_ID=2003
[...]
udev_rules_apply_to_event: LINK 'input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd' /lib/udev/rules.d/60-persistent-input.rules:24
udev_rules_apply_to_event: IMPORT builtin 'path_id' /lib/udev/rules.d/60-persistent-input.rules:31
udev_builtin_add_property: ID_PATH=pci-0000:00:1d.1-usb-0:1:1.0
udev_builtin_add_property: ID_PATH_TAG=pci-0000_00_1d_1-usb-0_1_1_0
udev_rules_apply_to_event: LINK 'input/by-path/pci-0000:00:1d.1-usb-0:1:1.0-event-kbd' /lib/udev/rules.d/60-persistent-input.rules:33
udev_rules_apply_to_event: IMPORT builtin skip 'usb_id' /lib/udev/rules.d/95-keymap.rules:13
udev_event_execute_rules: no node name set, will use kernel supplied name 'input/event0'
udev_node_add: creating device node '/dev/input/event0', devnum=13:64, mode=01600, uid=0, gid=0
udev_node_mknod: preserve file '/dev/input/event0', because it has correct dev_t
udev_node_mknod: preserve permissions /dev/input/event0, 021600, uid=0, gid=0
node_symlink: preserve already existing symlink '/dev/char/13:64' to '../input/event0'
link_find_prioritized: found 'c13:64' claiming '/run/udev/links/input\x2fby-id\x2fusb-Dell_Dell_USB_Keyboard-event-kbd'
link_update: creating link '/dev/input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd' to '/dev/input/event0'
node_symlink: preserve already existing symlink '/dev/input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd' to '../event0'
link_find_prioritized: found 'c13:64' claiming '/run/udev/links/input\x2fby-path\x2fpci-0000:00:1d.1-usb-0:1:1.0-event-kbd'
link_update: creating link '/dev/input/by-path/pci-0000:00:1d.1-usb-0:1:1.0-event-kbd' to '/dev/input/event0'
node_symlink: preserve already existing symlink '/dev/input/by-path/pci-0000:00:1d.1-usb-0:1:1.0-event-kbd' to '../event0'
udev_device_update_db: created db file '/run/udev/data/c13:64' for '/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/input/input9/event0'
.INPUT_CLASS=kbd
ACTION=add
[...]
[end]
Оно не сказать, какие правила выполняются для этого USB-устройства? – kayle