Udev: различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
версия |
Reformat 1 URL (Wayback Medic 2.5)) #IABot (v2.0.9.5) (GreenC bot |
||
(не показано 14 промежуточных версий 9 участников) | |||
Строка 1: | Строка 1: | ||
{{Карточка программы |
{{Карточка программы |
||
|name |
| name = udev |
||
|logo |
| logo = |
||
|screenshot |
| screenshot = |
||
|caption |
| caption = |
||
|collapsible |
| collapsible = |
||
|author |
| author = |
||
|developer |
| developer = [[Greg Kroah-Hartman]] и Kay Sievers |
||
|released |
| released = [[ноябрь]] [[2003 год]]а |
||
| последняя версия = 252 ([[31 октября]] [[2022]])<ref>{{cite web|title=systemd v252|url=https://github.com/systemd/systemd/releases/tag/v252|access-date=2022-12-01|archive-date=2022-11-30|archive-url=https://web.archive.org/web/20221130201531/https://github.com/systemd/systemd/releases/tag/v252|url-status=live}}</ref> |
|||
|frequently_updated |
| frequently_updated = yes<!-- Release version update? Don't edit this page, just click on the version number! --> |
||
|latest_release_version = 240 |
|||
⚫ | |||
|latest_release_date = [[21 декабря]] [[2018 год]]а |
|||
⚫ | |||
⚫ | |||
| platform = |
|||
⚫ | |||
| size = |
|||
|platform = |
|||
| language = |
|||
|size = |
|||
| status = |
|||
|language = |
|||
⚫ | |||
|status = |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
}} |
}} |
||
{{заголовок со строчной буквы}} |
{{заголовок со строчной буквы}} |
||
'''udev''' — |
'''udev''' ''([[userspace]] /dev)'' — управление устройствами для новых версий ядра [[Linux (ядро)|Linux]], являющийся преемником [[devfs]], hotplug и [[HAL (freedesktop.org)|HAL]]. Его основная задача — обслуживание [[Файл устройства|файлов устройств]] ({{lang-en|device nodes}}) в каталоге [[:/dev]] и обработка всех действий, выполняемых в [[пространство пользователя|пространстве пользователя]] при добавлении/отключении внешних устройств, включая загрузку [[firmware]]. |
||
== История == |
== История == |
||
Строка 29: | Строка 29: | ||
В ядро Linux 2.6.13 введён и обновлён новый [[uevent]] интерфейс. Новый udev не будет работать на ядрах младше версии 2.6.13. |
В ядро Linux 2.6.13 введён и обновлён новый [[uevent]] интерфейс. Новый udev не будет работать на ядрах младше версии 2.6.13. |
||
В апреле 2012 исходный код udev слился с исходным кодом [[systemd]]<ref>{{citation |last=Sievers |first=Kay |title=Commit importing udev into systemd |url=http://cgit.freedesktop.org/systemd/systemd/commit/?id=19c5f19d69bb5f520fa7213239490c55de06d99d |work=systemd | |
В апреле 2012 исходный код udev слился с исходным кодом [[systemd]]<ref>{{citation |last=Sievers |first=Kay |title=Commit importing udev into systemd |url=http://cgit.freedesktop.org/systemd/systemd/commit/?id=19c5f19d69bb5f520fa7213239490c55de06d99d |work=systemd |access-date=2012-05-25 |archive-date=2012-07-08 |archive-url=https://archive.today/20120708192654/http://cgit.freedesktop.org/systemd/systemd/commit/?id=19c5f19d69bb5f520fa7213239490c55de06d99d |url-status=live }} {{Cite web |url=http://cgit.freedesktop.org/systemd/systemd/commit/?id=19c5f19d69bb5f520fa7213239490c55de06d99d |title=Источник |access-date=2012-10-29 |archive-date=2012-07-08 |archive-url=https://archive.today/20120708192654/http://cgit.freedesktop.org/systemd/systemd/commit/?id=19c5f19d69bb5f520fa7213239490c55de06d99d |url-status=unfit }}</ref>. |
||
Официально стартовал проект [https://web.archive.org/web/20141026115606/http://www.gentoo.org/proj/en/eudev/ eudev] (форк udev от [[Gentoo]]) в качестве замены для Systemd-udevd. На прошедшей конференции FOSDEM 2013 разработчики eudev чётко обозначили, что eudev «является для них исключительно учебным проектом» и «их код в его текущем состоянии ни в коем случае нельзя рассматривать как готовый к эксплуатации» [http://www.opennet.ru/opennews/art.shtml?num=36032]. |
Официально стартовал проект [https://web.archive.org/web/20141026115606/http://www.gentoo.org/proj/en/eudev/ eudev] (форк udev от [[Gentoo]]) в качестве замены для Systemd-udevd. На прошедшей конференции [[FOSDEM]] 2013 разработчики eudev чётко обозначили, что eudev «является для них исключительно учебным проектом» и «их код в его текущем состоянии ни в коем случае нельзя рассматривать как готовый к эксплуатации» [http://www.opennet.ru/opennews/art.shtml?num=36032]. |
||
== Описание == |
== Описание == |
||
Благодаря udev в каталоге [[:/dev]] находятся файлы только тех устройств, которые в настоящий момент подключены к системе. Каждое устройство имеет свой соответствующий файл. Если устройство отключается от системы, то данный файл удаляется. Содержимое каталога /dev хранится на [[Виртуальная файловая система|виртуальной файловой системе]], и все файлы, находящиеся в нём, создаются при каждом запуске системы. Модифицированные или созданные вручную файлы не сохраняются после перезагрузки. Файлы и каталоги, которые необходимо сохранить или которые всегда должны присутствовать в каталоге /dev, независимо от состояния соответствующего устройства, необходимо помещать в каталог /lib/udev/devices. При запуске системы содержимое данного каталога копируется в /dev как есть (с теми же правами доступа). |
Благодаря udev в каталоге [[:/dev]] находятся файлы только тех устройств, которые в настоящий момент подключены к системе. Каждое устройство имеет свой соответствующий файл. Если устройство отключается от системы, то данный файл удаляется. Содержимое каталога /dev хранится на [[Виртуальная файловая система|виртуальной файловой системе]], и все файлы, находящиеся в нём, создаются при каждом запуске системы. Модифицированные или созданные вручную файлы не сохраняются после перезагрузки. Файлы и каталоги, которые необходимо сохранить или которые всегда должны присутствовать в каталоге /dev, независимо от состояния соответствующего устройства, необходимо помещать в каталог /lib/udev/devices. При запуске системы содержимое данного каталога копируется в /dev как есть (с теми же правами доступа). |
||
Таким образом, в отличие от традиционной для [[Unix]] схемы управления каталогом <tt>/dev</tt>, где его содержимое было |
Таким образом, в отличие от традиционной для [[Unix]] схемы управления каталогом <tt>/dev</tt>, где его содержимое было неизменным набором файлов, udev обеспечивает динамическое управление устройствами, действительно находящимися в системе. Хотя раньше подобная функциональность обеспечивалась [[devfs]], сторонники udev выделяют следующие преимущества своего решения<ref>{{cite web |url=http://kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs |title=アーカイブされたコピー |access-date=2014-05-10 |archive-url=https://web.archive.org/web/20110411233322/http://kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs |archive-date=2011-04-11 }}</ref>: |
||
* udev поддерживает неизменное именование устройств, не зависящее, например, от порядка включения устройств в систему. Конфигурация по умолчанию обеспечивает неизменное именование для накопителей: жесткие диски идентифицируются по уникальному идентификатору файловой системы, имени диска и расположению устройства, к которому подключен диск. |
* udev поддерживает неизменное именование устройств, не зависящее, например, от порядка включения устройств в систему. Конфигурация по умолчанию обеспечивает неизменное именование для накопителей: жесткие диски идентифицируются по уникальному идентификатору файловой системы, имени диска и расположению устройства, к которому подключен диск. |
||
* udev работает целиком в пространстве пользователя. Это приводит, в частности, к тому, что udev может выполнять произвольные программы для составления имени устройства либо его инициализации. |
* udev работает целиком в пространстве пользователя. Это приводит, в частности, к тому, что udev может выполнять произвольные программы для составления имени устройства либо его инициализации. |
||
Строка 44: | Строка 44: | ||
udev запускается как [[демон (программа)|демон]] и принимает через [[Сокет (программный интерфейс)|сокет]] netlink события uevents от ядра, которые генерируются при инициализации или удалении устройства из системы. Задаваемые пользователем (системой) правила сверяются со свойствами события и соответствующего устройства, и совпавшее правило (которых может быть несколько) может назвать и создать соответствующий файл устройств, а также выполнить другие программы для инициализации и конфигурации устройства. Например, таким образом можно реализовать автоматическое [[Монтирование файловой системы|монтирование]] внешних накопителей при их подключении. |
udev запускается как [[демон (программа)|демон]] и принимает через [[Сокет (программный интерфейс)|сокет]] netlink события uevents от ядра, которые генерируются при инициализации или удалении устройства из системы. Задаваемые пользователем (системой) правила сверяются со свойствами события и соответствующего устройства, и совпавшее правило (которых может быть несколько) может назвать и создать соответствующий файл устройств, а также выполнить другие программы для инициализации и конфигурации устройства. Например, таким образом можно реализовать автоматическое [[Монтирование файловой системы|монтирование]] внешних накопителей при их подключении. |
||
Правила могут сверяться по таким свойствам, как конкретная ядерная подсистема, имя устройства в ядре, физическое расположение устройства, либо по серийному номеру устройства. Правила также могут запрашивать информацию при помощи других программ или указать, что имя устройства всегда будет одним и тем же, вне зависимости от порядка обнаружения устройств системой. |
Правила могут сверяться по таким свойствам, как конкретная ядерная подсистема, имя устройства в ядре, физическое расположение устройства, либо по серийному номеру устройства. Правила также могут запрашивать информацию при помощи других программ или указать, что имя устройства всегда будет одним и тем же, вне зависимости от порядка обнаружения устройств системой. Правила задаются в файле с произвольным именем, но с суффиксом .rules и находятся в /etc/udev/rules.d/ Существует хорошо описанный [https://habr.com/ru/post/673134/ пример настройки]. |
||
Типичный способ использования udev на Linux-системе — позволить посылать события [[HAL (freedesktop.org)|HAL]] или [[DeviceKit]], чтобы они произвели последующие зависящие от устройств действия. Например, HAL/DeviceKit может уведомить остальные программы о новом устройстве при помощи широковещательного сообщения в [[D-Bus]]. Таким образом, рабочие среды типа [[GNOME]] или [[KDE]] могут автоматически смонтировать [[USB]]-накопитель и открыть [[файловый менеджер]] для просмотра его содержимого. |
Типичный способ использования udev на Linux-системе — позволить посылать события [[HAL (freedesktop.org)|HAL]] или [[DeviceKit]], чтобы они произвели последующие зависящие от устройств действия. Например, HAL/DeviceKit может уведомить остальные программы о новом устройстве при помощи широковещательного сообщения в [[D-Bus]]. Таким образом, рабочие среды типа [[GNOME]] или [[KDE]] могут автоматически смонтировать [[USB]]-накопитель и открыть [[файловый менеджер]] для просмотра его содержимого. |
||
Строка 57: | Строка 57: | ||
== Примечания == |
== Примечания == |
||
{{примечания}} |
|||
<references/> |
|||
== См. также == |
|||
{{Портал|Свободное программное обеспечение}} |
|||
== Ссылки == |
== Ссылки == |
Текущая версия от 17:34, 15 февраля 2024
udev | |
---|---|
Тип | Device node |
Разработчики | Greg Kroah-Hartman и Kay Sievers |
Написана на | С |
Операционная система | Linux (ядро) |
Первый выпуск | ноябрь 2003 года |
Последняя версия | 252 (31 октября 2022)[1] |
Репозиторий | 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.
Примечания
[править | править код]- ↑ systemd v252 . Дата обращения: 1 декабря 2022. Архивировано 30 ноября 2022 года.
- ↑ Sievers, Kay, "Commit importing udev into systemd", systemd, Архивировано 8 июля 2012, Дата обращения: 25 мая 2012 Источник . Дата обращения: 29 октября 2012. Архивировано 8 июля 2012 года.
- ↑ アーカイブされたコピー . Дата обращения: 10 мая 2014. Архивировано 11 апреля 2011 года.