Risposte:
$ udevadm info -q all -a /dev/sdb
NOTA: quanto sopra richiede al database UDEV le informazioni sul dispositivo info
, stiamo eseguendo una query per tutte le informazioni -q all
e stiamo percorrendo tutti gli attributi /sys
relativi a questa etichetta del dispositivo.
estratto
--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.
Ecco il mio /dev/sda
dispositivo.
$ 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':
La risposta di @ sepero mostra le informazioni relative al dispositivo UDEV nel nodo foglia.
$ udevadm info -q all -n /dev/sda > udevadm_info_1.txt
La mia risposta mostra gli attributi mentre percorre l'intera /sys
catena gerarchica dei dispositivi.
$ udevadm info -q all -a /dev/sda > udevadm_info_2.txt
Puoi vedere la differenza tra questi due.
$ diff -y udevadm_info_1.txt udevadm_info_2.txt \
> udevadm_info_diff.txt
NOTA: sto usando Fedora 19, usando la versione 204 di udevadm
:
$ udevadm --version
204
udevadm info -q all
, non di udevadm info -a
. Penso che -a
sia una scorciatoia per -q all --attribute-walk
. O è diverso nella tua versione? Non ricordo questo cambiamento, ma non uso Fedora da anni (ma perché una distribuzione dovrebbe correggere questo?).
udevadm info
fornisce questo tipo di informazioni.
Se si desidera specificamente il sottosistema:
udevadm info -n /dev/sdb -q property | sed -n 's/SUBSYSTEM=//p'
Quando scrivi le regole di udev, il comando più utile è
udevadm info -a -n /dev/sdb
Ciò stampa le regole che è possibile utilizzare per abbinare il dispositivo nelle regole di udev. Il primo blocco riguarda il dispositivo stesso, mentre i blocchi successivi riguardano i suoi antenati nell'albero del dispositivo. L'unica avvertenza è che non è possibile mescolare chiavi che corrispondono a antenati diversi. Ad esempio, dato questo estratto
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"
allora puoi abbinare questo dispositivo con SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator"
o con SUBSYSTEM=="block", SUBSYSTEMS=="pci", DRIVERS="ahci"
ma non con SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator", DRIVERS="ahci"
.
Un altro modo per ottenere informazioni da utilizzare nelle regole è con
udevadm info -q property -n /dev/sdb --export
Stampa i valori delle proprietà del dispositivo del modulo che è possibile utilizzare come nelle regole udev.KEY=VALUE
ENV{KEY}=="VALUE"
Se il tuo dispositivo non ha una /dev
voce, puoi fare riferimento ad essa con un percorso in /sys
invece, ad es
udevadm info -a -p /sys/block/sdb
(non un esempio utile in questo caso - questo è utile per i dispositivi la cui categoria non è comune e non hanno ancora una voce /dev
).
Quando cambiate le regole udev, vengono lette automaticamente; tuttavia, vengono applicati solo ai dispositivi che vengono successivamente collegati al sistema. Per applicare le nuove regole a un dispositivo già connesso, utilizzare udevadm trigger
(con le opzioni per limitare l'applicazione a determinati dispositivi).
udevadm info -a -n /dev/sdb
?