Module noyau
Module noyau (en anglais kernel module, fichier .ko pour kernel object) : morceau de code du noyau Linux compilé à part, rangé sous /lib/modules/<version>/kernel/ (souvent compressé en .ko.zst ou .ko.xz) et chargé seulement quand on en a besoin. Pilotes, systèmes de fichiers et extensions du pare-feu existent ainsi soit intégrés à l'image du noyau, toujours présents, soit en modules ; modules.builtin liste les premiers.
Un module se charge rarement à la main : quand un périphérique apparaît (par son modalias, via udev), quand le noyau a besoin d'une fonction (il lance lui-même modprobe fs-xfs), ou parce qu'un fichier de /etc/modules-load.d/ le demande à chaque démarrage. Les outils : lsmod (modules chargés, avec leur compteur d'utilisation), modinfo (fichier, dépendances, signature, paramètres), modprobe et modprobe -r (charger et décharger avec les dépendances), modprobe -n -v (simulation). Les paramètres se fixent par une ligne options dans /etc/modprobe.d/, appliquée au prochain chargement, et se lisent dans /sys/module/<module>/parameters/. Si le module est chargé dès l'initramfs, il faut régénérer celui-ci après toute modification.
Un module chargé est du code noyau comme un autre, sans aucune frontière avec le reste : un module malveillant contrôle la machine. D'où la signature des modules, exigée sous Secure Boot et lockdown, la teinte O ou E du noyau quand un module externe ou non signé est chargé, l'interdiction des modules inutiles (install <module> /bin/false) et, dans les durcissements les plus stricts, kernel.modules_disabled = 1, qui bloque tout chargement jusqu'au redémarrage.
Dans les cours
- Linux : administration système, leçon 3 : Le noyau : modules et paramètres
- Linux : administration système, leçon 14 : Durcir un serveur
- Linux : administration système, leçon 2 : Le démarrage, du firmware à systemd