Capítulo 32. Sistema HotPlug

Tabla de contenidos

32.1. Dispositivos e interfaces
32.2. Eventos HotPlug
32.3. Configuración del dispositivo HotPlug
32.4. Carga de módulos automática
32.5. Guión de arranque ColdPlug
32.6. Análisis de errores

Resumen

El sistema HotPlug controla el inicio de casi todos los dispositivos del equipo. No sólo se usa para los dispositivos que se pueden insertar y retirar durante la operación, sino para todos los que se detectan mientras el sistema se arranca. Funciona en estrecha colaboración con el sistema de archivos sysfs y el comando udev, que se describen en el Capítulo 33, Nodos de dispositivo dinámicos con udev.

Hasta que el núcleo se arranca, sólo se inician los dispositivos absolutamente necesarios, como el sistema bus, los discos de arranque y el teclado. El núcleo activa eventos HotPlug para todos los dispositivos detectados. El daemon udevd escucha estos eventos y ejecuta el comando udev para crear el nodo del dispositivo y configurarlo. Para los dispositivos que no se pueden detectar automáticamente, como las tarjetas ISA antiguas, se utiliza una configuración estática.

Aparte de las escasas excepciones históricas, la mayoría de los dispositivos se inician inmediatamente en cuando se puede acceder a ellos, bien durante el arranque del sistema, bien cuando se conectan "en caliente". Durante el inicio, las interfaces se registran en el núcleo. Este registro activa nuevos eventos HotPlug que provocan la configuración automática de la interfaz respectiva.

En versiones anteriores de SUSE Linux se usaba un conjunto estático de datos de configuración como base para iniciar los dispositivos. Los eventos HotPlug se gestionaban con guiones distintos, denominados agentes. En esta versión de SUSE Linux el subsistema HotPlug está integrado en udev y las reglas de udev ofrecen la funcionalidad de los antiguos agentes HotPlug.

Los ajustes generales del subsistema HotPlug se encuentran en /etc/sysconfig/hotplug. Se comentan todas las variables. La configuración general del dispositivo se realiza de acuerdo a las reglas coincidentes de /etc/udev/rules.d (véase el Capítulo 33, Nodos de dispositivo dinámicos con udev). Los archivos de configuración para los dispositivos específicos se encuentran en /etc/sysconfig/hardware. La devolución de llamada del evento HotPlug que se usaba en versiones anteriores de SUSE Linux, /proc/sys/kernel/hotplug, suele estar vacía porque udevd recibe los mensajes HotPlug mediante un zócalo de enlace de red.

32.1. Dispositivos e interfaces

El sistema HotPlug configura interfaces además de dispositivos. Un dispositivo suele estar conectado a un bus y ofrece la funcionalidad requerida por una interfaz. Una interfaz representa la abstracción visible para el usuario de un dispositivo completo o de un subconjunto concreto de éste. Los dispositivos suelen requerir de controladores en forma de módulos del núcleo para funcionar correctamente. Además, puede que se necesiten algunos controladores de nivel superior para poner la interfaz a disposición del usuario. Las interfaces se representan casi siempre con nodos de dispositivo creados por udev. Esta distinción entre dispositivos e interfaces es importante para comprender el concepto general.

Los dispositivos introducidos en el sistema de archivos sysfs se encuentran en /sys/devices. Las interfaces se pueden encontrar en /sys/class o en /sys/block. Todas las interfaces de sysfs deben contar con un enlace a sus dispositivos. No obstante, aún hay algunos controladores que no añaden automáticamente este enlace. Sin él, no se sabe a qué dispositivo pertenece esta interfaz y no es posible encontrar una configuración adecuada.

Las direcciones de los dispositivos se definen mediante una descripción de dispositivo. Puede tratarse de la vía al dispositivo en sysfs (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0), una descripción del punto de conexión (bus-pci-0000:02:00.0), un ID individual (id-32311AE03FB82538) o algo similar. En el pasado, las direcciones de la interfaces se definían mediante sus nombres. Estos nombres representaban una numeración simple de los dispositivos existentes y podían cambiar al añadir o eliminar dispositivos.

Las direcciones de las interfaces también se pueden definir mediante una descripción del dispositivo asociado. Normalmente, el contexto indica si la descripción hace referencia al propio dispositivo o a su interfaz. Entre los ejemplos típicos de dispositivos, interfaces y descripciones están los siguientes:

Tarjeta de red PCI

Se trata de un dispositivo conectado al bus PCI (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0 o bus-pci-0000:02:00.0) y que tiene una interfaz de red (eth0, id-00:0d:60:7f:0b:22 o bus-pci-0000:02:00.0). La interfaz de red es utilizada por los servicios de red o se conecta a un dispositivo de red, como un túnel o VLAN, que a su vez cuenta con una interfaz.

Controlador SCSI PCI

Es un dispositivo (/sys/devices/pci0000:20/0000:20:01.1/host1/1:0:0:0 o bus-scsi-1:0:0:0) que dispone varias interfaces físicas en forma de bus (/sys/class/scsi_host/host1).

Disco duro SCSI

Es un dispositivo (/sys/devices/pci0000:20/0000:20:01.1/host1/1:0:0:0 o bus-scsi-1:0:0:0) con varias interfaces (/sys/block/sda*).