Udev/ru

udev это менеджер устройств для ядра Linux. Он управляет файлами устройств в каталоге и обрабатывает все действия из пользовательского пространства при добавлении или удалении устройств. Читателям этой статьи следует также посмотреть на eudev форк udev.

Ядро
Для требуется включить следующие параметры ядра:

USE-флаги
Portage знает о глобальном  USE-флаге для включения поддержки udev в остальных пакетах. Добавьте этот USE-флаг в список USE-флагов (он включен по умолчанию для всех Linux профилях) приведет к тому, что пакет автоматически установится:

Emerge
После настройки USE-флагов обновите систему, чтобы изменения вступили в силу:

Запуск как сервис
Чтобы запустить udev при загрузке, добавьте его к уровню запуска sysinit. Это может быть сделано при помощи следующей команды, если она запущена с привилегиями root пользователя:

Правила
udev дает возможность создавать правила, которые проверяют uevents (события, посланные ядром) и задают свойства найденного устройства. Совпадающее правило, возможно, даст устройству имя, создаст файл устройства, и запустит программу конфигурации, чтобы настроить устройство.

Определения правил сохраняются в двух местах:


 * 1)  - правила в этом каталоге создают некоторые установленные пакеты, они, как правило, не должны изменятся пользователями;
 * 2)  - этот каталог для пользовательских настроек. Любое новое правило должно быть добавлено в этот каталог.

В этих каталогах, несколько файлов правил (с суффиксом ) в буквенно-цифровом порядке имен, по возрастанию. Внутри файлов правил, udev ищет выражения, которые могут совпасть с uevent (добавляется устройство или удаляется) и команду для выполнения.

Выражения проверяются на совпадение на основании следующей информации:


 * Поле SUBSYSTEM uevent (для какого типа устройства был uevent)
 * Действие (поле ACTION), которое было предпринято (добавление, удаление, либо изменение устройства)
 * Один или более атрибутов (через поля ATTR or ATTRS), например, класс устройства, производитель, либо другая информация об устройстве
 * Имя, данное ядром (через поле KERNEL), например, sd* (для дисков SCSI/SATA), либо input* (для устройств ввода, таких, как мыши и клавиатуры)
 * Одна или более настройка окружения (через поле ENV), используемая для информации, которая может использоваться несколькими правилами сразу.

На основании этой информации, правило может сделать следующее:


 * 1) определить информацию, которую необходимо будет передать более поздним событиям (через переменные окружения)
 * 2) создать ссылки в
 * 3) выполнить команды

Udev делает эти действия для каждого правила, для которого находит соответствие (он не останавливается после первого совпадения), позволяя организовать гибкий подход к управлению устройствами.

Постоянные имена устройств
Ядро определяет устройства асинхронно, а udev зеркалирует файловую систему sysfs ядра так, чтобы устройствам были даны названия и номера в порядке их определения. Так что, по умолчанию udev не дает постоянных имен устройств. Однако существуют механизмы для того, чтобы этого добиться (для некоторых классов устройств).


 * Udev создает дополнительные символические ссылки для устройств хранения, на основании ID, label, UUID и расположения устройства. Посмотрите в каталог . Так что, вместо того, чтобы использовать файл устройства, используйте файл.


 * То же самое для устройств ввода в каталоге.


 * Используя свои правила, пользователи могут создавать собственные файлы устройств.

Использование
Некоторые полезные команды:


 * Показать все сообщения о заданном файле устройства:


 * Мониторинг активности udev:


 * Назначение постоянного имени для интернет устройства:

Смотрите man страницу udevadm для более детальной информации.

Логгинг сообщений монитора
Чтобы начать записывать все сообщения при запущенном, измените следующий конфигурационный файл:

Это создаст новый файл лога.

Режим отладки
Включение режима отладки выведет еще больше сообщений в логах:

Установите приоритет логгинга

Будет создан файл логов, однако никакие сообщения в него не будут записываться. Самые новые версии udev будут отправлять все сообщения в.

Отсутствующие файлы устройств и
Некоторые версии udev нуждаются и  файлах для корректной работы, и не могут создать их сами. Чтобы вручную создать эти файлы для Udev выполните следующие команды с привилегиями root:

Сетевая карта определена как eth0, но изменилась на eth1
Те, у кого две сетевых карты на материнской плате, могут попасть в ситуацию, когда не покажет eth0 или eth1. может показать, что сетевая карта определена как eth0, а затем переименована в eth1. При выполнении также будет показана сетевая карта как eth1. Это из-за того, что имена, определенные ядром используются в первую очередь. Пользователи должны написать свои правила, например, в файле, и задать свои имена, вроде lan0 или wireless0, либо использовать предсказуемые имена интерфейсов (которые были включены по умолчанию начиная с udev версии 197).

Также, помните, что нужно удалить старые файлы, оставшиеся от старых версий udev:

Also make sure not to pass  on the kernel commandline. This setting would disable the predictable devname feature of udev altogether.

Смотрите также
eudev - форк udev разрабатываемый Gentoo.

Ссылки
- предоставляемая по умолчанию программа от virtual/udev изменена на sys-fs/eudev.