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

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

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

たとえば、5 台のハードディスクが接続されていて、1 台を除くすべてのハードディスクにカスタム名を作成したいのですが、それは可能ですか?

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

例:

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

答え1

たとえば、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

関連情報