можно ли использовать правила udev для исключения одного устройства из правила?
например, если у меня подключено 5 жестких дисков и я хочу создать собственные имена для всех жестких дисков, кроме одного? Возможно ли это?
Кроме того, имена дисков ядра после sdz называются с использованием 2 символов. sdaa, sdab, sdqr и т. д. У меня возникла проблема, так как я не хочу включать раздел в sda1, sdb2 и т. д. Могу ли я использовать подстановочные знаки для всех символов, но не для всех цифр?
пример:
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 и т. д. У меня возникла проблема, так как я не хочу включать раздел в sda1, sdb2 и т. д. Могу ли я использовать подстановочные знаки для всех символов, но не для всех цифр?
Вы используете неправильный подход. Если вы хотите сопоставить диски, но не разделы, тосделать именно это:
ЯДРО=="sd*",ENV{DEVTYPE}=="диск", …
Значения
DEVTYPE
можно увидеть вudevadm info /dev/sda
иudevadm info /dev/sda1
.