Ядро Linux сообщает изменения устройств пространству пользователя через uevents. Во многих дистрибутивах systemd-udevd обрабатывает их по правилам udev и базе устройств. Вместе с заполняемой ядром devtmpfs это формирует владельцев, разрешения, свойства и ссылки вокруг /dev.
Устройства · Урок 5
udev
Узнайте, как udev обрабатывает события устройств ядра, применяя политику, разрешения и постоянные ссылки.
От события ядра к политике
При добавлении, изменении, перемещении или удалении устройства udev может:
- читать атрибуты sysfs и свойства события;
- применять владельца, группу и режим к узлу;
- добавлять стабильные ссылки вроде
/dev/disk/by-id/...; - помечать устройства для других служб;
- запускать узко определённую вспомогательную обработку.
За само устройство и драйвер отвечает ядро. Удаление узла из /dev физически не отключает оборудование, а ручной mknod не создаёт неподдерживаемое оборудование и не привязывает драйвер.
Что обычно запускает обработку udev при изменении устройства?
Расположение и приоритет правил
Правила обычно находятся в:
/usr/lib/udev/rules.d/— правила поставщиков и пакетов;/run/udev/rules.d/— временные правила времени выполнения;/etc/udev/rules.d/— локальная политика администратора.
Файлы обрабатываются в лексикографическом порядке, а одноимённые из более приоритетных каталогов заменяют нижестоящие согласно реализации. Локальное правило должно иметь осмысленное имя и совпадать по стабильным свойствам, а не порядковым именам.
Одно правило может затронуть все совпавшие устройства, поэтому тщательно проверяйте область. Не правьте пакетные правила, если подходит локальное дополнение или переопределение.
Какой каталог предназначен для постоянных локальных правил администратора?
Исследование через `udevadm`
Запросите свойства существующего узла:
$ udevadm info --query=all --name=/dev/sda
Используйте реально существующий узел. udevadm info --attribute-walk --name=... показывает атрибуты цепочки родителей sysfs для построения правила. udevadm monitor --kernel --udev --property наблюдает события ядра и обработанные события; вывод может содержать идентификаторы устройств.
Что запрашивает udevadm info --query=all --name=/dev/sda?
Осторожное применение изменений
Перезагрузка файлов правил влияет на будущую обработку событий и не перестраивает автоматически состояние каждого устройства. Ручной запуск событий способен затронуть много устройств и служб, поэтому сужайте цель и сверяйтесь с документацией. Тестовая команда может симулировать оценку правил, но не все побочные эффекты реального события.
Создайте копию локальных правил, проверьте синтаксис, наблюдайте одно известное устройство и сохраните путь восстановления перед изменением разрешений или имён. Долгую работу не выполняйте прямо в обработке udev — передавайте её службе.
Что прежде всего меняет перезагрузка правил udev?
В лаборатории Изучение аппаратных устройств в Linux сопоставьте свойства udevadm, пути sysfs и ссылки /dev.
Урок завершён
Вы завершили udev
Теперь вы умеете помещать udev между событиями ядра и политикой устройств пространства пользователя.
Связывать uevents и атрибуты sysfs с совпадением правил.
Отличать каталоги поставщика, времени выполнения и локальных правил.
Исследовать свойства и поток событий через
udevadm.Перезагружать и запускать правила только в узкой проверенной области.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт