Существуют ли альтернативы использованию `udev`?

Хотя я понимаю величие udev и ценю усилия разработчиков, я просто задавался вопросом, есть ли альтернатива этому.

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

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

4 Solutions collect form web for “Существуют ли альтернативы использованию `udev`?”

Существуют различные альтернативы udev . Похоже, Gentoo может использовать что-то, называемое mdev . Другой вариант – попытаться использовать devfsd предшественника devfsd . Наконец, вы всегда можете создать все файлы устройств, которые вам нужны, с mknod .

Обратите внимание, что с последним нет необходимости создавать все во время загрузки, так как узлы могут быть созданы на диске, а не во временной файловой системе, как с другими параметрами. Конечно, вы теряете гибкость при наличии динамически созданных файлов устройств при подключении нового оборудования (например, USB-накопителя). Я считаю, что стандартный подход в эту эпоху состоял в том, чтобы каждый файл устройства, который вы могли бы разумно нуждаться, уже был создан в /dev (т. Е. Много файлов устройств).

Конечно, трудно получить какой-либо из этих подходов к работе в современном дистрибутиве, вероятно, довольно высоко. В вики Gentoo упоминаются трудности с получением mdev для работы с рабочей средой (не говоря уже о Gentoo). Последняя devfsd была в 2002 году, я понятия не имею, будет ли она вообще работать с современными ядрами. Создание узлов вручную, вероятно, является наиболее жизнеспособным подходом, но даже отключение udev может стать проблемой, особенно в distos с использованием systemd (теперь udev является частью systemd , что предполагает сильную зависимость).

Мой совет – придерживаться udev 😉

Современные ядра Linux поддерживают файловую систему devtmpfs (не путайте с древними devfs ) , которая динамически создает все узлы устройства, как только ядро ​​их обнаруживает. (Фактически, последние выпуски udev требуют этого, вы обнаружите, что udev больше не создает никаких узлов устройства, а только символические ссылки.)

Точно так же загрузка прошивки была перенесена в ядро, поэтому единственными оставшимися задачами udev являются загрузка модулей (в соответствии с modaliases) и применение разрешений устройств и других правил udev.

Поэтому теоретически полностью монолитное ядро ​​должно загружаться просто отлично без udev.

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

  1. Довольно много пользовательских программ полагаются на udev, поддерживая базу данных своего устройства, доступную через libudev . Хотя перечисление устройств и прослушивание добавленных / удаленных событий можно было выполнить напрямую с использованием интерфейсов ядра (sysfs и netlink), вы все равно останетесь без всех метаданных, которые были связаны с различными правилами udev.

  2. Правила udev также поддерживают различные «постоянные» символические ссылки в /dev/disk/by-* , /dev/mapper , /dev/input/by-path , /dev/snd/by-path и т. д. Например, если у вас есть два подключенных диска, нет гарантии, что первый из них всегда будет sda или sdb , но udev гарантирует, что символические ссылки в /dev/disk/by-uuid будут продолжать указывать на правый.

  3. Хотя узлы устройств теперь создаются ядром и, следовательно, не являются вашей проблемой, все же важно отметить, что некоторые типы устройств начали использовать динамически назначенные основные / младшие номера, поэтому даже если у вас есть /dev/fuse как 10,228 и /dev/hpet как 10 229 сегодня, после каждой перезагрузки они будут иметь разные номера, поэтому либо devtmpfs либо (в старых системах) требуется программа, которая слушает uevents.

mdev , многие из этих вещей могут быть легко выполнены другими программами, такими как mdev . Я /etc/MAKEDEV что статический сценарий /etc/MAKEDEV больше не будет работать …


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

Udev? Лучшая альтернатива – не использовать его. И, научившись не использовать его, Linux и мир * NIX станут более логичным.

Лучшей долгосрочной альтернативой является использование статических устройств (см. Примечание). Если у вас есть драйвер, ядро ​​Linux управляет горячим подключением. Я предпочитаю, чтобы у меня не было udevd.

dbus – другое дело. Это замедляет работу вашей системы, но постоянно меняющийся мир сценаристов любит ее. Таким образом, многие вещи, к которым вы привыкли, например веб-браузеры или приложения со сценариями, должны быть исправлены (запущены или перестроены без этого материала или сбрасываются для другого приложения).

Примечание. Если вы просто подключаете флеш-накопитель или устройство dvd, используйте dmesg|tail чтобы увидеть имя устройства для монтирования. Изучение, когда устройство является символом или блочным устройством, является фундаментальным системным знанием в мире компьютерной техники. В Linux это с открытым исходным кодом, проверьте это много о Linux, а не только встраиваемом . Это лучшее для более широкого понимания прямой логики (а не философии) всех * NIX, таких как Linux (Solaris, HPUX, AIX и т. Д.).

Udev, dbus, gconf / dconf, systemd, gnome-shell, Gnome, Glib, mono и Fedora предназначены для людей с большим количеством времени на руках, которые не могут RTFM или хотят, чтобы автоматически обновлялся действительно гладкий (смотрящий), но медленный чем меласса, багги, на полпути – там Linux. (Поистине ужасное место, посмотрите вокруг Интернета на тонны подобных впечатлений).

Затем система загружается с помощью udevd. Но, как утверждается, udev необходим, потому что незначительные номера устройства will change при перезагрузке. Разумеется, разум Удева противоречит себе на каждом шагу. И там, где это файлы, кажется, всегда неправильно, независимо от того, с кем вы консультируетесь. Не доверяйте и не освобождайте рабочий стол.

Кроме того, udev поглощается тем ужасом, который известен как systemd, я не знаю, что он делает с помощью j / etc / udev junk. И глупо говорить, что писать правила udev как-то лучше всего. Люди gentoo, похоже, хотят висеть на нем и не должны иметь systemd, поэтому они разветвили его на eudev.

Если вы хотите смехотворно быстро, без неприятных систем сюрпризов, используйте основы Linux.

Существует несколько альтернатив:

  • Просто используйте набор соответствующих команд chmod , chown , ln и подобных скриптов, которые запускаются как часть начальной загрузки.
  • Используйте systemd-udev , менеджер plug-and-play, который является частью проекта systemd.
  • Используйте eudev от Gentoo , который является развилкой systemd-udev из которой система теперь значительно расходится.
  • Используйте vdev от vdev , который является менеджером plug-and-play, разработанным Джудом Нельсоном, который является частью Devuan.
  • Используйте mdev , который вопреки другому ответу не является предметом Gentoo. Это менеджер подключаемых модулей, встроенный в BusyBox .
  • Используйте Suckless mdev который является менеджером plug-and-play от людей Suckless.

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

Существуют также инструменты, которые будут принимать программы, предназначенные для /proc/sys/kernel/hotplug , такие как два mdev s, и которые будут адаптировать и сериализовать их, прослушивая сокет netlink и затем создавая эти программы:

  • Лорен Беркот s6-netlink-listener и s6-uevent-spawner
  • netlink-datagram-socket-listen и plug-and-play-event-handler из набора инструментов nosh
  • udev правило включить подсветку клавиатуры
  • Как подождать обнаруженные объемы LVM?
  • udev Не удается переименовать сетевое устройство: устройство или ресурс занят
  • Вызывают ли дублирующие правила udev в разных файлах какие-либо проблемы?
  • Udev: переименование моего сетевого интерфейса
  • Как получить дополнительную информацию об этом устройстве?
  • Правило Удева не работает над Debian
  • Повторный заказ последовательных портов на многопортовой карте
  • Файл правила Udev для модема не работает
  • Триггеры Udev не запускают вставку CF-карты в устройство чтения карт USB (больше)
  • Использование USB-интерметателя через Android-телефон
  • Interesting Posts

    Требование пароля для всех файлов с указанным расширением

    добавление консоли в GDM

    Возможно отменена последняя команда?

    Сообщение о нарушениях Seccomp

    Как сокращать / путь / в / файл в / p / t / файл

    Возможно ли использовать параметр в команде alias

    Установка графических драйверов на ubuntu

    Разница в правильной конфигурации для Windows UART VS Linux UART

    Не удается разрешить имена, но может пинговать адреса при подключении к маршрутизатору IPV4, все работает отлично с маршрутизатором IPV6

    / usr / sbin / sendmail: разрешение отклонено

    Подключите все подключенные диски к их соответствующим точкам подключения

    Извлечение одного файла из tar в другую папку

    Изменение свойств X-объекта Zombie из состояния Iconic в нормальное состояние

    Заменить номер CD в теге MP3 ID3

    Совершенно новый для Linux – запуск сервера веб-сервера / базы данных, необходимо подключиться к моим серверам – как?

    Linux и Unix - лучшая ОС в мире.