TITRE1 hotplug TITRE2 le programme hotplug hotplug: programme de gestion des périphériques amovibles ex: hotplug --help possède une entrée dans /proc/sys/kernel/hotplug qui permet au noyau de le lancer lorsqu'un périphérique est branché ou débranché. Hotplug fait donc la liaison entre les évennements reporté par le noyau et les applications qui en ont besoin. Le noyau lance hotplug avec un évennement en argument, et des variables d'environnement, selon la syntaxe suivante: ENV1 [ENV2 ...] /sbin/hotplug variables: ACTION (une action s'est produite) : "add" / "remove" DEVPATH (chemin sysfs du périphérique) : /a/b/c FIXME sous-sytèmes: "usb", "pci", "net", ... hotplug délègue selon le sous-système la gestion des actions à faire lors d'un changement d'état du périphérique. les sous-programmes sont appelés "agents" et l'on peut les voir nommés dans /etc/hotplug avec comme préfixe le nom du sous-système qu'ils gèrent. ex: vi /etc/hotplug/usb.agent FIXME: trouver un agent plus petit les agents sont bien souvent des scripts shell. Ils lisent la variable d'environnement ACTION et agissent en conséquence. Exemple d'utilisation de hotplug: " Pouvoir choisir de monter automatiquement et de manière différente un périphérique de stockage USB en fonction de son profil : * un lecteur banal de mp3 USB ira dans dans /media/mp3 en lecture pour tous * une clé personelle ira dans /home/$user/key et sera à accès protégé " Les agents se basent sur les descriptions des modules du noyau et la carte des dépendances afin de gérer correctement le système. ex: vi /lib/modules/linux-2.6.X/modules.dep => chaines de modules dépendants vi /lib/modules/linux-2.6.X/modules.alias => id de chips <=> modules bas niveau vi /lib/modules/linux-2.6.X/modules.*map => vendorId/ProductID <=> modules TITRE4 le service d'init le service est lancé au démarrage relativement tôt. Sous Debian, (en rcS.d/S40) entre le montage des disques et l'activation des interfaces réseau. ex: /etc/init.d/hotplug [start|stop|status|force-reload|restart] il sert principalement à simuler, pour les périphériques fixes, une action de branchement, comme s'ils étaient amovibles. Ainsi le programme hotplug peut les prendre en compte (cold-plugging). FIXME: ananlyse succinte du déroulement du script TITRE 2 paramétrage hotplug (FIXME: règles des agents) TITRE2 udev udev est un programme particulier complementaire de hotplug. il n'est pas appelé sur un sous-système spécifique mais a pour but de gérer l'arboresence /dev dynamiquement en lisant continuellement les informations du noyau dans /sys (FIXME: mounter /sys, ls /sys/...) Il obéit à des règles de nommage ou de renommage puis exporte la variable DEVICENAME nouvellement créée en complement des variables de hotplug. Ainsi les agents et les autres programmes utilisateurs peuvent gérer un point d'entrée logique fournit unique fouri par udev pour un périphérique (ou un type de périphérique) en particulier. Les règles de nommage s'éditent dans des fichiers textes dans /etc/udev/* pour les règles et /etc/udev/udev.conf pour les options globales. Les nommages peuvent être aussi multiples: udev peut créer des liens symboliques automatiquement. Exemple d'utilisation d'udev: "faire en sorte qu'une carte wifi amovible en particulier soit toujours associée au prériphérique /dev/wifi" "faire en sorte que lorsqu'une clé USB est inséré, elle soit représenté par /dev/clef-$USER selon son numero de serie. FIXME: a vérifier " TITRE4 udevd udevd est le daemon qui contrôle l'ordre des évènnements à envoyer à l'espace utilisateur grâce à l'ordre de numérotation du noyau. udevd séquence les évènnements et lance udev pour chacun d'eux avec les paramêtres hotplug associés. udevd crée une file d'attente des évennements à traîter pour chaque périphérique. Si un évènnement est lancé par le noyau sans numéro de séquence, udev le place alors en priorité dans la file. TITRE2 paramétrage udev FIXME: syntaxe de base des patterns et des règles (man udev) FIXME: exemples de pattern et de règles d'application