web-dev-qa-db-ja.com

udevルールはデバイスを除外します

udevルールを使用して単一のデバイスをルールから除外することは可能ですか?

たとえば、5台のハードディスクが接続されていて、1台を除くすべてのハードディスクにカスタム名を作成したい場合はどうでしょうか。出来ますか?

また、カーネルは、sdzが2文字で名前付けされた後にディスクに名前を付けます。 sdaa、sdab、sdqrなど。sda1、sdb2などにパーティションを含めたくないので問題があります。すべての文字をワイルドカード化できますが、すべての数字をワイルドカード化できませんか?

例:

KERNEL=="sd??",  NAME="test/Disk%n",  ATTRS{ID_SERIAL_SHORT}!="xxxx"
4
John Smith

たとえば、5台のハードディスクが接続されていて、1台を除くすべてのハードディスクにカスタム名を作成したい場合はどうでしょうか。出来ますか?

  • GOTOを使用して、ルールをスキップできます。

    ENV{ID_SERIAL_SHORT}=="xxxx|yyyy|zzzz", GOTO="custom_names_end"
    ENV{ID_MODEL}=="blahblah", GOTO="custom_names_end"
    
    KERNEL=="sd*", ENV{DEVTYPE}=="disk", SYMLINK+="test/Disk%n"
    
    LABEL="custom_names_end"
    
  • ID_SERIAL_SHORTは属性ではないことに注意してください。これはudevの「環境」変数であるため、ENV{}またはENVS{}を使用して一致させる必要があります。属性はsysfsから直接読み取られます。

  • また、最近のudevバージョンではデバイスの名前変更が禁止されていることにも注意してください。追加できるのはカスタムシンボリックリンクのみです。

また、カーネルは、sdzが2文字で名前付けされた後にディスクに名前を付けます。 sdaa、sdab、sdqrなど。sda1、sdb2などにパーティションを含めたくないので問題があります。すべての文字をワイルドカード化できますが、すべての数字をワイルドカード化できませんか?

  • 間違ったアプローチを使用しています。パーティションではなくディスクを一致させたい場合は、正確に実行してください

    カーネル== "sd *"、 ENV {DEVTYPE} == "ディスク"、…

    DEVTYPEの値は、udevadm info /dev/sdaudevadm info /dev/sda1で確認できます。

3
user1686