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