Tabla de contenidos
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.
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.