Table des matières
Résumé
Le système Hotplug contrôle l'initialisation de la plupart des périphériques d'un ordinateur. Il ne s'utilise pas seulement avec les périphériques qui peuvent être ajoutés et retirés en cours de fonctionnement, mais avec tous les périphériques qui sont détectés lors du démarrage du système. Il est étroitement associé avec le système de fichiers sysfs et l'utilitaire udev, décrits au Chapitre 33, Noeuds de périphériques dynamiques avec udev.
Jusqu'au démarrage du kernel, seuls les périphériques indispensables (système de bus, disques d'amorçage et claviers) sont initialisés. Le kernel déclenche les événements hotplug pour tous les périphériques détectés. Le démon udevd écoute ces événements et exécute udev pour créer le noeud de périphérique et configurer le périphérique. Pour les périphériques qui ne peuvent être détectés automatiquement, tels que les anciennes cartes ISA, une configuration statique est utilisée.
Hormis certaines exceptions historiques, la plupart des périphériques sont initialisés dès qu'ils sont accessibles, soit lors du démarrage du système, soit lorsqu'ils sont connectés à chaud. Au cours de l'initialisation, les interfaces sont enregistrées dans le kernel. Cet enregistrement déclenche d'autres événements hotplug, qui provoquent la configuration automatique l'interface appropriée.
Dans les versions précédentes de SUSE Linux, un jeu statique de données de configuration était utilisé comme base pour l'initialisation des périphériques. Tous les événements hotplug étaient gérés par des scripts séparés, nommés agents. Avec cette version de SUSE Linux, le sous-système hotplug est intégré à udev, les règles udev fournissant la fonctionnalité des anciens agents hotplug.
Les paramètres généraux du sous-système hotplug se trouvent dans /etc/sysconfig/hotplug. Toutes les variables sont commentées. La configuration générale du périphérique s'effectue en fonction des règles correspondantes dans /etc/udev/rules.d (voir Chapitre 33, Noeuds de périphériques dynamiques avec udev). Les fichiers de configuration spécifiques de certains périphériques se trouvent dans /etc/sysconfig/hardware. Le rappel d'événement hotplug utilisé dans les versions précédentes de SUSE Linux, /proc/sys/kernel/hotplug, est généralement vide car udevd reçoit les messages hotplug via un socket netlink.
Le système hotplug configure non seulement les périphériques, mais aussi les interfaces. En règle générale, un périphérique est connecté à un bus et fournit la fonctionnalité requise pour une interface. Une interface représente l'ensemble des fonctions, visibles par l'utilisateur, d'un périphérique ou d'un sous-ensemble d'un périphérique. Un périphérique nécessite généralement un pilote, prenant la forme de modules de kernel, pour fonctionner correctement. En outre, un pilote de plus haut niveau peut être nécessaire pour fournir l'interface à l'utilisateur. Les interfaces sont le plus souvent représentées par les noeuds de périphérique créés par udev. Pour comprendre le concept global, il est essentiel d'appréhender la distinction entre les périphériques et les interfaces.
Les périphériques entrés dans le système de fichiers sysfs se trouvent sous /sys/devices. Les interfaces se trouvent sous /sys/class ou sous /sys/block. Toutes les interfaces de sysfs doivent avoir un lien vers leur périphérique. Cependant, il existe encore des pilotes qui n'ajoutent pas automatiquement ce lien. Sans ce lien, Linux ne sait pas à quel périphérique appartient l'interface et ne trouve aucune configuration appropriée.
L'accès aux périphériques s'effectue au moyen d'une description. Il peut s'agir du chemin du périphérique spécifié dans sysfs (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0), d'une description du point de connexion (bus-pci-0000:02:00.0), d'un ID individuel (id-32311AE03FB82538) ou de toute autre information similaire. Auparavant, l'accès aux interfaces s'effectuait par leur nom. Ces noms représentaient une simple numérotation des périphériques existants et étaient susceptibles de changer lorsque l'on ajoutait ou supprimait des périphériques.
L'accès aux interfaces peut également s'effectuer à l'aide d'une description du périphérique associé. Généralement, le contexte indique si la description se réfère au périphérique lui-même ou à son interface. Exemples de périphériques, d'interfaces et de descriptions :
Périphérique connecté au bus PCI (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0 ou bus-pci-0000:02:00.0) et doté d'une interface réseau (eth0, id-00:0d:60:7f:0b:22 ou bus-pci-0000:02:00.0). L'interface réseau est utilisée par les services réseau ou connectée à un périphérique réseau virtuel, tel qu'un tunnel ou un VLAN, lui-même connecté à une interface.
Périphérique (/sys/devices/pci0000:20/0000:20:01.1/host1/1:0:0:0 ou bus-scsi-1:0:0:0) qui rend plusieurs interfaces physiques disponibles sous la forme d'un bus (/sys/class/scsi_host/host1).
Périphérique (/sys/devices/pci0000:20/0000:20:01.1/host1/1:0:0:0 ou bus-scsi-1:0:0:0) doté de plusieurs interfaces (/sys/block/sda*).