Tabla de contenidos
Resumen
El sistema hotplug regula el inicio de la mayoría de dispositivos de un
ordenador. No sólo afecta a los dispositivos que pueden conectarse y
desconectarse mientras el sistema está activo, sino también a aquellos
detectados durante el arranque del sistemas. El sistema hotplug colabora
estrechamente con el sistema de archivos sysfs y
udev, los cuales se describen en el Capítulo 19, Nodos de dispositivos dinámicos con udev.
Antes del arranque del kernel, sólo se inician dispositivos imprescindibles como pueden ser el bus, los disquetes de arranque o el teclado. El kernel desencadena eventos hotplug para todos los dispositivos detectados. El daemon udevd escucha dichos eventos y activa los scripts hotplug correspondientes para iniciar esos dispositivos. Para dispositivos que no pueden detectarse automáticamente o cuyos eventos se ha perdido al iniciarse el arranque, existe el sistema coldplug. Este sistema reproduce eventos guardados o busca en el sistema dispositivos sin iniciar y utiliza configuraciones estáticas para dispositivos antiguos como por ejemplo ISA.
Actualmente, la mayoría de dispositivos (excepto algunas excepciones por razones históricas) son iniciados en cuanto es posible acceder a ellos, bien durante el arranque o al ser conectados. Durante el inicio, las interfaces se registran en el kernel. Este regristro a su vez desencadena varios eventos hotplug que hacen que la interfaz se configure automáticamente.
En antiguas versiones de SUSE LINUX se partía de un conjunto estático de datos de configuración que, al aplicarse, causaba el inicio de dispositivos. Hoy en día, el sistema examina los dispositivos disponibles y busca para ellos datos de configuración adecuados o bien los genera.
Existen dos archivos para la configuración de las funciones hotplug más
importantes. /etc/sysconfig/hotplug alberga variables para
modificar el comportamiento de hotplug y
coldplug. El archivo contiene comentarios que explican el
significado de cada variable. El archivo
/proc/sys/kernel/hotplug muestra el nombre del programa
que ejecuta el kernel para realizar el soporte hotplug. La configuración de los
dispositivos se encuentra en el archivo
/etc/sysconfig/hardware. Desde la distribución SUSE LINUX
9.3, este archivo suele estar vacío ya que udevd recibe los
mensajes hotplug a través de un socket netlink.
El sistema hotplug gestiona interfaces además de dispositivos. Un dispositivo (device) siempre está conectado a una interfaz o a un bus. Un bus puede considerarse como una interfaz múltiple. Una interfaz (interface) conecta dispositivos entre sí o a una aplicación. Además de dispositivos físicos existen también dispositivos virtuales (por ejemplo un túnel de red). Los dispositivos necesitan normalmente controladores en forma de módulos del kernel. Las interfaces suelen estar representadas por nodos de dispositivo creados por udev. La distinción entre dispositivo e interfaz es fundamental para entender el concepto completo.
Los dispositivos registrados en el sistema de archivos sysfs se encuentran en
/sys/devices mientras que las interfaces están en
/sys/class o /sys/block. Todas las
interfaces incluidas en sysfs deberían contar con un
enlace (link) a su dispositivo. No obstante, todavía
existen algunos controladores que no añaden este enlace automáticamente. Sin
este enlace no es posible determinar a qué dispositivo pertenece una
interfaz ni encontrar una configuración adecuada.
Se accede a los dispositivos a través de una descripción de
dispositivo. Esta descripción puede ser el “devicepath” en
sysfs
(/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0),
una descripción del lugar de conexión
(bus-pci-0000:02:00.0), un ID individual
(id-32311AE03FB82538) o una descripción similar. Hasta
ahora, para acceder a una interfaz siempre se utilizaba su nombre. Estos
nombres eran simplemente una numeración correlativa de los dispositivos
disponibles y podían cambiar al añadir o eliminar dispositivos.
También es posible acceder a una interfaz por medio de la descripción del dispositivo respectivo. Según el contexto, en cada caso se distingue si la descripción se refiere al dispositivo o a su interfaz. A continuación se presentan algunos ejemplos típicos de dispositivos, interfaces y descripciones:
Es un dispositivo conectado al bus PCI
(/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0 o
bien bus-pci-0000:02:00.0) que dispone de una
interfaz de red (eth0,
id-00:0d:60:7f:0b:22 o bien
bus-pci-0000:02:00.0). Esta interfaz es utilizada
por servicios de red o está conectada a un dispositivo de red virtual
como un túnel o VLAN que a su vez posee una interfaz.
Es un dispositivo
(/sys/devices/pci0000:20/0000:20:01.1/host1/1:0:0:0
o bus-scsi-1:0:0:0) que
ofrece varias interfaces físicas en forma de un bus
(/sys/class/scsi_host/host1).
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*).