Udev/es

udev es el gestor de dispositivos para el núcleo Linux. Gestiona los nodos de dispositivo en y también todos las acciones en espacio de usuario cuando se añaden o eliminan dispositivos. El lector debería también echar un vistazo a [Project:Eudev|eudev] una bifurcación de udev.

El directorio /dev
Cuando los usuarios de Linux hablan acerca del hardware de sus sistemas a gente que puede llegar a pensar que Linux es algún tipo de virus o marca de café, el uso de términos como "barra dev barra algo" provocará, sin dudas, miradas raras. Pero para el usuario afortunado (y esto incluye al lector de este artículo) el usar es solo una forma rápida de referenciar a la primera partición del disco primer disco SATA. Eso es muy fácil ¿no?

Most Linux users know what a device file is. Some even know why device files have special numbers. Take a close look at device list when ls -l is issued in the folder. What users take for granted is that the primary SATA disk is referred to as Some users might not see it this way, but this is a flaw by design.

Think about hotpluggable devices like USB, IEEE1394, hot-swappable PCI, etc. What is the first device? And for how long? What will the other devices be named when the first one disappears? How will that affect ongoing transactions? Wouldn't it be fun that a printing job is suddenly moved from a super-new laser printer to an almost-dead matrix printer because someone's mom decided to pull the plug of the laser printer which just so happened to be the first printer?

Entra en escena udev. Los objetivos del proyecto udev son a la vez interesantes y necesarios. Udev:


 * Corre en espacio de usuario
 * Crea y borra archivos de dispositivo dinámicamente
 * Proporciona nombres consistentes
 * Proporciona un interfaz de aplicación (API) en el espacio de usuario.

Every time a change happens within the device structure, the kernel emits a uevent which gets picked up by udev. udev then follows the rules as declared in the, and  directories. Based on the information contained within the uevent, it finds the rule or rules it needs to trigger and performs the required actions. These actions can be creating or deleting device files, but can also trigger the loading of particular firmware files into kernel memory.

Núcleo
udev necesita las siguientes opciones del núcleo:

Software
Portage knows the global USE flag  for enabling support for udev in other packages. Enabling this USE flag (default in all Linux profiles) will pull in automatically:

Después de definir esto, seguramente desee actualizar el sistema para que los cambios tengan efecto:

Servicio
Para arrancar udev en el inicio del sistema, añádalo al nivel de ejecución sysinit. Esto se puede hacer lanzando la siguiente orden con privilegios de root:

Reglas
udev provides a set of rules that match against exported values of uevents (events sent by the kernel) and properties of the discovered device. A matching rule will possibly name and create a device node and run configured programs to setup and configure the device.

The rule definitions are stored in two locations:


 * 1) . Las reglas en este directorio son instaladas por determinados paquetes, normalmente los usuarios no deberían cambiarlas.
 * 2) . Este directorio es para las reglas especificadas por los usuarios finales. Cualquier nueva regla se debe añadir en este directorio.

En estos directorios se recorren en orden alfabético múltiples ficheros de reglas (con el sufijo ), udev buscará expresiones que concuerden con un uevent y con el estado definido (es el uevent debido que se ha añadido o retirado un dispositivo) y la orden a ejecutar.

La concordancia del evento se basa en información como:


 * El SUBSYSTEM del uevent (para qué tipo de dispositivo se dispara el uevent).
 * La ACTION que se realiza (añadir, cambiar o eliminar).
 * Uno o más atributos (a través de ATTR o ATTRS), tales como la clase del dispositivo, el fabricante u otra información del dispositivo.
 * El nombre que ofrece el núcleo (a través de KERNEL), como sd* (para los discos SCSI/SATA) o input* (para dispositivos de entrada como ratones y teclados)
 * Uno o más ajustes de entorno (a través de ENV), utilizados para enviar información entre múltiples reglas.

Basándose en esta información, la regla puede entonces comprobar sí:


 * 1) Se necesita compartir alguna información con eventos posteriores (a través de variables de entorno)
 * 2) Se necesita crear enlaces en
 * 3) Se necesita lanzar alguna orden

Udev does this for every rule that matches (it does not stop after the first match) to allow a flexible device management approach.

Nombres persistentes de dispositivos
El núcleo detecta los dispositivos de forma asíncrona. Udev crea un reflejo del sistema de ficheros del núcleo sysfs y por lo tanto los dispositivos se nombran y numeran en el orden de su detección. Así, por defecto udev no ofrece nombres persistentes de los dispositivos. Sin embargo, existen mecanismos de algunas clases de dispositivo para ofrecerlos:


 * Udev creates for storage devices additional symlinks based on the device's ID, label, UUID and path. See the directory. So instead of using e.g. the device file  use the file.


 * Lo mismo aplica para los dispositivos de entrada en el directorio.


 * Using custom rules enables users to create their own device files.

Utilización
Algunas órdenes útiles son las siguientes:


 * Mostrar todos los mensajes sobre un determinado fichero de dispositivo: :


 * Monitorizar las actividades de udev:

Lea la página del manual de udevadm para más información.

Registrar mensajes del monitor
To log all message when udevadm monitor is ran modify the following configuration file:

It will create the new log file located at

Modo depuración
Habilitar el modo depuración permitirá mostrar más mensajes de registro:

Defina la prioridad del registro:

Se creará el fichero de registro pero no se mostrarán mensajes en él. Las versiones más recientes de udev mostrarán todos los mensajes en dmesg.

Faltan los ficheros de dispositivo y
Some udev versions need the and  files in order to work properly, but can not create them on their own. To manually create these files for udev run the following commands with root privileges:

NIC asignada a eth0 pero se mueve a eth1
Those having dual network cards on their motherboards may run into a situation where ifconfig may show no eth0 or eth1. dmesg</tt> may show their NIC detected as eth0, and later moved to eth1. Performing a ifconfig -a</tt> will also show the NIC as eth1. This is caused by using the kernel assigned names in the first place. Users should write custom rules like to use free names like lan0 or wireless0 or use predictable interface names (which have been enabled by default since udev version 197).

Recuerde también eliminar los ficheros antiguos de las versiones anteriores de udev:

Ver también
eudev. Un derivado de udev mantenido por Gentoo.

Recursos externos

 * Código fuente de udev