Udev — система управления устройствами в Linux, которая позволяет создавать правила для автоматического определения и настройки устройств. Это критически важно для фиксации имён сетевых интерфейсов, микрофонов и других периферийных устройств.
Udev — это менеджер устройств для ядра Linux, который:
/devФайлы правил находятся в /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"
Создайте правило:
sudo nano /etc/udev/rules.d/70-persistent-net.rules
Добавьте:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="mac:адрес:интерфейса", NAME="wlan0"
ip link show wlan0
# или
ip addr show wlan0
Ищите строку link/ether 00:11:22:33:44:55
Создайте правило:
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 вместо сложного пути.
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
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
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"
Автор: ordanax.github.io
Telegram: @linux4at
MAX: Присоединиться
Комментарии