Hay varias alternativas a udev
por ahí. Aparentemente, Gentoo puede usar algo llamado mdev
. Otra opción sería intentar usar udev
el predecesor devfsd
. Finalmente, siempre puede crear todos los archivos de dispositivo que necesita mknod
.
Tenga en cuenta que con este último no hay necesidad de crear todo en el momento del arranque ya que los nodos se pueden crear en el disco y no en un sistema de archivos temporal como con las otras opciones. Por supuesto, pierde la flexibilidad de haber creado dinámicamente archivos de dispositivo cuando se conecta un nuevo hardware (por ejemplo, una memoria USB). Creo que el enfoque estándar en esta era era tener todos los archivos de dispositivos que podría necesitar razonablemente creados /dev
(es decir, muchos archivos de dispositivos).
Por supuesto, la dificultad de lograr que cualquiera de estos enfoques funcione en una distribución moderna es probablemente bastante alta. La wiki de Gentoo menciona dificultades mdev
para trabajar con un entorno de escritorio (y mucho menos fuera de Gentoo). La última devfsd
versión fue 2002, no tengo idea si funcionará con los núcleos modernos. La creación de los nodos manualmente es probablemente el enfoque más viable, pero incluso la desactivación udev
podría ser un desafío, particularmente en el uso de distos systemd
( udev
ahora es parte de systemd
, lo que sugiere una fuerte dependencia).
Mi consejo es seguir udev
;)
udev
debería funcionar perfectamente bien sinsystemd
que ambos se desarrollen dentro de la misma base de código, peroudev
se pueden construir + ejecutar independientemente de él.udev
ha existido por mucho más tiempo que desystemd
todos modos. La pregunta es, ¿puedesystemd
trabajar sin éludev
? Supongo que al menos tendría que volver a compilar con algún tipo de--without-udev
opción.Los núcleos modernos de Linux son compatibles con el
devtmpfs
sistema de archivos (no confunda con los antiguosdevfs
) , que crea todos los nodos de dispositivos dinámicamente tan pronto como el núcleo los descubre. (De hecho, las últimasudev
versiones requieren esto; encontrará que udev ya no crea ningún nodo de dispositivo, solo enlaces simbólicos).Del mismo modo, la carga de firmware también se ha trasladado al kernel, por lo que las únicas tareas restantes
udev
son la carga de módulos (según las modalidades) y la aplicación de permisos de dispositivos y otras reglas de udev.Entonces, en teoría, un núcleo completamente monolítico debería arrancar bien sin udev.
Sin embargo, el verdadero problema aquí es lo que sucede más tarde.
Muchos programas de espacio de usuario confían en que udev mantenga su base de datos de dispositivos, accesible a través de
libudev
. Si bien la enumeración de dispositivos y la escucha de eventos agregados / eliminados se pueden hacer directamente utilizando las interfaces del kernel (sysfs y netlink), aún se quedará sin todos los metadatos que varias reglas de udev han adjuntado.udev reglas también mantienen varios enlaces simbólicos "persistentes" en
/dev/disk/by-*
,/dev/mapper
,/dev/input/by-path
,/dev/snd/by-path
, y así sucesivamente. Por ejemplo, si tiene dos discos conectados, no hay garantía de que el primero siempre seasda
osdb
, pero udev asegura que los enlaces simbólicos/dev/disk/by-uuid
continuarán apuntando al correcto.Si bien los núcleos de dispositivos ahora son creados por el kernel y, por lo tanto, ya no son de su incumbencia, es importante tener en cuenta que algunos tipos de dispositivos han comenzado a usar números mayores / menores asignados dinámicamente, por lo que aunque tenga 10,228
/dev/fuse
y/dev/hpet
10,229 hoy, lo harán tener números diferentes después de cada reinicio, por lo quedevtmpfs
o bien (en sistemas más antiguos) se requiere un programa que escuche eventos .Muchas de estas cosas podrían ser fácilmente realizadas por otros programas como
mdev
, por supuesto. Mi punto es que un/etc/MAKEDEV
script estático ya no funcionará ...Entonces, básicamente, cuando se trata de la complejidad del arranque, udev es probablemente la menor de sus preocupaciones.
fuente
Hay varias alternativas:
chmod
,chown
,ln
, y cosas por el estilo comandos en un script que se ejecuta como parte de la rutina de carga.systemd-udev
, el administrador plug-and-play que forma parte del proyecto systemd.eudev
, que es una bifurcación de lasystemd-udev
que systemd ahora se ha desviado significativamente.vdev
, que es un administrador plug-and-play desarrollado por Jude Nelson, que es parte de Devuan.mdev
, que contrario a otra respuesta no es una cosa de Gentoo. Es el administrador plug-and-play integrado en BusyBox .mdev
que es un administrador plug-and-play desarrollado por Dimitris Papastamos.mdevd
, que es una configuración compatible con BusyBoxmdev
pero que maneja su propio socket y no comprende el protocolo LISTEN.Todos estos, aparte del primero, requieren conjuntos de reglas que describen cómo reaccionar ante los eventos de notificación del núcleo sobre los dispositivos. Obviamente.
También hay herramientas que tomarán programas diseñados para
/proc/sys/kernel/hotplug
, como los dosmdev
s, y que los adaptarán y serializarán al escuchar un socket de enlace de red y luego generar esos programas:s6-netlink-listener
ys6-uevent-spawner
netlink-datagram-socket-listen
yplug-and-play-event-handler
del conjunto de herramientas noshfuente
udev? La mejor alternativa es no usarlo. Y al aprender a no usarlo, Linux y el mundo * NIX comenzarán a tener un sentido más lógico.
La mejor alternativa a largo plazo es usar dispositivos estáticos (ver nota). Si tiene el controlador, el kernel de Linux gestiona la conexión en caliente. Prefiero no tener udevd funcionando, nunca.
dbus es otro asunto. Sí ralentiza su sistema, pero al mundo en constante cambio de los guionistas les encanta. Por lo tanto, muchas cosas a las que está acostumbrado, como los navegadores web o las aplicaciones con backends de script, deben repararse (iniciarse o reconstruirse sin esas cosas o volcarse para otra aplicación).
Nota: Si solo está conectando una unidad flash o un dispositivo de DVD, use
dmesg|tail
para ver el nombre del dispositivo a montar. Aprender cuando un dispositivo es un personaje o un dispositivo de bloque es un conocimiento fundamental del sistema en el mundo del hardware informático. En Linux es de código abierto, mira esto mucho sobre Linux, no solo incrustado . Es lo mejor para una comprensión más amplia de la lógica directa (no filosofía) de todos los * NIX, como Linux (Solaris, HPUX, AIX, etc.).Udev, dbus, gconf / dconf, systemd, gnome-shell, Gnome, Glib, mono y Fedora son para personas con mucho tiempo en sus manos que no pueden RTFM, o que desean una actualización automática realmente ingeniosa pero más lenta que melaza, buggy, a mitad de camino Linux. (Un lugar realmente horrible, busca toneladas de experiencias similares en la web).
El sistema arranca y luego ejecuta udevd. Pero, se afirma que udev es necesario porque, los números menores del dispositivo
will change
al reiniciar. La razón de ser de Udev parece contradecirse a cada paso. Y dónde están los archivos parece estar siempre mal, sin importar a quién consultes. No confíes en freedesktop.org.Además de que udev está siendo absorbido por ese horror conocido como systemd, no sé qué se hace con los / etc / udev junk entonces. Y, es fatuo decir que escribir reglas udev es de alguna manera mejor que nada. La gente de gentoo parece querer aferrarse a él y no tener que tener systemd, por lo que se lo han bifurcado a eudev.
Si desea un sistema ridículamente rápido y sin sorpresas desagradables, use los conceptos básicos de Linux.
fuente
udev
funcionalidad. También está bien señalar las fortalezas de este enfoque alternativo .