В linux все железо - это события. Вставили диск, появился интерфейс, подключили USB - ядро сгенерировало событие, а udev решил, что с ним делать. Если нужно не просто чтобы работало, а чтобы работало как надо, в дело идут udev rules.
▶️ Что такое udev rules
udev rules - это правила, которые:
переименовывают устройства
задают права и владельцев
создают симлинки
запускают команды при подключении/отключении
Работают на уровне событий, без cron, демонов и костылей.
👁 Где живут правила
Свои правила кладут сюда:
/etc/udev/rules.d/
Файлы читаются в порядке номеров, например:
10-local.rules
99-usb.rules
▪️ Простой пример: стабильное имя для диска. Допустим, USB-диск каждый раз появляется как sdb, sdc, sdd. Это неудобно.
Смотрим атрибуты:
udevadm info --query=all --name=/dev/sdb
Пишем правило:
SUBSYSTEM=="block", ENV{ID_SERIAL}=="WD_Elements_25A1", SYMLINK+="backup_disk"
Теперь диск всегда доступен как:
/dev/backup_disk
▪️ Права и владелец для устройств. Например, для USB-UART адаптера:
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE="0660", GROUP="dialout"
Больше не нужно chmod после каждой перезагрузки.
▪️ Автоматический запуск команды. Можно выполнить действие при подключении:
ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_LABEL}=="DATA", RUN+="/usr/local/bin/mount-data.sh"
▪️ После правок:
udevadm control --reload
udevadm trigger
Или просто переподключить устройство.
#linux #udev
🧑💻 NetworkAdmin