Udev/ru

udev (user ) Article description::это менеджер устройств из systemd для ядра Linux. Он управляет файлами устройств в каталоге и обрабатывает все действия из пользовательского пространства при добавлении или удалении устройств.

The package is used as the default device manager for Gentoo systems using the OpenRC init system, independently of systemd.

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

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 и расположения устройства. Посмотрите в каталог . Так что, вместо того, чтобы использовать файл устройства, используйте файл.


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


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

Use new predictable network interface naming
The new network interface naming convention is not the same. So the symlinks used by netifrc will need to be re-linked. Use as a link target for whatever interface names need to be added. Be sure to replace   in the commands below with the Ethernet interface names present on the system. It is possible to discover which interfaces exist by running the command:

Create a symbolic link for the existing interfaces in the directory:

Edit with any necessary configuration for all interfaces.

Add the script(s) to the default runlevel to have the interface(s) start automatically:

Optional: Disable or override predictable network interface naming
Network device names such as  or   as provided by the kernel are normally changed on system boot (see ) by the  udev rule and the NamePolicy in.

This behavior may be disabled in several ways:


 * 1) Symlink  to :.
 * 2) Create a lower-numbered .link file in  which assigns a different name to the interface.
 * 3) Pass   on the kernel command line.

Reference: https://systemd.io/PREDICTABLE_INTERFACE_NAMES/

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


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




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




 * Show udev info about a given sys path device file (might be obtained via ):




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




 * After changing a rules file in, either reboot or make udev reload them with:




 * For already added devices (plugged USB, etc.), the reloaded rules take effect either after changing the device (replugging USB, etc.) or by making udev request kernel events again via . Various event actions can be triggered. By default, the change event action is triggered:



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

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

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

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

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

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

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

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

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

Также убедитесь, что не передали  в командной строке ядра. Такая настройка полностью отключает функцию предсказуемых имен в udev.

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