udevルールを使用して単一のデバイスをルールから除外することは可能ですか?
たとえば、5台のハードディスクが接続されていて、1台を除くすべてのハードディスクにカスタム名を作成したい場合はどうでしょうか。出来ますか?
また、カーネルは、sdzが2文字で名前付けされた後にディスクに名前を付けます。 sdaa、sdab、sdqrなど。sda1、sdb2などにパーティションを含めたくないので問題があります。すべての文字をワイルドカード化できますが、すべての数字をワイルドカード化できませんか?
例:
KERNEL=="sd??", NAME="test/Disk%n", ATTRS{ID_SERIAL_SHORT}!="xxxx"
たとえば、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/sda
とudevadm info /dev/sda1
で確認できます。