udev linux что это

Как использовать Udev для обнаружения устройств и управления ими в Linux

Udev (userspace /dev) — это подсистема Linux для динамического обнаружения устройств и управления ими, начиная с версии ядра 2.6. Это замена devfs и hotplug.

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

Её функция состоит в том, чтобы 1) снабжать системные приложения событиями устройств, 2) управлять разрешениями узлов устройств и 3) создавать полезные символические ссылки в каталоге /dev для доступа к устройствам или даже переименовывать сетевые интерфейсы.

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

В этой статье мы узнаем, как использовать Udev для обнаружения устройств и управления ими в системах Linux. Обратите внимание, что большинство, если не все основные современные дистрибутивы Linux, поставляются с Udev как часть установки по умолчанию.

Изучите основы Udev в Linux

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

Udev основан на правилах — правила гибкие и очень мощные. Каждое полученное событие устройства сопоставляется с набором правил, считываемых из файлов, расположенных в /lib/udev/rules.d, /usr/lib/udev/rules.d и /run/udev/rules.d.

Вы можете записать файлы пользовательских правил в каталог /etc/udev/rules.d/ (файлы должны заканчиваться расширением .rules) для обработки устройства. Обратите внимание, что файлы правил в этом каталоге имеют наивысший приоритет.

Чтобы создать файл узла устройства, udev необходимо идентифицировать устройство с помощью определённых атрибутов, таких как label, serial number (метка, серийный номер), его основной и дополнительный номер, номер устройства шины и многое другое. Эта информация экспортируется файловой системой sysfs.

Каждый раз, когда вы подключаете устройство к системе, ядро обнаруживает и инициализирует его, и в каталоге /sys/ создаётся каталог с именем устройства, в котором хранятся атрибуты устройства.

Главный файл конфигурации для udev — это /etc/udev/udev.conf, а для управления поведением демона udev во время выполнения вы можете использовать утилиту udevadm.

Чтобы отобразить полученные события ядра (uevents) и события udev (которые udev отправляет после обработки правила), запустите udevadm с командой monitor. Затем подключите устройство к вашей системе и наблюдайте с терминала, как обрабатывается событие устройства.

На следующем снимке экрана показан фрагмент события ADD после подключения USB-накопителя к тестовой системе:

udev linux что это. Смотреть фото udev linux что это. Смотреть картинку udev linux что это. Картинка про udev linux что это. Фото udev linux что это

Чтобы узнать имя, присвоенное вашему USB-диску, используйте утилиту lsblk, которая считывает файловую систему sysfs и udev db для сбора информации об обрабатываемых устройствах.

udev linux что это. Смотреть фото udev linux что это. Смотреть картинку udev linux что это. Картинка про udev linux что это. Фото udev linux что это

Исходя из вывода предыдущей команды, USB-диск называется sdb4 (абсолютный путь должен быть /dev/sdb4). Чтобы запросить атрибуты устройства из базы данных udev, используйте команду info.

udev linux что это. Смотреть фото udev linux что это. Смотреть картинку udev linux что это. Картинка про udev linux что это. Фото udev linux что это

Как работать с правилами Udev в Linux

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

Мы напишем простое правило для запуска скрипта при добавлении USB-устройства и его удалении из работающей системы.

Начнём с создания двух скриптов:

Добавьте следующие строки в скрипт device_added.sh.

Откройте второй скрипт.

Затем добавьте следующие строки в скрипт device_removed.sh.

Сохраните файлы, закройте и сделайте оба сценария исполняемыми.

Затем давайте создадим правило для запуска выполнения вышеуказанных сценариев, которое называется /etc/udev/rules.d/80-test.rules.

Добавьте в него эти два следующих правила.

Сохраните файл и закройте его. Затем от имени пользователя root скажите systemd-udevd перезагрузить файлы правил (это также перезагрузит другие базы данных, такие как индекс модуля ядра), для этого выполните:

Теперь подключите USB-накопитель к своей машине и проверьте, был ли выполнен скрипт device_added.sh. Прежде всего, файл scripts.log должен быть создан в /tmp.

Проверьте журнал сценариев после добавления USB

Затем в файле должна быть запись типа «USB device added at ВРЕМЯ».

Для получения дополнительной информации о том, как писать правила udev и управлять udev, обратитесь к записям руководства udev и udevadm соответственно, запустив:

Резюме

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

Источник

udev (Русский)

udev — работающая в пространстве пользователя система, с помощью которой системный администратор может создавать обработчики событий. События, получаемые udev, обычно генерируются ядром Linux в ответ на физические события, происходящие с периферийными устройствами. Например, при обнаружении периферийных устройств или «горячем» подключении udev может выполнить определённые действия, в том числе и вернуть управление ядру, если необходима загрузка модулей или прошивок.

Contents

Установка

О правилах udev

Пример правила udev

Если вы намереваетесь создать правило, которое делает что-нибудь при удалении устройства, имейте в виду, что атрибуты устройства могут стать недоступны. В этом случае вам необходимо использовать специальный набор переменных окружения. Чтобы отобразить эти переменные, выполните следующую команду при отсоединении устройства:

Список атрибутов устройства

Чтобы вывести все атрибуты устройства, которые вы можете использовать в написании правил udev, выполните:

Если вы не знаете имя файла устройства, вы можете также вывести все атрибуты по конкретному системному пути:

Чтобы сузить поле поиска, определите класс устройства и выполните:

Проверка правил перед загрузкой

Вы можете также указать прямой системный путь до устройства:

Загрузка новых правил

Если правила не перезагружаются автоматически, выполните:

Чтобы вручную заставить udev применить ваши правила, выполните:

udisks

Советы и рекомендации

Монтирование съёмных устройств

Есть несколько возможных решений:

Доступ к программаторам и виртуальным COM-портам

Идентификаторы производителя и изделия для других устройств можно узнать с помощью утилиты lsusb.

Выполнение команд при подключении VGA-монитора

Создайте правило /etc/udev/rules.d/95-monitor-hotplug.rules со следующим содержимым, чтобы запускать arandr при каждом подключении VGA-монитора:

Определение новых накопителей eSATA

Если ваш накопитель eSATA не был определен системой при подключении, вы можете перезагрузить систему, не отключая кабель устройства, либо, если перезагрузка нежелательна, выполнить:

Еще один вариант заключается в использовании утилиты scsiadd AUR из AUR:

до и после вышеприведенных команд и посмотреть, происходит ли что-нибудь.

Определение внутренних портов SATA как внешних

Если вы подключили eSATA-адаптер, система все еще будет распоздавать его как внутренний SATA-накопитель. GNOME и KDE будут постоянно запрашивать пароль администратора. Следующее правило помечает все указанные SATA-порты как порты eSATA, благодаря чему обычные пользователи смогут подключать свой накопитель eSATA к этому порту как USB-накопитель без запроса пароля администратора:

Установка постоянных имен устройств

Из-за асинхронного способа загрузки модулей, они инициализируются в разном порядке от загрузки к загрузке. Это приводит к случайному переименованию устройств при каждом запуске. Чтобы задать постоянные имена вашим устройствам, можно создать специальное правило udev.

В статье Persistent block device naming описано, как задать постоянные имена для блочных устройств, а в Настройка сети#Смена имени интерфейса — для сетевых интерфейсов.

Видеоустройства

Процедура установки веб-камеры описана в статье Webcam setup.

Принтеры

Определение диска по серийному номеру

Пробуждение при активности USB-устройства

С помощью правила udev можно настроить систему выходить из режима сна при активности USB-устройств, например, мыши или клавиатуры.

Первым делом определите идентификаторы производителя и изделия для вашего устройства:

Затем найдите, куда данное устройство подключено:

Наконец, создайте правило, которое при подключении будет изменять атрибут power/wakeup как для устройства, так и для USB-контроллера, к которому оно подключено:

Генерирование событий

Может быть полезно сгенерировать различные события udev. Например, вы хотите симулировать отключение USB-устройства на удалённой машине. В таких случаях, используйте udevadm trigger :

Уведомления на рабочем столе

1) Следующее правило udev запускает сценарий, создающий графическое и звуковое уведомление, когда яркость экрана меняется в зависимости от способа питания ноутбука:

2) Содержимое сценария, который запускается правилом udev:

3) Загрузите/перезагрузите новое правило udev и проверьте, как оно работает, выдернув или подключив кабель питания ноутбука.

Создание долгосрочных процессов

Программы, запущенные udev, блокируют последующие события от данного устройства, а любые процессы, порождённые правилом udev, завершаются сразу после обработки события. Если вы хотите запустить долгосрочный процесс с помощью udev, то либо используйте at (например, ваша_команда | at now или batch ), либо создайте юнит systemd, который можно запустить из правила udev.

Решение проблем

Добавление модулей в черный список

Иногда udev может ошибочно загружать неправильные модули ядра. Чтобы избежать этого, добавьте такие модули в чёрный список. Если модуль находится в чёрном списке, udev будет игнорировать его как при загрузке, так и при более позднем «горячем» подключении внешнего устройства (например, USB-носителя).

Отладочная печать

Чтобы добавить эту опцию в initramfs, укажите файл настроек udev в строке FILES

после чего сгенерируйте initramfs.

udevd вылетает при загрузке

После миграции на LDAP или обновления системы, использующей LDAP, udevd может начать аварийно завершаться в момент загрузки системы с сообщением «Starting UDev Daemon». Обычно это происходит потому, что udevd пытается определить имя через LDAP, но не может, так как в этот момент еще не установлено подключение к сети.

Необходимо, чтобы все используемые в LDAP группы были продублированы локально. Получить имена групп, используемых в правилах udev, и имена групп, присутствующих в системе, можно командами:

В данном примере группа pcscd по какой-то причине отсутствует в системе. Все такие группы необходимо добавить в систему. Также убедитесь, что имена всех локальных ресурсов разрешены, прежде чем возвращаться к LDAP. Файл /etc/nsswitch.conf должен содержать следующую строку:

Устройство является съемным, однако не признается таковым

Теперь создайте файл правила в /etc/udev/rules.d/ и установите переменные либо для udisks, либо для udisks2.

Проблемы с автоматической загрузкой модулей аудиоустройств

Поддержка дисководов IDE

Оптические дисководы имеют неверный group ID

Источник

Как использовать Udev для обнаружения и управления устройствами в Linux

Udev (userpace / dev) – подсистема Linux для динамического обнаружения и управления устройствами, начиная с версии 2.6.

Это замена devfs и hotplug.

Он динамически создает или удаляет узлы устройства (интерфейс к драйверу устройства, который отображается в файловой системе, как если бы это был обычный файл, хранящийся в каталоге /dev) во время загрузки, или если вы добавляете устройство или удаляете устройство из система.

Затем он распространяет информацию об устройстве или изменяет его состояние на пользовательское пространство.

Это функция: 1) предоставлять системные приложения событиям устройств, 2) управлять разрешениями узлов устройств и 3) создавать полезные символические ссылки в каталоге /dev для доступа к устройствам или даже переименовывать сетевые интерфейсы.

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

Эта функция полезна, потому что ядро ​​просто назначает непредсказуемые имена устройств в зависимости от порядка обнаружения.

В этой статье мы узнаем, как использовать Udev для обнаружения и управления устройствами в системах Linux.

Обратите внимание, что большинство, если не все распространенные современные дистрибутивы Linux, поставляются с Udev как часть стандартной установки.

Изучаем основы Udev в Linux

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

Udev основан на правилах – эти правила гибкие и очень мощные.

Каждое событие принятого устройства сопоставляется с набором правил, считанных из файлов, расположенных в /lib/udev/rules.d и /run/udev/rules.d.

Обратите внимание, что файлы правил в этом каталоге имеют наивысший приоритет.

Чтобы создать файл узла устройства, udev необходимо идентифицировать устройство с использованием определенных атрибутов, таких как метка, серийный номер, его основной и младший номер, номер устройства шины и многое другое. Эта информация экспортируется файловой системой sysfs.

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

Основным конфигурационным файлом для udev является /etc/udev/udev.conf, а для управления временем выполнения – демон udev, вы можете использовать утилиту udevadm.

Чтобы отобразить полученные события ядра (uevents) и udev события (которые udev отправляет после обработки правила), запустите udevadm с помощью команды monitor. Затем подключите устройство к вашей системе и наблюдайте с терминала, как обрабатывается событие устройства.

На следующем снимке экрана показан фрагмент события ADD после подключения флэш-диска USB к тестовой системе:

Чтобы найти имя, назначенное на ваш USB-диск, используйте утилиту lsblk, которая считывает файловую систему sysfs и udev db для сбора информации о обработанных устройствах.

На выводе предыдущей команды USB-диск называется sdb1 (абсолютный путь должен быть /dev/sdb1).

Чтобы запросить атрибуты устройства из базы данных udev, используйте команду info.

Как работать с правилами Udev в Linux

В этом разделе мы кратко обсудим, как писать правила udev.

Правило содержит список разделенных запятыми одной или нескольких пар ключ-значение.

Правила позволяют переименовывать узел устройства c имени по умолчанию, изменять разрешения и владение узлом устройства, запускать выполнение программы или скрипта, когда узел устройства создается или удаляется/

Мы напишем простое правило для запуска сrhbgnf при добавлении USB-устройства и его удалении из запущенной системы.

Начнем с создания двух скриптов:

Добавьте следующие строки в скрипт device_added.sh.

Откройте второй скрипт.

Затем добавьте следующие строки в script_removed.sh.

Сохраните файлы, закройте и сделайте оба скрипта исполняемыми.

Затем давайте создадим правило для запуска выполнения вышеуказанных скриптов, называемое /etc/udev/rules.d/80-test.rules.

Добавьте в него следующие два правила.

Сохраните файл и закройте его.

Затем, от пользователя root, скажите systemd-udevd перезагрузить файлы правил (это также перезагружает другие базы данных, такие как индекс модуля ядра), запустив.

Теперь подключите USB-накопитель к компьютеру и проверьте, был ли запущен скрипт device_added.sh.

Прежде всего файл scripts.log должен быть создан в /tmp.

Затем файл должен иметь запись, такую как «USB device removed at date_time”»

Для получения дополнительной информации о том, как писать правила udev и управлять udev, обратитесь к руководству udev и udevadm соответственно, выполнив:

Источник

Файловая система udev («юдев») появилась в ядрах версии 2.6 заместо DevFS («дев фс»)

udev позволяет назначать постоянные имена для устройств. Например, можно создать правило для монтирования жесткого диска производителем которого является «iRiver» с кодом устройства «ABC», как устройство /dev/iriver. Постоянность в названии устройств гарантирует, что все скрипты, зависящие от присутствия в системе определённых устройств, будут работать правильно.

Обзор

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

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

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

Правила

пример соответствия (match): BUS=="usb"

пример действия (action): NAME="mydev"

действия (action) вида key+=»value» добавляются к существующим. Например, SYMLINK+="foo" означает, что в дополнение к любым другим symlinks («симлинкс»), которые должны быть выполнены для данного события, также следует выполнить foo. («фуу»)

Множество правил

В этом пространстве имеется возможность создавать метки и с их помощью пропускать некоторое количество правил, в зависимости от условия. Это осуществляется с помощью действия («action») GOTO

Существуют средства для динамического создания правил. Пример смотрите z45_persistent-net-generator.rules

Чёрные списки

Постоянное имя устройства

В данном примере, мы дадим постоянное имя для 3G модема.

1. Подсоедините устройство. 2. Выполните следующую команду на соответствующем устройстве:

3. Создайте файл в /etc/udev/rules.d и назовите его z21_persistent-local.rules.

4. Перезапустите скрипты (или выполните перезагрузку ; )

Источник

udev/ru

Warning: Display title «udev/ru» overrides earlier display title «udev».

Not to be confused with eudev.

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

Contents

Что такое udev?

Каталог /dev

Большинство пользователей Linux знают, что /dev/sda1 это простой способ сослаться на первый раздел на первом, обнаруженным ядром, диске. Это довольно просто, не так ли?

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

Обзор диспетчера устройств. Современный диспетчер устройств (включая udev и eudev ) должен уметь:

Установка

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

USE-флаги

Portage знает о глобальном udev USE-флаге для включения поддержки udev в остальных пакетах. Добавьте этот USE-флаг в список USE-флагов (он включен по умолчанию для всех Linux профилях) приведет к тому, что пакет sys-fs/udev автоматически установится:

USE flags for sys-fs/udev Linux dynamic and persistent device naming support (aka userspace devfs)

aclAdd support for Access Control Lists
kmodEnable kernel module loading/unloading support using sys-apps/kmod
selinux!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
split-usrEnable behavior to support maintaining /bin, /lib*, /sbin and /usr/sbin separately from /usr/bin and /usr/lib*
testEnable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)

Emerge

После настройки USE-флагов обновите систему, чтобы изменения вступили в силу:

Конфигурация

Запуск как сервис

Чтобы запустить udev при загрузке, добавьте его к уровню запуска sysinit. Это может быть сделано при помощи следующей команды, если она запущена с привилегиями root пользователя:

Расширенная конфигурация

Правила

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

Определения правил сохраняются в двух местах:

Выражения проверяются на совпадение на основании следующей информации:

На основании этой информации, правило может сделать следующее:

Udev делает эти действия для каждого правила, для которого находит соответствие (он не останавливается после первого совпадения), позволяя организовать гибкий подход к управлению устройствами.

Постоянные имена устройств

Ядро определяет устройства асинхронно, а udev зеркалирует файловую систему sysfs ядра так, чтобы устройствам были даны названия и номера в порядке их определения. Так что, по умолчанию udev не дает постоянных имен устройств. Однако существуют механизмы для того, чтобы этого добиться (для некоторых классов устройств).

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *