Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

Udev правила для устройств в Linux — полное руководство

Udev Rules Udev — система управления устройствами в Linux, которая позволяет создавать правила для автоматического определения и настройки устройств. Это критически важно для фиксации имён сетевых интерфейсов, микрофонов и других периферийных устройств.

Что такое udev?

Udev — это менеджер устройств для ядра Linux, который:

  • Автоматически создаёт/удаляет файлы устройств в /dev
  • Управляет именами устройств
  • Выполняет скрипты при подключении/отключении устройств
  • Применяет правила для настройки устройств

Структура udev правил

Файлы правил находятся в /etc/udev/rules.d/:

/etc/udev/rules.d/
├── 10-network.rules
├── 70-persistent-net.rules
└── 99-custom.rules

Формат правила:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:11:22:33:44:55", NAME="eth0"

Фиксация имён сетевых интерфейсов

Проблема: wlan0 меняет название на wlan1

Создайте правило:

sudo nano /etc/udev/rules.d/70-persistent-net.rules

Добавьте:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="mac:адрес:интерфейса", NAME="wlan0"

Определение MAC-адреса

ip link show wlan0
# или
ip addr show wlan0

Ищите строку link/ether 00:11:22:33:44:55

Настройка микрофона через udev

Проблема: Микрофон меняется или не определяется

Создайте правило:

sudo nano /etc/udev/rules.d/99-microphone.rules

Добавьте:

SUBSYSTEM=="sound", ATTR{id}=="USB Device 1234:5678", ATTR{index}=="0", SYMLINK+="microphone"

Определение атрибутов устройства

# Найти все звуковые устройства
ls -la /dev/snd/

# Подробная информация о устройстве
udevadm info -a -p /sys/class/sound/card0
sudo nano /etc/udev/rules.d/99-mic-symlink.rules
KERNEL=="card*", SUBSYSTEM=="sound", ATTR{id}=="USB Device 1234:5678", SYMLINK+="mic"

Теперь можно обращаться к /dev/mic вместо сложного пути.

Автоматический запуск скриптов при подключении устройств

Пример: Автоматическое монтирование USB

sudo nano /etc/udev/rules.d/99-usb-mount.rules
ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_UUID}=="1234-5678", RUN+="/usr/local/bin/mount-usb.sh"

Создайте скрипт:

sudo nano /usr/local/bin/mount-usb.sh
#!/bin/bash
mount /dev/disk/by-uuid/1234-5678 /mnt/usb

Сделайте исполняемым:

sudo chmod +x /usr/local/bin/mount-usb.sh

Полезные команды для работы с udev

Тестирование правил без перезагрузки

sudo udevadm control --reload-rules
sudo udevadm trigger

Проверка информации об устройстве

# Информация о конкретном устройстве
udevadm info -a -p /sys/class/net/wlan0

# Мониторинг событий udev
udevadm monitor

# Мониторинг только событий устройств
udevadm monitor --environment --udev

Поиск атрибутов устройства

# Все атрибуты устройства
udevadm info -a -p $(udevadm info -q path -n /dev/sda)

# Только специфические атрибуты
udevadm info -q property -n /dev/sda

Решение проблем

Проблема: Правило не применяется

  1. Проверьте синтаксис:
    sudo udevadm test /sys/class/net/wlan0
    
  2. Перезагрузите правила:
    sudo udevadm control --reload-rules
    sudo udevadm trigger
    
  3. Проверьте логи:
    sudo journalctl -xe | grep udev
    

Проблема: Конфликт правил

Проверьте порядок загрузки правил:

ls -la /etc/udev/rules.d/

Файлы обрабатываются в алфавитном порядке. Используйте числа в начале имён для контроля порядка.

Проблема: Устройство не определяется

Проверьте, что устройство видно в системе:

lsusb
lsblk

Проверьте, что ядро поддерживает устройство:

dmesg | grep -i usb

Примеры полезных правил

Фиксация имени USB диска

SUBSYSTEM=="block", ENV{ID_SERIAL}=="USB_DISK_SERIAL", SYMLINK+="backup_drive"

Автоматическое изменение прав доступа

KERNEL=="ttyUSB*", MODE="0666"

Отключение конкретного устройства

SUBSYSTEM=="usb", ATTR{idVendor}=="1234", ATTR{idProduct}=="5678", OPTIONS+="ignore_device"

Рекомендации

  1. Делайте бэкап правил перед изменениями
  2. Тестируйте правила перед применением
  3. Используйте уникальные идентификаторы (MAC-адреса, серийные номера)
  4. Проверяйте логи при проблемах
  5. Используйте systemd для сложных скриптов вместо udev

Полезные ресурсы


Автор: ordanax.github.io
Telegram: @linux4at
MAX: Присоединиться



Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.