我是udev的新手。 我需要看看插入到Linux機器的USB設備執行哪些規則。 有沒有任何由udev提供的日誌記錄?哪些udev規則可以爲USB設備執行?
回答
這正是
udevadm trigger --verbose ...
會告訴你。它會觸發對udev規則的重新評估,您可以使用其他標誌(如--subsystem-match
和--attr-match
)來縮小USB設備的範圍。
,並找到你的USB設備使用這些屬性
lsusb -v
Carlqvist的答案是正確的,但它忽略了大部分的細節。 從一個真實的案例...
問題: 我的USB鍵盤正在我的gNewsense設置,但我的SourceMage。所以下面是我試圖找出gNewsense中的udev規則適用於此鍵盤。
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 /輸入/按-ID/USB-Dell_Dell_USB_Keyboard事件,大骨節病
這在我的情況下是一個符號鏈接到/ dev /輸入/ EVENT0
2)這將讓對於鍵盤
# 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)現在,規則發生,使這種鍵盤的工作「其他」設備路徑(內核或udev的內部)?
請注意,對於idVendor和idProduct的grep'ing可能已足夠,但通常有通配符和默認內置案例來完成大部分工作。
udevadm test命令會告訴您所有規則,按照在此事件期間處理的順序(將USB鍵盤插入USB連接器時)處理。
以開頭的行parse_file向您顯示實際掛鉤到(e)udev中的規則腳本文件(讀取順序較低的前綴應該是第一個)。這通常是一個垃圾噸文件,所以現在忽略它們。
以開頭的行udev_node_mknod值得關注,因爲這是udev實際製造設備節點時的情況。
線條起始udev_rules_apply_to_event可能是您感興趣的內容。它給出規則腳本文件和規則的行號在udev中觸發某些更改。
所以這裏是我的輸出。將有大量的噪聲(我省略了),但你仍然可以通過跟蹤,看哪個規則這個USB設備執行的開發節點
# 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]
- 1. CentOS的7.2 udev規則不能掛載USB存儲設備
- 2. USB設備udev和d-BUS
- 3. udev和usb framebuffer設備
- 4. 如何使用udev規則識別斷開連接的USB設備?
- 5. HID設備權限。爲什麼我的udev規則被忽略?
- 6. Ubuntu Linux Udev規則:是否可以通過udev規則運行用C編寫的程序?
- 7. 執行從最新的USB udev插入設備讀取的腳本
- 8. 一種在Android設備上編輯udev規則的方法?
- 9. udev規則一旦設備在Linux中加入不起作用
- 10. 使用udev規則操作內核設備名稱
- 11. 從udev規則和shell腳本自動掛載usb驅動器
- 12. 插入USB打印機時,udev規則不起作用
- 13. synclient無法從udev規則中運行
- 14. udev規則中的腳本不運行
- 15. udev規則不起作用
- 16. Udev規則未被應用
- 17. 默認的Udev規則
- 18. 爲USB設備
- 19. 哪種設備可以運行INFO_SUPPORTED_HARDWARE_LEVEL_FULL?
- 20. 是否可以模擬FTDI USB設備?
- 21. 我可以找到某個類違反了哪些CQL規則
- 22. USB設備可以告訴主機啓動時使用哪個備用接口?
- 23. USB聲卡設備類規範文檔
- 24. 哪些設備不支持USB主機模式?
- 25. Udev規則和腳本問題
- 26. udev規則與bInterfaceNumber不起作用
- 27. Udev規則不再起作用
- 28. 腳本時,使用udev規則
- 29. Udev規則不適用於Fedora 24
- 30. 觸發特定鍵盤的udev規則
它沒有告訴的創造? – kayle