回答:
$ 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=VALUEENV{KEY}=="VALUE"
デバイスに/devエントリがない場合、/sys代わりにパスを使用してデバイスを参照できます。たとえば、
udevadm info -a -p /sys/block/sdb
(この場合、有用な例ではありません/dev。これは、カテゴリが一般的ではなく、まだエントリがないデバイスに役立ちます)。
udevルールを変更すると、自動的に読み取られます。ただし、それらは、その後システムにプラグインされるデバイスにのみ適用されます。既に接続されているデバイスに新しいルールを適用するには、udevadm trigger(アプリケーションを特定のデバイスに制限するオプションを使用して)を使用します。
udevadm info -a -n /dev/sdb?