Capítulo 19. Nodos de dispositivos dinámicos con udev

Tabla de contenidos

19.1. Fundamentos de la creación de reglas
19.2. Automatización con NAME y SYMLINK
19.3. Expresiones regulares en claves
19.4. Selección de claves adecuadas
19.5. Nombres permanentes de dispositivo

Resumen

El kernel 2.6 de Linux ofrece una solución nueva en el espacio de usuario (user space) para un directorio de dispositivos dinámico /dev con denominaciones permanentes de dispositivos: udev. udev sólo proporciona archivos para los dispositivos realmente presentes. Crea o elimina archivos de nodos de dispositivos que normalmente se encuentran en el directorio /dev y cambia el nombre de las interfaces de red. La implementación anterior de /dev con devfs ya no funciona y ha sido sustituida por udev.

Tradicionalmente, en los sistemas Linux se grababan enlaces de dispositivos (device nodes) en el directorio /dev. Existía un enlace para cualquier tipo posible de dispositivo, independientemente de su existencia real en el sistema. Como consecuencia, el directorio /dev resultante podía llegar a ser muy grande. La introducción de devfs supuso una mejora sustancial, ya que sólo los dispositivos realmente existentes contaban con un nodo de dispositivo en /dev.

udev se sirve de un método nuevo para crear los nodos de dispositivos: compara la información recibida por sysfs con las reglas definidas por el usuario. sysfs es un sistema de archivos nuevo incorporado en el kernel 2.6 que ofrece información básica sobre los dispositivos conectados al sistema. sysfs está montado en /sys.

La definición de reglas por parte del usuario no es imprescindible. En cuanto un dispositivo se conecta, se crea también el enlace correspondiente. La reglas ofrecen la posibilidad de cambiar los nombres de los enlaces, lo que permite reemplazar los nombres crípticos de dispositivo por otros más fáciles de recordar. Además es posible tener nombres permanentes de dispositivo cuando se conectan dos dispositivos del mismo tipo.

Dos impresoras conectadas al sistema reciben por defecto la denominación /dev/lp0 y /dev/lp1. No obstante, la asignación de nombres (qué impresora recibe qué nodo de dispositivo) depende del orden en el que se encienden. Otro ejemplo son los dispositivos de almacenamiento externos tales como los discos duros USB. udev permite definir rutas exactas de dispositivo en /etc/fstab.

19.1. Fundamentos de la creación de reglas

Antes de crear enlaces a dispositivos en /dev, udev evalúa todos los archivos en /etc/udev/rules.d con la extensión .rules en orden alfabético. La primera regla que puede aplicarse a un dispositivo es la que se utiliza, independientemente de que haya reglas adicionales que también puedan aplicarse. Los comentarios comienzan con el símbolo #. Las reglas tienen la forma:

Clave, [clave,...] NAME [, SYMLINK]

Se precisa por lo menos una clave que se encargue de asignar la regla a un dispositivo. El nombre es igualmente imprescindible porque se utiliza para crear el enlace al dispositivo en /dev. El parámetro opcional para enlaces simbólicos permite la creación de enlaces en otros lugares. Una regla para una impresora puede tener el siguiente aspecto:

BUS="usb", SYSFS{serial}="12345", NAME="lp_hp", SYMLINK="printers/hp"

Este ejemplo tiene dos claves: BUS y SYSFS{serial}. udev compara el número de serie indicado con el número de serie del dispositivo conectado al bus USB. Todas las claves deben ser iguales para que se asigne el nombre lp_hp al dispositivo en el directorio /dev. Además se crea un enlace simbólico llamado /dev/printers/hp que apunta al enlace de dispositivo. Al mismo tiempo, el directorio printers se crea automáticamente. Las tareas de impresión se pueden mandar indistintamente a /dev/printers/hp o a /dev/lp_hp.


SUSE LINUX Manual de administración 9.3