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
Создание symlink для удобства
Пример: Создание symlink для микрофона
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
Решение проблем
Проблема: Правило не применяется
- Проверьте синтаксис:
sudo udevadm test /sys/class/net/wlan0 - Перезагрузите правила:
sudo udevadm control --reload-rules sudo udevadm trigger - Проверьте логи:
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"
Рекомендации
- Делайте бэкап правил перед изменениями
- Тестируйте правила перед применением
- Используйте уникальные идентификаторы (MAC-адреса, серийные номера)
- Проверяйте логи при проблемах
- Используйте systemd для сложных скриптов вместо udev
Полезные ресурсы
Автор: ordanax.github.io
Не получилось? Поможем настроить
Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Комментарии