Respostas:
$ udevadm info -q all -a /dev/sdb
OBSERVAÇÃO: as opções acima consultam o banco de dados UDEV em busca de informações sobre o dispositivo, info
estamos consultando todas as informações -q all
e analisamos todos os atributos /sys
relacionados a esse rótulo do dispositivo.
excerto
--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.
Aqui está o meu /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':
A resposta de @ sepero está mostrando informações referentes ao dispositivo UDEV no nó da folha.
$ udevadm info -q all -n /dev/sda > udevadm_info_1.txt
Minha resposta mostra os atributos à medida que percorre toda a /sys
hierarquia da cadeia de dispositivos.
$ udevadm info -q all -a /dev/sda > udevadm_info_2.txt
Você pode ver a diferença entre esses dois.
$ diff -y udevadm_info_1.txt udevadm_info_2.txt \
> udevadm_info_diff.txt
NOTA: Estou executando o Fedora 19, usando a versão 204 do udevadm
:
$ udevadm --version
204
udevadm info -q all
, não de udevadm info -a
. Eu acho que -a
é um atalho para -q all --attribute-walk
. Ou isso é diferente na sua versão? Não me lembro dessa mudança, mas depois não uso o Fedora há anos (mas por que uma distribuição corrige isso?).
udevadm info
fornece esse tipo de informação.
Se você deseja especificamente o subsistema:
udevadm info -n /dev/sdb -q property | sed -n 's/SUBSYSTEM=//p'
Ao escrever regras do udev, o comando mais útil é
udevadm info -a -n /dev/sdb
Isso imprime as regras que você pode usar para corresponder ao dispositivo nas regras do udev. O primeiro bloco é sobre o próprio dispositivo e os blocos subseqüentes são sobre seus ancestrais na árvore de dispositivos. A única ressalva é que você não pode misturar chaves que correspondem a diferentes ancestrais. Por exemplo, dado esse trecho
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"
você pode combinar este dispositivo com SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator"
ou com SUBSYSTEM=="block", SUBSYSTEMS=="pci", DRIVERS="ahci"
mas não com SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator", DRIVERS="ahci"
.
Outra maneira de obter informações para uso em regras é com
udevadm info -q property -n /dev/sdb --export
Isso imprime os valores de propriedade do dispositivo do formulário que você pode usar como nas regras do udev.KEY=VALUE
ENV{KEY}=="VALUE"
Se o seu dispositivo não tiver uma /dev
entrada, você poderá consultá-lo com um caminho abaixo /sys
, por exemplo,
udevadm info -a -p /sys/block/sdb
(neste caso, não é um exemplo útil - é útil para dispositivos cuja categoria não é comum e ainda não tem uma entrada /dev
).
Quando você altera as regras do udev, elas são lidas automaticamente; no entanto, eles são aplicados apenas a dispositivos que são subsequentemente conectados ao sistema. Para aplicar as novas regras a um dispositivo já conectado, use udevadm trigger
(com opções para restringir o aplicativo a determinados dispositivos).
udevadm info -a -n /dev/sdb
?