udev

Материал из Википедии — свободной энциклопедии
Текущая версия страницы покане проверялась опытными участниками и может значительно отличаться отверсии, проверенной 1 февраля 2019 года; проверки требуют16 правок.
Перейти к навигацииПерейти к поиску
udev
ТипDevice node
РазработчикиGreg Kroah-Hartman и Kay Sievers
Написана наС
Операционная системаLinux (ядро)
Первый выпускноябрь2003 года
Последняя версия
Репозиторийgithub.com/systemd/syste…
ЛицензияGPL v2
Сайтgit.kernel.org/?p=linux/…

udev(userspace /dev) — управление устройствами для новых версий ядраLinux, являющийся преемникомdevfs, hotplug иHAL. Его основная задача — обслуживаниефайлов устройств (англ. device nodes) в каталоге/dev и обработка всех действий, выполняемых впространстве пользователя при добавлении/отключении внешних устройств, включая загрузкуfirmware.

Содержание

История

[править |править код]

udev добавлен в Linux 2.5.

В ядро Linux 2.6.13 введён и обновлён новыйuevent интерфейс. Новый udev не будет работать на ядрах младше версии 2.6.13.

В апреле 2012 исходный код udev слился с исходным кодомsystemd[2].

Официально стартовал проектeudev (форк udev отGentoo) в качестве замены для Systemd-udevd. На прошедшей конференцииFOSDEM 2013 разработчики eudev чётко обозначили, что eudev «является для них исключительно учебным проектом» и «их код в его текущем состоянии ни в коем случае нельзя рассматривать как готовый к эксплуатации»[1].

Описание

[править |править код]

Благодаря udev в каталоге/dev находятся файлы только тех устройств, которые в настоящий момент подключены к системе. Каждое устройство имеет свой соответствующий файл. Если устройство отключается от системы, то данный файл удаляется. Содержимое каталога /dev хранится навиртуальной файловой системе, и все файлы, находящиеся в нём, создаются при каждом запуске системы. Модифицированные или созданные вручную файлы не сохраняются после перезагрузки. Файлы и каталоги, которые необходимо сохранить или которые всегда должны присутствовать в каталоге /dev, независимо от состояния соответствующего устройства, необходимо помещать в каталог /lib/udev/devices. При запуске системы содержимое данного каталога копируется в /dev как есть (с теми же правами доступа).

Таким образом, в отличие от традиционной дляUnix схемы управления каталогом/dev, где его содержимое было неизменным набором файлов, udev обеспечивает динамическое управление устройствами, действительно находящимися в системе. Хотя раньше подобная функциональность обеспечиваласьdevfs, сторонники udev выделяют следующие преимущества своего решения[3]:

  • udev поддерживает неизменное именование устройств, не зависящее, например, от порядка включения устройств в систему. Конфигурация по умолчанию обеспечивает неизменное именование для накопителей: жесткие диски идентифицируются по уникальному идентификатору файловой системы, имени диска и расположению устройства, к которому подключен диск.
  • udev работает целиком в пространстве пользователя. Это приводит, в частности, к тому, что udev может выполнять произвольные программы для составления имени устройства либо его инициализации.

Принцип работы

[править |править код]

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

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

Типичный способ использования udev на Linux-системе — позволить посылать событияHAL илиDeviceKit, чтобы они произвели последующие зависящие от устройств действия. Например, HAL/DeviceKit может уведомить остальные программы о новом устройстве при помощи широковещательного сообщения вD-Bus. Таким образом, рабочие среды типаGNOME илиKDE могут автоматически смонтироватьUSB-накопитель и открытьфайловый менеджер для просмотра его содержимого.

Архитектура

[править |править код]

udev разделен на три части:

  • Библиотекаlibudev, позволяющая получать доступ к информации об устройствах.
  • Демонudevd, работающий в пространстве пользователя и управляющий содержимым/dev.
  • Программаudevadm, используемая для отладки и диагностики.

udev получает события от ядра через netlink-сокет. Ранние версии использовали hotplug, добавляясь в/etc/hotplug.d/default.

Примечания

[править |править код]
  1. Release 257.4 — 2025.
  2. Sievers, Kay,Commit importing udev into systemd,systemd,Архивировано 8 июля 2012, Дата обращения: 25 мая 2012Источник  (неопр.). Дата обращения: 29 октября 2012. Архивировано 8 июля 2012 года.
  3. アーカイブされたコピー  (неопр.). Дата обращения: 10 мая 2014. Архивировано 11 апреля 2011 года.

Ссылки

[править |править код]
Источник —https://ru.wikipedia.org/w/index.php?title=Udev&oldid=143990022
Категории:
Скрытые категории: