udevで利用できない属性

udevで利用できない属性

ATTRS{*}USBデバイスのudevルールを作成しようとしていますが、ルールの属性を一致させるのに問題があります。を使用していくつかのデバッグを実行した後、udevadm info私のデバイスのどれも属性を表示しないことがわかりました。

udevadm info -aLinuxサーバーでルートボリュームを実行すると、次の結果が表示されます。

  looking at device '/devices/vbd-768/block/xvda':
    KERNEL=="xvda"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{ro}=="0"
    ATTR{size}=="83886080"
    ATTR{stat}=="  717683    43803 15924796   381200  8002096  5757360 169243664  6994333        0   635530  7372343"
    ATTR{range}=="16"
    ATTR{discard_alignment}=="0"
    ATTR{ext_range}=="16"
    ATTR{alignment_offset}=="0"
    ATTR{inflight}=="       0        0"
    ATTR{removable}=="0"
    ATTR{capability}=="10"

ただし、ノートブックで実行すると、次の結果が表示されます。

  looking at device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda':
    KERNEL=="sda"
    SUBSYSTEM=="block"
    DRIVER==""

これはすべてのデバイスで発生する可能性があります。ATTR{*}システム内のすべてのデバイスの変数を取得できないようです。この問題の原因は何ですか?

注:私はこの記事現在、最新のカーネルであるArch Linuxを実行しています。

答え1

あなたが見ている正確な項目を知りたいですudevadm

/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sdaラップトップからのアクセスは、/devices/vbd-768/block/xvdaサーバーからのアクセスとは大きく異なります。

ディスクに興味があれば、バスIDで探すことをお勧めします。


を使ってディスクのバスIDを見つけることができますlsblk -S。 7行が必要です。最初の2行は興味のある行です。NAMEHCTLNAMEはドライブ名(例sda:)を表し、HCTLバスID(例2:0:0:0:)を表します。

これで、照会時にこのバスIDが使用されます。udevadm

udevadm info --path=/sys/bus/scsi/devices/[bus ID] -a


これにより、出力グループの1つがあなたに似たものに/devices/vbd-768/block/xvdaも適用されますATTRS。ここで指定するパスは、ドライブ情報のサブセットにのみ適用されるようです。

関連情報