9.4. Modules du noyau

Les composants matériels des PC sont nombreux et variés. Pour pouvoir les utiliser correctement, vous aurez besoin d'un « pilote » qui permettra au système d'exploitation (sous Linux, le noyau) d'accéder à ce matériel. Il y a en gros deux mécanismes pour intégrer des pilotes au noyau :

Lors de la configuration du noyau, on établit quels pilotes sont liés physiquement au noyau et lesquels sont placés dans des modules. Tous les composants du noyau qui ne sont pas impérativement nécessaires au cours du processus d'amorçage devraient être compilés sous forme de modules. On s'assure ainsi que le noyau n'est pas trop volumineux et qu'il peut être chargé sans difficulté à partir du BIOS et de n'importe quel gestionnaire d'amorçage. Les pilotes pour ext2, les pilotes SCSI pour un système SCSI et d'autres fonctionnalités similaires doivent être directement compilés au sein du noyau. Inversement, la prise en charge d'isofs, de msdos ou du son (sound), qui ne sont pas nécessaires au démarrage de l'ordinateur, devraient toujours être compilées sous forme de modules.

[Tip]Astuce

Vous pouvez même fabriquer des modules pour les pilotes nécessaires à l'amorçage du système. Dans ce cas, le disque virtuel initial est utilisé pour charger ces modules à l'amorçage.

Les modules du noyau se trouvent dans le répertoire /lib/modules/<version>. version correspond à la version du noyau en cours d'exécution.

9.4.1. Reconnaissance du matériel à l'aide de hwinfo

Le programme hwinfo à votre disposition sous SUSE LINUX permet de reconnaître le matériel actuellement présent sur l'ordinateur et de choisir les pilotes servant à gérer ce matériel. La commande hwinfo --help vous offre un court paragraphe d'aide. Par exemple, pour obtenir des informations sur les périphériques SCSI installés, saisissez la commande hwinfo --scsi. Toutes ces informations sont également disponibles dans le module d'informations sur le matériel de YaST.

9.4.2. Manipulation des modules

Vous trouverez les utilitaires pour charger les modules dans le noyau dans le paquetage module-init-tools. Vous y trouverez les commandes suivantes :

insmod

insmod charge le module indiqué après l'avoir recherché dans un sous-répertoire de /lib/modules/<version>. Il est toutefois conseillé d'utiliser modprobe à la place de insmod car modprobe vérifie également les dépendances du module.

rmmod

Le module indiqué est déchargé. Cela n'est bien sûr possible que si la fonctionnalité correspondante du noyau n'est plus utilisée. Par conséquent, il n'est pas possible de décharger le module isofs lorsqu'un un CD est encore monté.

depmod

Crée le fichier modules.dep dans le répertoire /lib/modules/<version> qui définit les dépendances entre tous les modules. C'est nécessaire pour s'assurer que lors du chargement de modules, tous les modules qui en dépendent sont également chargés. Ce fichier est généré au démarrage du système s'il n'existe pas.

modprobe

Charge ou décharge un module en prenant en compte les dépendances de ce module. Cette commande est très puissante et permet de faire de nombreuses choses comme essayer tous les modules d'un certain type, jusqu'à réussir à charger l'un d'entre eux. Contrairement au chargement au moyen d'insmod, modprobe analyse le fichier /etc/modprobe.conf et on devrait donc en principe l'employer pour charger des modules. Pour des informations détaillées à ce sujet, consultez les pages de manuel appropriées.

lsmod

Indique quels sont les modules actuellement chargés et par combien d'autres modules ils sont utilisés. Les modules qui ont été chargés par le démon du noyau sont identifiés par l'étiquette autoclean. Cette étiquette signale que ces modules seront automatiquement retirés s'ils restent inutilisés pendant un certain temps.

modinfo

Affiche des informations sur un module. Étant donné que ces informations sont extraites du module, seules les informations qui ont été intégrées par les développeurs du pilote pourront être affichées. Les informations peuvent contenir l'auteur, une description, la licence, les paramètres de module, les dépendances et les alias.

9.4.3. /etc/modprobe.conf

Le chargement des modules est influencé par les fichiers /etc/modprobe.conf et /etc/modprobe.conf.local, ainsi que par le répertoire /etc/modprobe.d.Reportez-vous à la page de manuel man modprobe.conf. On trouve également dans ce fichier les paramètres des modules qui accèdent directement au matériel. Les modules de ce type, par exemple pour un lecteur CD-ROM ou un pilote réseau, peuvent nécessiter des options spécifiques au système. Les paramètres utilisés sont décrits dans les sources du noyau. Installez le paquetage kernel-source et lisez la documentation contenue dans le répertoire /usr/src/linux/Documentation.

9.4.4. Kmod — le chargeur de modules du noyau

Le chargeur de modules du noyau est la méthode la plus élégante d'utiliser les modules. Kmod veille en arrière-plan à ce que les modules nécessaires soient automatiquement chargés au moyen d'appels à modprobe dès que l'on accède à la fonctionnalité correspondante du noyau.

Pour utiliser Kmod, cochez l'option Kernel module loader (CONFIG_KMOD) lors de la configuration du noyau. Kmod n'est pas conçu pour décharger les modules automatiquement. Si l'on considère la quantité de mémoire vive (RAM) actuellement installée dans les ordinateurs, le gain de mémoire serait marginal.


SUSE LINUX Guide de l'administrateur 9.2