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 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.

Piense en los dispositivos que se enchufan en caliente como los USB, IEEE 1394, tarjetas PCI que se cambian en caliente, etc. ¿Cuál es el primer dispositivo? ¿Y por cuánto tiempo? ¿Cómo se llamarán los demás dispositivos cuando el primero desaparezca? ¿Cómo afectará ésto a las transacciones en curso? ¿No sería divertido que un trabajo de impresión se cambiase de repente desde su flamante impresora láser nueva a una moribunda impresora de matriz solo porque la madre de alguien decidió desenchufar la impresora láser que era la primera impresora?

Enter. The goals of the udev project are both interesting and needed. 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. 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
requires the following kernel options:

USE flags
Portage knows the  global USE flag for enabling support for udev in other packages. Adding this USE flag value to the USE flag list (default in all Linux profiles) will pull in the package automatically:

Emerge
After setting USE flags update the system so the changes take effect:

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 ofrece un conjunto de reglas que concuerdan con los valores exportados de los uevents (eventos enviados por el núcleo) y las propiedades del dispositivo que se ha descubierto. Una regla que concuerda posiblemente creará y nombrará un nodo de dispositivo y lanzará los programas definidos para poner en marcha y configurar el dispositivo.

Las definiciones de las reglas se almacenan en dos localizaciones:


 * 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:


 * The SUBSYSTEM of the uevent (for which type of device is the uevent fired);
 * The ACTION that is taken (add, change, or remove);
 * One or more attributes (through ATTR or ATTRS), such as the device class, vendor or other device information;
 * The kernel-provided name (through KERNEL), such as sd* (for SCSI/SATA disks) or input* (for input devices such as mice and keyboards);
 * One or more environment settings (through ENV), used to send information between multiple rules.

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 realiza esto para cada regla que concuerda (por lo que no se detiene en la primera concordancia) para permitir un enfoque flexible de gestión de los dispositivos.

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.


 * Usando reglas propias los usuarios pueden crear sus propios ficheros de dispositivo.

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


 * Mostrar todos los mensajes sobre un determinado archivo 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 is ran, modify the following configuration file:

Se creará un el nuevo fichero de registro localizado en.

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

Defina la prioridad del registro:

The log file will be created but no messages will be logged to it. The most recent versions of udev will log all messages to.

Faltan los ficheros de dispositivo y
Algunas versiones de udev necesitan los ficheros y  para funcionar correctamente pero no pueden crearlos ellos mismos. Para crear manualmente estos ficheros por udev, lance las siguientes ordenes con privilegios de root:

NIC asignada a eth0 pero se mueve a eth1
Those having dual network cards on their motherboards may run into a situation where may show no eth0 or eth1. may show their NIC detected as eth0, and later moved to eth1. Performing a 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:

Recursos externos

 * Código fuente de udev