Udev/es

udev es el gestor de dispositivos para el núcleo Linux. Principalmente gestiona los nodos de dispositivo en y también todos las acciones en espacio de usuario cuando se añaden o eliminan dispositivos. Eche también 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 (incluyendo al lector) el usar es solo una forma rápida de explicar que nos referimos a la primera partición del disco primer disco SATA. ¿O no?

Todos sabemos lo que es un archivo de dispositivo. Algunos incluso saben por qué cuando miramos un poco más de cerca la salida de  en  los archivos de dispositivo muestran unos números especiales. Pero lo que siempre damos por sentado es que el primer disco SATA se llama. Tal vez no lo vea así, pero esto es un fallo de diseño.

Piense en los dispositivos que se enchufan en caliente como los USB, IEEE 1394, tarjetas PCI que se cambian en caliente ... ¿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 la moribunda impresora de matriz solo porque alguien decidió desenchufar la impresora láser que era la primera impresora?

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


 * Corre en espacio de usuario
 * Crea y borra archivos de dispositivo dinámicamente
 * Proporciona nombres consistentes
 * Proporciona una API en espacio de usuario

Cada vez que se produce un cambio en la estructura de los dispositivos, el núcleo emite un uevent que recoge udev. Entonces, udev sigue las reglas declaradas en los directorios , y. Basándose en la información contenida en el evento, busca la regla o reglas que necesita ejecutar y realiza las acciones requeridas. Estas acciones pueden consistir en la creación o eliminación de ficheros de dispositivo, pero pueden suponer también la carga de ficheros de firmware particulares en la memoria del núcleo.

Núcleo
Necesita activar las siguientes opciones del núcleo:

Software
Portage reconoce el ajuste USE global udev para habilitar el soporte de udev en otros paquetes. Al habilitar este ajuste USE (se realiza por defecto todos los perfiles linux) se instalará automáticamente :

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

Servicio
Para arrancar udev en el inicio, añada esto a su nivel de ejecución sysinit:

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

Las definiciones de las reglas se almacenan en (instaladas por los paquetes) y  (para las reglase especificadas por los usuarios). En este sentido, varios ficheros de reglas (con el sufijo ) se tratan en orden alfanumérico. Dentro de los ficheros de reglas, udev encuentra las expresiones que comparará con el uevent junto con el estado con el que debe concordar (es el uevent ya que se añade o elimina un dispositivo) y la orden que debe lanzar.

La concordancia del evento se basa en información como:
 * El SUBSYSTEM del evento (para qué tipo de dispositivo se dispara el uevent)
 * La ACTION que se toma (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 ofrecido por el núcleo (a través de KERNEL), como sd* (para los discos SCSI/SATA) o input* (para dispositivos de entrada como teclados y ratones)
 * Uno o más ajustes de entorno (a través de ENV), utilizado para enviar información entre varias reglas.

Basándose en esta información, la regla puede entonces comprobar si:
 * Se necesita compartir alguna información con eventos posteriores (a través de variables de entorno)
 * Se necesita crear enlaces en
 * 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 crea enlaces simbólicos adicionales para los dispositivos de almacenamiento basándose en el identificador, el uuid y la ruta del dispositivo. Eche un vistazo al directorio . Por lo que, por ejemplo, en lugar de utilizar el fichero de dispositivo utiliza el fichero.


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


 * Usando reglas propias puede crear sus propios ficheros de dispositivo.

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
Registrar todos los mensajes que ve cuando lance udevadm monitor:

Se creará un el nuevo fichero de registro.

Modo depuración
Habilitar el modo depuración para obtener 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.

Faltan los ficheros de dispositivo y
Algunas versiones de udev necesitan estos ficheros y los pueden crear por si mismos. Por lo tanto deberán crearse:

NIC asignada a eth0 pero se mueve a eth1
En las placas base con dos tarjetas de red puede suceder que  no muestre ni eth0 ni eth1. La orden  puede mostrar las NIC detectadas como eth0 y luego cambiar a eth1. Al realizar un "ifconfig -a" también se mostrar la NIC como eth1. Esto es debido a que el núcleo asigna estos nombres en primer lugar. Puede escribir sus propias reglas como para usar los nombres que elija como lan0 o wireless0 o utilizar los nombres predecibles para las interfaces que se habitan por defecto a partir de la versión 197.

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

External resources

 * udev source code