12.3. Controladores, módulos del núcleo y dispositivos

Los controladores del bus del núcleo comprueban la existencia de los dispositivos. Por cada dispositivo detectado, el núcleo crea una estructura de dispositivo interna y el núcleo del controlador envía un uevent al daemon udev. Los dispositivos de bus se identifican mediante un ID con un formato especial que indica el tipo de dispositivo que es. Normalmente estos ID consisten en un ID de proveedor y de producto y otros valores específicos del subsistema. Cada bus cuenta con su propio esquema para estos ID denominado MODALIAS. El núcleo toma la información del dispositivo, compone una cadena de ID de MODALIAS a partir de él y la envía junto con el evento. En el caso de un ratón USB, tendrá más o menos este aspecto:

MODALIAS=usb:v046DpC03Ed2000dc00dsc00dp00ic03isc01ip02

Cada controlador del dispositivo lleva una lista de alias conocidos para los dispositivos que puede gestionar. La lista está incluida en el archivo del módulo del núcleo. El programa depmod lee las listas de ID y crea el archivo modules.alias en el directorio del núcleo /lib/modules para todos los módulos disponibles actualmente. Gracias a esta infraestructura, la carga del módulo es tan sencilla como ejecutar el comando modprobe en cada evento que lleve una clave MODALIAS. Si se ejecuta modprobe $MODALIAS, el alias de dispositivo compuesto para el dispositivo coincidirá con los alias proporcionados por los módulos. Si se encuentra una entrada coincidente, se cargará ese módulo. Será udev el que active este proceso y ocurrirá automáticamente.