eudev
eudev — форк от Gentoo udev, менеджер файлов устройств из systemd для ядра Linux[1] для конфигураций, не использующих systemd. Он управляет файлами устройств в каталоге /dev и обрабатывает все пользовательские действия добавления и удаления устройств.
eudev создан с целью предоставить лучшую совместимость с существующим программным обеспечением, таким, как OpenRC, Upstart, старые версии ядра, различные тулчейны и другие сущности[2] , требующие для работы udev, но плохо поддерживаемые им.
Также как ebuild, eclass, emerge и так далее, название eudev начинается с 'E'. Такое именование начато основателем Gentoo - Daniel Robbins.
Настройки системы, работающие в systemd, не используются eudev.
Каталог /dev
Большинство пользователей Linux знают, что /dev/sda1 это простой способ сослаться на первый раздел на первом, обнаруженным ядром, диске. Это довольно просто, не так ли?
Представим себе устройства «горячей замены» вроде USB, IEEE 1394, PCI с возможностью горячей замены и так далее. Какое из них является первым по счету? Надолго ли? Как изменятся названия других устройств, если первое отключить? Как это повлияет на текущие операции? Было бы забавно, если бы задание печати вдруг переключалось с вашего супер навороченного лазерного принтера на старый полудохлый матричный принтер из-за того, что кто-то решил выдернуть разъем лазерного принтера, который, по счастью, оказался первым принтером?
- запуск в пользовательском пространстве.
- динамически создавать и удалять файлы устройств.
- предоставлять согласованное назначение имен устройств.
- предоставлять (API) для программ работающих в пространстве пользователя.
Каждая раз, когда в структуре устройств появляется изменение, ядро генерирует uevent, который ловится диспетчером устройств (eudev, udev). Затем диспетчер устройств следует правилам, которые определены в каталогах /etc/udev/rules.d, /run/udev/rules.d и /lib/udev/rules.d. На основании информации из uevent, он находит правило или правила, которые он должен вызвать, и выполняет необходимые действия. Эти действия могут заключаться в создании или удалении файлов устройств, но могут и загружать нужные файлы прошивки в память ядра.
Установка
USE-флаги
Некоторые пакеты используют udev
USE-флаг для включения интеграции с virtual/udev.
Emerge
Необходимо использовать параметр oneshot, чтобы не записывать пакет в набор world.
root #
emerge --ask --oneshot sys-fs/eudev
Конфигурация
RC-сервисы
RC-именем является udev, а не eudev. Оно должно быть зарегистрировано на уровне запуска sysinit.
root #
rc-update add udev sysinit
* rc-update: udev already installed in runlevel `sysinit'; skipping
Начиная с 29 версии sys-fs/udev-init-scripts, udev-trigger
также должен быть добавлен в уровень запуска sysinit.
Оставить классическое именование 'eth0'
This section is obsolete. See Udev#Optional: Disable_or_override_predictable_network_interface_naming for updated instructions.
Имена сетевых устройств, такие как eth0 или wlan0 и так далее, как предусмотрено ядром, обычно меняются во время загрузки системы (смотрите dmesg) с помощью /lib/udev/rules.d/80-net-name-slot.rules правила udev.
Чтобы сохранить классическое именование это правило может быть перезаписано пустым файлом с таким же именем в каталоге /etc/udev/rules.d:
root #
touch /etc/udev/rules.d/80-net-name-slot.rules
Также можно добавить net.ifnames=0
в командную строку ядра, изменить политику по умолчанию или добавить собственную.
Интересный ресурс на тему именования сетевых интерфейсов: страница I don't like this, how do I disable this на вики Freedesktop.
Устранение проблем
Использование udevadm
Запустите udevadm monitor и посмотрите, что происходит:
user $
udevadm monitor
Получите информацию об устройстве с помощью команды udevadm info, за которой следует путь к устройству:
user $
udevadm info -p /devices/pci0000:00/0000:00:1d.7
Получите путь к устройству, используя его имя:
user $
udevadm info -q path -n input/mouse1
/devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3.4/1-3.4:1.0/0003:046D:C404.0006/input/input24/mouse1
Проверьте событие с помощью команды udevadm test, за которой следует путь к устройству, для которого нужно проверить событие:
user $
udevadm test /devices/pci0000:00/0000:00:1d.7
Чтобы получить список всех команд udevadm:
user $
udevadm -h
Миграция со старых версий
С udev 171-r10 на eudev 1.2-r1
Смотрите этот пост на Gentoo форумах.
Система сломалась при миграции с udev на eudev
Смотрите этот пост на Gentoo форумах.
Смотрите также
- Udev — менеджер устройств из systemd для ядра Linux.
- Gentoo eudev Project — официальный проект Gentoo форка udev.
- Allow only known usb devices — describes how to protect a GNU/Linux system against rogue USB devices via a white listing policy.
- Google Summer of Code/2016/Ideas/Eudev
Внешние ресурсы
Ссылки
- ↑ Bug 575718 - Request for council decision RE virtual/udev default provider, Gentoo's Bugzilla Main Page, (Last modified) February 27th, 2016. Retrieved on March 1st, 2016.
- ↑ Project:Eudev, Gentoo Wiki, (Last modified) November 12th, 2015. Retrieved on March 11th, 2016.