Odpowiedzi:
$ udevadm info -q all -a /dev/sdb
UWAGA: powyższe zapytania do bazy danych UDEV w celu uzyskania informacji o urządzeniu, info
sprawdzamy wszystkie informacje -q all
i chodzimy po wszystkich atrybutach /sys
związanych z tą etykietą urządzenia.
fragment
--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.
Oto moje /dev/sda
urządzenie.
$ 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':
Odpowiedź @ sepero pokazuje informacje dotyczące tylko urządzenia UDEV w węźle liścia.
$ udevadm info -q all -n /dev/sda > udevadm_info_1.txt
Moja odpowiedź pokazuje atrybuty, gdy chodzi po całej /sys
hierarchii łańcuchowej urządzeń.
$ udevadm info -q all -a /dev/sda > udevadm_info_2.txt
Możesz zobaczyć różnicę między tymi dwoma.
$ diff -y udevadm_info_1.txt udevadm_info_2.txt \
> udevadm_info_diff.txt
UWAGA: Korzystam z Fedory 19, używając wersji 204 udevadm
:
$ udevadm --version
204
udevadm info -q all
, a nie z udevadm info -a
. Myślę, że -a
to skrót -q all --attribute-walk
. Czy jest inaczej w twojej wersji? Nie pamiętam tej zmiany, ale potem nie korzystałem z Fedory od lat (ale dlaczego miałaby to łatać dystrybucja?).
udevadm info
zapewnia tego rodzaju informacje.
Jeśli konkretnie chcesz podsystem:
udevadm info -n /dev/sdb -q property | sed -n 's/SUBSYSTEM=//p'
Podczas pisania reguł udev najbardziej przydatne jest polecenie
udevadm info -a -n /dev/sdb
Spowoduje to wydrukowanie reguł, których można użyć do dopasowania urządzenia w regułach udev. Pierwszy blok dotyczy samego urządzenia, a kolejne bloki dotyczą jego przodków w drzewie urządzeń. Jedynym zastrzeżeniem jest to, że nie można mieszać kluczy odpowiadających różnym przodkom. Na przykład, biorąc pod uwagę ten fragment
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"
możesz dopasować to urządzenie do SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator"
lub z, SUBSYSTEM=="block", SUBSYSTEMS=="pci", DRIVERS="ahci"
ale nie z SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator", DRIVERS="ahci"
.
Innym sposobem na uzyskanie informacji do wykorzystania w regułach jest
udevadm info -q property -n /dev/sdb --export
Wyświetla wartości właściwości urządzenia w postaci, której można używać jak w regułach udev.KEY=VALUE
ENV{KEY}=="VALUE"
Jeśli twoje urządzenie nie ma /dev
wpisu, możesz odwołać się do niego pod ścieżką /sys
, np
udevadm info -a -p /sys/block/sdb
(nie jest to przydatny przykład w tym przypadku - jest to przydatne na urządzeniach, których kategoria nie jest powszechna i nie ma jeszcze żadnego wpisu poniżej /dev
).
Po zmianie reguł udev są one odczytywane automatycznie; są one jednak stosowane tylko do urządzeń, które są następnie podłączane do systemu. Aby zastosować nowe reguły do już podłączonego urządzenia, użyj udevadm trigger
(z opcjami ograniczenia aplikacji do niektórych urządzeń).
udevadm info -a -n /dev/sdb
?