Ceci est une ancienne révision du document !
Rédigé par Kmeleon
Les modules Linux
Présentation
Un module est un morceau de code permettant d'ajouter des fonctionnalités au noyau : pilotes de périphériques matériels, protocoles réseaux, etc…
Il peut être chargé dynamiquement sans avoir besoin de recompiler le noyau (avec la commande insmod
ou modprobe
) ou de redémarrer le système.
Les modules sont exécutés dans l'espace mémoire du noyau :
- Ils possèdent le contrôle total de la machine
- Ils peuvent détourner ou créer un appel système
Caractéristiques
- Ajoutent une fonctionnalité donnée au noyau (pilotes, support système de fichier, etc…)
- Peuvent être (dé)chargés à tout moment, quand leur fonctionnalité est requise. Une fois chargés, ils ont accès à tout le noyau.
- Aucune protection particulière.
- Utiles pour garder une image du noyau à une taille minimum (essentiel pour les distributions GNU/Linux pour PCs).
- Permettent de supporter l'incompatibilité entre pilotes (on charge soit l'un soit l'autre, mais pas les deux)
- Permettent de fournir des pilotes binaires (mauvaise idée), utilisables sans avoir à recompiler le noyau.
- Les modules permettent de développer des pilotes sans redémarrer: chargement, test, déchargement, recompilation, chargement…
- Les modules (pilotes) peuvent aussi être compilés statiquement dans le noyau
Gestion des modules
Lister les modules
La commande lsmod:
lsmod
Module Size Used by
rt2500 176612 1
ppdev 9220 0
speedstep_lib 4484 0
cpufreq_userspace 4696 0
cpufreq_stats 5636 0
freq_table 4740 1 cpufreq_stats
…….sortie coupée……
..
On voit que le module "freq_table" est utilisé par "cpufreq_stats". Il y a des dépendances entre les modules. Il faut en tenir compte lorsque l'on veut décharger des modules.