4

Можно ли использовать правила udev для исключения одного устройства из правила?

например, если у меня подключено 5 жестких дисков, и я хочу создать собственные имена для всех жестких дисков, кроме одного? Является ли это возможным?

Также имена ядра дисков после sdz именуются 2 символами. sdaa, sdab, sdqr и т. д. У меня проблема с этим, так как я не хочу включать раздел в sda1, sdb2 и т. д. Могу ли я подстановить все символы, но не все числа?

пример:

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

1 ответ1

3

например, если у меня подключено 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 и т. д. Могу ли я подстановить все символы, но не все числа?

  • Вы используете неправильный подход. Если вы хотите сопоставить диски, но не разделы, то сделайте именно это:

    KERNEL == "sd *", ENV {DEVTYPE} == "диск",…

    Значения DEVTYPE можно увидеть в udevadm info /dev/sda и udevadm info /dev/sda1 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .