回答:
$ 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
これら2つの違いを確認できます。
$ 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
?