Udev

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 1 de febrero de 2019; las comprobaciones requieren 7 ediciones .
udev
Tipo de nodo de dispositivo
Desarrollador Greg Kroah-Hartman y Kay Sievers
Escrito en DE
Sistema operativo Linux (núcleo)
Primera edición noviembre de 2003
ultima versión 251 ( 21 de mayo de 2022 ) [1]
Licencia GPL v2
Sitio web git.kernel.org/?p=linux/…

udev  : gestión de dispositivos para nuevas versiones del kernel de Linux , sucesor de devfs , hotplug y HAL . Su tarea principal es servir a los nodos del dispositivo en el directorio /  dev y manejar todas las acciones realizadas en el espacio del usuario al agregar/eliminar dispositivos externos, incluida la carga de firmware .

Historia

udev se agregó en Linux 2.5.

Se introdujo y actualizó una nueva interfaz de uevent en el kernel de Linux 2.6.13 . El nuevo udev no funcionará en kernels anteriores a 2.6.13.

En abril de 2012, el código fuente de udev se fusionó con el código fuente de systemd [2] .

El proyecto eudev (una bifurcación de udev de Gentoo ) ha comenzado oficialmente como reemplazo de Systemd-udevd. En la última conferencia FOSDEM 2013, los desarrolladores de eudev dejaron claro que eudev “es un proyecto puramente educativo para ellos” y que “su código en su estado actual de ninguna manera debe considerarse listo para la producción” [1] .

Descripción

Gracias a udev, el directorio /dev solo contiene archivos para dispositivos que están actualmente conectados al sistema. Cada dispositivo tiene su propio archivo correspondiente. Si el dispositivo se desconecta del sistema, este archivo se elimina. El contenido del directorio /dev se almacena en un sistema de archivos virtual y todos los archivos que contiene se crean cada vez que se inicia el sistema. Los archivos modificados o creados manualmente no se guardan después de reiniciar. Los archivos y directorios que deben conservarse o que siempre deben estar presentes en el directorio /dev, independientemente del estado del dispositivo respectivo, deben colocarse en el directorio /lib/udev/devices. Al iniciar el sistema, el contenido de este directorio se copia a /dev tal cual (con los mismos permisos).

Por lo tanto, a diferencia del esquema tradicional de administración de directorios /dev de Unix , donde su contenido era un conjunto inmutable de archivos, udev proporciona una administración dinámica de los dispositivos que están realmente en el sistema. Aunque devfs solía proporcionar esta funcionalidad , los defensores de udev destacan las siguientes ventajas de su solución [3] :

Cómo funciona

udev se ejecuta como un demonio y recibe uevents del núcleo a través del socket netlink, que se generan cuando el dispositivo se inicializa o se elimina del sistema. Las reglas (del sistema) definidas por el usuario se comparan con las propiedades del evento y el dispositivo correspondiente, y la regla coincidente (de las cuales puede haber más de una) puede nombrar y crear el archivo del dispositivo correspondiente, así como ejecutar otros programas para inicializar y configurar el dispositivo. Por ejemplo, de esta forma puede implementar el montaje automático de unidades externas cuando están conectadas.

Las reglas se pueden comparar con propiedades como el subsistema del kernel específico, el nombre del dispositivo en el kernel, la ubicación física del dispositivo o el número de serie del dispositivo. Las reglas también pueden consultar información utilizando otros programas o especificar que el nombre del dispositivo siempre será el mismo, independientemente del orden en que el sistema detecte los dispositivos.

Una forma típica de usar udev en un sistema Linux es permitir que se envíen eventos HAL o DeviceKit para que realicen acciones posteriores específicas del dispositivo. Por ejemplo, HAL/DeviceKit puede notificar a otros programas de un nuevo dispositivo mediante un mensaje de difusión D-Bus . Por lo tanto, los entornos de escritorio como GNOME o KDE pueden montar automáticamente la unidad USB y abrir un administrador de archivos para ver su contenido.

Arquitectura

udev se divide en tres partes:

udev recibe eventos del kernel a través de un socket de enlace de red. Las primeras versiones usaban hotplug al agregarlo a /etc/hotplug.d/default .

Notas

  1. systemd v251 .
  2. Sievers, Kay, Commit importing udev into systemd , < http://cgit.freedesktop.org/systemd/systemd/commit/?id=19c5f19d69bb5f520fa7213239490c55de06d99d > . Consultado el 25 de mayo de 2012. Archivado desde el original el 8 de julio de 2012. 
  3. アーカイブされたコピー. Consultado el 10 de mayo de 2014. Archivado desde el original el 11 de abril de 2011.

Enlaces