Conceptos sobre udev: manejo de dispositivos

Udev es una herramienta que pasó a ser parte integral de Linux a partir del kernel 2.6. Actualmente es parte de systemd, y su propósito principal es controlar los dispositivos en /dev. En este post compartiremos algunos conceptos sobre udev que son importantes para entender su funcionamiento.

Conceptos sobre udev

En primer lugar, cuando se agrega o quita un dispositivo (o cambia su estado de alguna forma) del sistema, el kernel lo informa al servicio systemd-udevd. Este último puede configurarse para responder a dichos eventos mediante reglas en archivos con la extensión .rules dentro de

  • /etc/udev/rules.d
  • /run/udev/rules.d
  • /usr/lib/udev/rules.d

Si existen archivos con nombres iguales, la prioridad más alta es dada a aquellos dentro de /etc/udev/rules.d, seguida por /run/udev/rules.d, y luego por /usr/lib/udev/rules.d. Como resultado, podemos identificar un dispositivo basándonos en sus propiedades. Sin importar el puerto de conexión o el orden en que haya sido descubierto, podemos asignar un nombre fijo a dicho dispositivo.

En el sitio web oficial del proyecto Debian podemos ver cómo crear una regla para asignar un nombre persistente a un dispositivo. Por desgracia, ese tema está fuera del alcance de este post.

Controlar el funcionamiento de udev

Finalmente, es importante mencionar que se dispone de udevadm, una herramienta para controlar el funcionamiento de udev. Entre sus usos útiles, podemos destacar udevadm monitor --kernel que muestra los eventos detectados por el kernel. Luego de ejecutar este comando, tendremos que esperar a que se registre un cambio. A continuación, podremos ver el detalle por la salida estándar. En la Fig. 1 observamos la detección de un dispositivo USB conectado al equipo luego de ejecutar el comando:

Conceptos sobre udev: ejemplo del uso de udevadmConceptos sobre udev: ejemplo del uso de udevadm
Figura 1 – Conceptos sobre udev: ejemplo del uso de udevadm

Además del uso ilustrado en la imagen anterior, udevadm nos sirve para administrar la lista de eventos en espera (udevadm settle y udevadm control) y nos permite simular eventos (udevadm test) y debuguearlos. Para más información podemos referirnos al man page de la herramienta.

Espero que este post les haya resultado útil. ¡Nos leemos en el próximo!

¡Aprovechá la oportunidad de suscribirte al blog para recibir en tu correo el post nuestro de cada día, novedades, y promociones exclusivas!