Udev: различия между версиями

Материал из ALT Linux Wiki
Строка 98: Строка 98:


KERNELS
KERNELS
Поиск внутреннего имени ядра у устройства и его родительских устройств.
Поиск внутреннего имени ядра у устройства и его родительских устройств (вверх по пути devpath).


NAME
NAME
Строка 105: Строка 105:
SYMLINK
SYMLINK
Сравнение с именем символической ссылки, нацеленной на нод. Его можно использовать после того, как ключ SYMLINK был установлен в одном из предыдущих правил. Симлинков может быть несколько; только достаточно совпадения одного из них.
Сравнение с именем символической ссылки, нацеленной на нод. Его можно использовать после того, как ключ SYMLINK был установлен в одном из предыдущих правил. Симлинков может быть несколько; только достаточно совпадения одного из них.
SUBSYSTEM
Совпадение с именем подсистемы (SUBSYSTEM), в которой произошло событие на устройстве.
SUBSYSTEMS
Совпадение c именем подсистемы у устройста и его родительских устройств (вверх по пути devpath).
DRIVER
Сравнение с именем драйвера событийного устройства. Этот ключ устанавливается только для устройств, которые привязаны к драйверу во время создания события.
DRIVERS
Поиск имени драйвера вверх по пути devpath.
ATTR{filename}
Сравнение с значением атрибута в sysfs у устройства события.
Обрамляющие пробелы в значении атрибута игнорируются, если само значение для сравнения не содержит обрамляющих пробелов.
ATTRS{filename}
Поиск атрибутов sysfs вверх по пути devpth. Если указано несколько совпадений ATTRS, все они должны совпадать на одном устройстве.
Завершающий пробел в значениях атрибута игнорируется, если только указанное значение совпадения само не содержит завершающий пробел.





Версия от 15:50, 26 мая 2022

Перевод man udev

Сам файл переводимого мана помещён на странице обсуждения данной статьи, все правки и исправления перевода (а возможно и корректировка мана), приветствуется

Имя

udev - служба динамического управления устройствами

Описание

udev передаёт программам системы информацию о событиях устройств, управляет правами доступа файловой системы /dev (далее нодам устройств), умеет создавать дополнительные ноды и символические ссылки на внутри файловой системы /dev и переименовывать сетевые интерфейсы.

Ядро обычно просто назначает имена устройств в зависимости от порядка их обнаружения.

Узнаваемые символические ссылки и имена сетевых устройств позволяют надёжно идентифицировать устройства на основе их свойств и конфигурации компьютера.

Служба udev (смотри systemd-udevd.service(8) ), получает события (uevents) от устройств непосредственно от ядра всякий раз, когда устройство добавляется, удаляется из системы, или меняет своё состояние.

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


Файлы правил (rules)

Правила udev (файлы с расширением rules) считываются из файлов, расположенных каталоге в системных правил /lib/udev/rules.d (из пакетов дистрибутива) и /usr/local/lib/udev/rules.d (из самосборных пакетов) , из временного каталога создаваемого во время работы операционной системы /run/udev/rules.d из каталога для администратора системы/etc/udev/rules.d

Все файлы правил коллективно сортируются и обрабатываются в лексическом порядке, независимо от каталогов, в которых они находятся.

  • Однако файлы с одинаковыми именами заменяют друг друга.
  • Файлы в /etc/ имеют наивысший приоритет, файлы в /run/ имеют приоритет над файлами с тем же именем в /lib и /usr/local/lib (разница

приоритетов между /lib и /usr/local/lib не определена, далее по тексту, просто /lib). Это можно использовать для переопределения системного файла правил из /lib и /usr/local/lib с помощью нового файла, если это необходимо;

  • Символическая ссылка в /etc/ с тем же именем, что и файл правил в /lib/, указывающая на /dev/null, полностью отключает файл правил.
  • Файлы правил должны иметь расширение .rules; другие расширения игнорируются.
  • Каждая строка в файле правил содержит по крайней мере одну пару ключ-значение.
  • Пустые строки , и строки, начинающиеся с # (комментарии) игнорируются.
  • Существуют два типа ключей - сравнения (сопоставления) и назначения.
  • Если все ключи сравнения совпадают с их значением, то применяется соответствующие правило, а ключами назначения переменным присваиваются указанные значения.
  • Правило сопоставления может переименовывать сетевой интерфейс, добавлять символические ссылки, указывающие на узел устройства, или запускать указанную программу как часть обработки события.
  • Правило присвоения состоит из одного или нескольких выражений, разделённых запятыми, вида ключ-оператор-значение.
  • Каждое выражение имеет свой эффект, зависящий от используемого ключа и оператора.

Операторы:

"=="
Сравните на равенство. (Истина, если ключ имеет данное значение).

"!="
Сравните на предмет неравенства. (Истина, если ключ не равен значению, или указанного ключа вообще не существует). 

"="
Присвойте значение ключу. Ключ, представляющий список, сбрасываются, и ему назначается только это единственное значение.

"+="
Добавьте значение к ключу, содержащему список записей.

"-="
Удаляет значение из ключа, содержащего список записей.

":="
Присвоить ключу финальное значение, запретить любые последующие изменения ключа.

Переменные

Значения переменных записываются в виде строк в двойных кавычках, например ("string"). Чтобы включить в значение кавычку (""), поставьте перед ней обратную косую черту (\"). Любые другие вхождения обратной косой черты, за которой следует символ, не экранируются. То есть "\t\n" обрабатывается как четыре символа: обратная косая черта, строчная буква t, обратная косая черта, строчная буква n.

Строка может иметь префикс из маленькой буквы e (e"string\n"), чтобы пометить строку в стиле Си Esq -последовательностей. [1] Например, e"string\n" интерпритируется как 7 символов: 6 строчных букв и новая строка. Это может быть полезно для написания специальных символов, когда они требуются драйверу ядра.

Обратите внимание, что NUL не допускается ни в одном из вариантов строки.

Ключи

Следующие имена ключей можно использовать для сопоставления со свойствами устройства. Некоторые ключи также соответствуют свойствам родительских устройств в sysfs, а не только устройству, сгенерировавшему событие. Если несколько ключей, которым соответствие родительскому устройству указаны в одном правиле, все эти ключи должны совпадать на одном и том же родительском устройстве.

ACTION
Проверка совпадение с именем произошедшего события.

DEVPATH
Проверка совпадением devpath (пути в файловой системе /sys)  у события.

KERNEL
Проверка на имя внутренне имя устройства в ядре.

KERNELS
Поиск внутреннего имени ядра у устройства и его родительских устройств (вверх по пути devpath).

NAME
Сравнение имени сетевого интерфейса. Его можно использовать после того, как ключ NAME был установлен в одном из предыдущих правил.

SYMLINK
Сравнение с именем символической ссылки, нацеленной на нод. Его можно использовать после того, как ключ SYMLINK был установлен в одном из предыдущих правил. Симлинков может быть несколько; только достаточно совпадения одного из них.

SUBSYSTEM
Совпадение с именем подсистемы (SUBSYSTEM), в которой произошло событие на устройстве.

SUBSYSTEMS
Совпадение c именем подсистемы у устройста и его родительских устройств (вверх по пути devpath).

DRIVER
Сравнение с именем драйвера событийного устройства. Этот ключ устанавливается только для устройств, которые привязаны к драйверу во время создания события.

DRIVERS
Поиск имени драйвера вверх по пути devpath.

ATTR{filename}
Сравнение с значением атрибута в sysfs у устройства события. 

Обрамляющие пробелы в значении атрибута игнорируются, если само значение для сравнения не содержит обрамляющих пробелов.

ATTRS{filename}
Поиск атрибутов sysfs вверх по пути devpth. Если указано несколько совпадений ATTRS, все они должны совпадать на одном устройстве.
Завершающий пробел в значениях атрибута игнорируется, если только указанное значение совпадения само не содержит завершающий пробел.
  1. Escape-последовательности используются в языках программирования C и C++, и их дизайн был скопирован во многих других языках, таких как Java, PHP, C# и т. д. Escape-последовательность — это последовательность символов, которая не представляет себя при использовании внутри символа или символа. строковый литерал, но преобразуется в другой символ или последовательность символов, которую может быть трудно или невозможно представить напрямую. В C все escape-последовательности состоят из двух или более символов, первый из которых — обратная косая черта \ (называемая «Escape-символом»); остальные символы определяют интерпретацию управляющей последовательности. Например, \n — это управляющая последовательность, обозначающая символ новой строки.