udev — это подсистема управления устройствами в ядре Linux, которая динамически создает и удаляет устройства, управляет правами доступа и выполняет другие задачи, связанные с аппаратными устройствами. udev является частью системы systemd и отвечает за управление устройствами в пространстве пользователей, предоставляя возможность адаптивного управления оборудованием.
Основные функции и возможности udev
- Динамическое управление устройствами: автоматическое создание и удаление файлов устройств в /dev при подключении и отключении оборудования.
- Настройка прав доступа: управление правами доступа к устройствам.
- Создание символьных ссылок: создание удобных для пользователя символьных ссылок на устройства.
- Запуск скриптов и программ: выполнение заданных действий при обнаружении устройства.
Основные компоненты
- udevd: демон, который управляет правилами и обработкой устройств.
- Правила udev: файлы конфигурации, которые описывают, как udev должен обрабатывать устройства. Эти файлы обычно находятся в /etc/udev/rules.d/ и /lib/udev/rules.d/.
Основные команды
- udevadm: основной инструмент для взаимодействия с udev. Используется для управления правилами, мониторинга событий и получения информации об устройствах.
Примеры использования udevadm
Получение информации об устройстве
udevadm info --query=all --name=/dev/sda
Мониторинг событий udev
udevadm monitor --udev
Триггеринг событий для существующих устройств
udevadm trigger
Перезагрузка демона udev
sudo udevadm control --reload
Правила udev
Правила udev определяют, как обрабатываются устройства. Эти правила находятся в файлах с расширением .rules и обычно располагаются в директориях /etc/udev/rules.d/ и /lib/udev/rules.d/.
Пример правила udev
Создадим правило для автоматического монтирования USB-накопителя:
Создайте файл правила:
sudo nano /etc/udev/rules.d/99-usb-mount.rules
Добавьте следующее содержимое в файл:
ACTION=="add", KERNEL=="sd[b-z][1-9]", SUBSYSTEM=="block", RUN+="/usr/bin/usb-mount.sh %k"
Это правило выполняет скрипт /usr/bin/usb-mount.sh при добавлении нового блокового устройства (например, USB-накопителя).
Создайте скрипт /usr/bin/usb-mount.sh:
sudo nano /usr/bin/usb-mount.sh
Добавьте следующее содержимое в скрипт:
#!/bin/bash DEVICE=$1 MOUNTPOINT="/media/usb-$DEVICE" mkdir -p $MOUNTPOINT mount /dev/$DEVICE $MOUNTPOINT
Сделайте скрипт исполняемым:
sudo chmod +x /usr/bin/usb-mount.sh
Перезагрузите udev, чтобы применить новые правила:
sudo udevadm control --reload
udev — это мощный инструмент для управления устройствами в Linux. Он предоставляет гибкие возможности для автоматизации обработки устройств, настройки прав доступа и запуска скриптов при подключении или отключении оборудования. Понимание работы udev и использование его возможностей позволяет эффективно управлять аппаратными устройствами в Linux.