Відповіді:
$ udevadm info -q all -a /dev/sdb
ПРИМІТКА: вищезазначені запити в базі даних UDEV щодо інформації про пристрої info
, ми запитуємо всю інформацію -q all
, і ми переглядаємо всі атрибути, /sys
що відносяться до цієї мітки пристрою.
витяг
--attribute-walk|-a
Print all sysfs properties of the specified device that can be used
in udev rules to match the specified device. It prints all devices
along the chain, up to the root of sysfs that can be used in udev
rules.
Ось мій /dev/sda
пристрій.
$ udevadm info -q all -a /dev/sda | grep parent
walks up the chain of parent devices. It prints for every device
and the attributes from one single parent device.
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0':
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0':
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0':
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1':
looking at parent device '/devices/pci0000:00/0000:00:1f.2':
looking at parent device '/devices/pci0000:00':
У відповіді @ sepero відображається інформація, що стосується пристрою UDEV на листковому вузлі.
$ udevadm info -q all -n /dev/sda > udevadm_info_1.txt
У моїй відповіді показані атрибути, коли він охоплює всю /sys
ієрархію ланцюгів пристроїв.
$ udevadm info -q all -a /dev/sda > udevadm_info_2.txt
Ви можете бачити різницю між цими двома.
$ diff -y udevadm_info_1.txt udevadm_info_2.txt \
> udevadm_info_diff.txt
ПРИМІТКА. Я працюю на Fedora 19, використовуючи версію 204 udevadm
:
$ udevadm --version
204
udevadm info -q all
, а не з udevadm info -a
. Я думаю -a
, що це ярлик для -q all --attribute-walk
. Або це відрізняється у вашій версії? Я не пам’ятаю цього зміни, але тоді я не використовував Fedora роками (але навіщо дистрибутив це виправляти?).
udevadm info
надає такий вид інформації.
Якщо ви конкретно хочете підсистему:
udevadm info -n /dev/sdb -q property | sed -n 's/SUBSYSTEM=//p'
Коли ви пишете правила udev, найкориснішою є команда
udevadm info -a -n /dev/sdb
Це виводить правила, які можна використовувати для узгодження пристрою з правилами udev. Перший блок стосується самого пристрою, а наступні блоки - про його предків у дереві пристроїв. Єдине застереження полягає в тому, що ви не можете змішувати клавіші, які відповідають різним предкам. Наприклад, враховуючи цей уривок
KERNEL=="sdb"
SUBSYSTEM=="block"
…
KERNELS=="5:0:0:0"
SUBSYSTEMS=="scsi"
DRIVERS=="sd"
ATTRS{model}=="Yoyodyne Diskinator"
…
KERNELS=="0000:00:1f.2"
SUBSYSTEMS=="pci"
DRIVERS=="ahci"
то ви можете зрівняти цей пристрій з SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator"
або з, SUBSYSTEM=="block", SUBSYSTEMS=="pci", DRIVERS="ahci"
але не з цим SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator", DRIVERS="ahci"
.
Інший спосіб отримання інформації для використання в правилах - це с
udevadm info -q property -n /dev/sdb --export
Це друкує значення властивостей пристрою форми, яку ви можете використовувати як у правилах udev.KEY=VALUE
ENV{KEY}=="VALUE"
Якщо на вашому пристрої немає /dev
запису, ви можете посилатися на нього за допомогою шляху /sys
, напр
udevadm info -a -p /sys/block/sdb
(не корисний приклад у цьому випадку - це корисно для пристроїв, категорія яких ще не є загальною, а в них ще немає запису /dev
).
Коли ви змінюєте правила udev, вони читаються автоматично; однак вони застосовуються лише до пристроїв, які згодом підключені до системи. Щоб застосувати нові правила до вже підключеного пристрою, використовуйте udevadm trigger
(з опціями для обмеження програми на певних пристроях).
udevadm info -a -n /dev/sdb
?