是否可以使用 udev 規則從規則中排除單一裝置?
例如,如果我插入了 5 個硬碟,並且我想為除單一硬碟之外的所有硬碟建立自訂名稱?是否可以?
另外,sdz 之後的核心名稱磁碟以 2 個字元命名。 sdaa、sdab、sdqr 等。
例子:
KERNEL=="sd??", NAME="test/Disk%n", ATTRS{ID_SERIAL_SHORT}!="xxxx"
答案1
例如,如果我插入了 5 個硬碟,並且我想為除單一硬碟之外的所有硬碟建立自訂名稱?是否可以?
您可以使用
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 等。
您使用了錯誤的方法。如果你想匹配磁碟而不是分割區,那麼正是這樣做:
核心==“sd*”,ENV{DEVTYPE}==“磁碟”, …
這些
DEVTYPE
值可以在udevadm info /dev/sda
和中看到udevadm info /dev/sda1
。