В начало → Руководство по udev в Gentoo
Gentoo-doc HOME В началоСлед.: Как использовать udev в Gentoo

Руководство по udev в Gentoo


1. Что такое udev?
2. Как использовать udev в Gentoo
3. Известные проблемы
4. Ссылки на ресурсы и благодарности

Ссылка на оригинал: http://www.gentoo.org/doc/ru/udev-guide.xml

C версии: 1.0

1. Что такое udev?

1.1. Каталог /dev

Когда пользователи Linux разговаривают о начинке своих систем среди людей, полагающих, что Linux — это какой-то вид вируса или марка кофе, пользуясь оборотами вроде «слэш дев слэш что—нибудь» (/dev/foo), на них наверняка смотрят косо. Но для счастливчиков (естественно, включая вас), /dev/hda1 — просто быстрый способ упоминания первого раздела ведущего диска IDE на первичном канале. Разве нет?

Все мы знаем, что такое файл устройства. Некоторые даже знают, почему рядом с ними видны специальные числа, если посмотреть на результат ls -l, запущенной в каталоге /dev. Но мы принимаем за данность, что первичный ведущий диск IDE называется /dev/hda. У вас может быть и не так, но это всего лишь пример.

Представим себе устройства «горячей замены» вроде USB, IEEE1394, заменяемой PCI и т.д. Какое из них является первым по счету? Надолго ли? Как изменятся названия других устройств, если первое отключить? Как это повлияет на текущие операции? Было бы забавно, если бы задание печати вдруг переключалось с вашего супер навороченного лазерного принтера на старый полудохлый матричный из-за того, что ваша мама решила выдернуть разъем лазерного принтера, а тот оказался первым в списке, не так ли?

Перейдем к udev. Цели проекта udev как занимательны, так и актуальны:

  • запуск драйверов в режиме пользователя

  • динамическое создание и удаление файлов устройств

  • согласованное назначение имен устройств

  • предоставление интерфейса программирования (API) для режима пользователя

Разработка udev состоит из трех отдельных проектов: namedev, libsysfs и, конечно, udev.

1.2. namedev

Namedev позволяет отделить именование устройств от программы udev. Это дает возможность гибкого использования правил и схем именования, разработанныых отдельно. Подсистема именования предоставляет стандартный интерфейс, который может использоваться udev.

Сейчас, через namedev представлена только одна схема именования, предоставляемая LANANA. Она используется на большинстве Linux—систем, и поэтому хорошо подходит основной массе пользователей Linux.

В namedev для определения имени конкретного устройства используется последовательность из пяти шагов. Если на одном из шагов имя установлено, оно и используется. Вот эти шаги:

  1. по метке или серийному номеру

  2. по номеру устройства шины

  3. по топологии шины

  4. статическое имя

  5. имя, назначенное в ядре

По метке или серийному номеру — проверяется, есть ли у устройства уникальный идентификатор. Например, у устройств USB есть уникальный серийный номер USB, а у устройств SCSI — уникальный UUID. Если namedev находит соответствие уникального номера и определенного конфигурационного файла, используется имя, указанное в конфигурационном файле.

По номеру устройства шины — проверяется номер устройства, подключаемого к шине. В среде, где нет возможности «горячей замены», этого шага достаточно для идентификации устройства (например, номер на шине PCI редко меняется за время существования системы). Опять же, если namedev находит соответствие номера устройства шины и определенного конфигурационного файла, используется имя, указанное в конфигурационном файле.

Подобным образом, по топологии шины — это, скорее, статический способ идентификации устройств, подходящий до тех пор, пока пользователь не начинает их переключать. Когда позиция устройства совпадает со значением, заданным пользователем, используется указанное имя.

Четвёртый шаг, статическое имя — это простая подстановка строки. Замененное имя присваивается, когда имя, назначенное в ядре (по умолчанию) совпадает с заданной строкой замены.

Последний шаг (имя, назначенное в ядре) покрывает все остальные случаи: при этом берётся имя по умолчанию, присвоенное в ядре. В большинстве случаев этого достаточно, поскольку имя соответствует принятому в современных Linux-системах.

1.3. libsysfs

udev взаимодействует с ядром через псевдофайловую систему sysfs. Проект libsysfs предлагает обобщенный интерфейс программирования для доступа к сведениям, предоставляемым файловой системой sysfs. Это даёт возможность опроса разнородных устройств без необходимости знания их типа.

1.4. udev

Каждый раз, когда ядро обнаруживает обновление структуры устройств, оно вызывает программу /sbin/hotplug. Hotplug, в свою очередь, запускает приложения, указанные в каталоге /etc/hotplug.d/default, где также находится символическая ссылка на приложение udev. Hotplug направляет сведения, данные ядром, в программу udev, которая производит необходимые действия над структурой /dev (создавая или удаляя файлы устройств).

В началоСлед.: Как использовать udev в Gentoo
В начало → Руководство по udev в Gentoo