Loadable Kernel Module

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet article a besoin d'un nouveau plan ().

Les informations dans cet article sont mal organisées, redondantes, ou il existe des sections bien trop longues. Structurez-le ou soumettez des propositions en page de discussion.

Comment faire ?

Avec le temps, il arrive que le contenu présent dans un article devienne désordonné. Il est souvent nécessaire de réorganiser l'article de fond en comble.

  • Il faut tout d’abord répartir le contenu de l'article en plusieurs sections. Les informations doivent ensuite être exposées clairement et le plus synthétiquement possible, regroupées par sujet afin d'éviter les doublons. Quelqu'un cherchant une information précise doit pouvoir la trouver rapidement en lisant la section appropriée.
  • À l'intérieur de chaque section, le texte, souvent initialement sous la forme de phrases éparses, doit être regroupé dans des paragraphes de quelques lignes, en assurant un enchaînement logique et une cohérence entre les phrases.
  • Lorsque l'article ou l'une de ses sections développe trop longuement un point qui n'est pas dans le cœur du sujet traité, il convient de faire une synthèse et de transférer l'ancien contenu dans des articles plus appropriés (en cas de transfert, il faut impérativement respecter la procédure Aide:Scission).

Si vous pensez que ces points ont été résolus, vous pouvez retirer ce bandeau et améliorer le plan d'un autre article.

Dans un système d'exploitation, un module est une partie du noyau qui peut être intégrée pendant son fonctionnement. Le terme anglais généralement employé pour les désigner est Loadable Kernel Module, abrégé LKM, ou en français : « module de noyau chargeable ».

Cette fonctionnalité existe dans les noyaux Linux et les noyaux BSD.

C'est une alternative aux fonctionnalités compilées dans le noyau, qui ne peuvent être chargées qu'en relançant le système.


Linux

Les modules du noyau Linux sont généralement placés dans /lib/modules. Ils utilisent l'extension .ko depuis la version 2.6.

La commande depmod génère les fichiers de dépendances. Ces fichiers permettront entre autres à la commande modprobe de charger automatiquement tous les modules nécessaires lors de l'intégration d'un module dans le noyau.

Les modules peuvent être retirés du noyau à tout moment tant qu'ils ne sont pas utilisés.

Les commandes lsmod, insmod et rmmod permettent d'effectuer les opérations de base sur les modules.

Dans certaines distributions Linux récentes, le chargement des modules est automatique lorsque le système en a besoin ou qu'il détecte un nouveau périphérique.

Compatibilité des modules binaires

Linux ne fournit pas d'interface stable (API ou ABI) pour les modules du noyau. D'une version à l'autre du noyau il peut donc y avoir des différences structurelles ou fonctionnelles qui peuvent rompre la compatibilité avec les modules existants. Pour limiter ces inconvénients, des informations de version sont placées dans la section .modinfo des modules qui peuvent être comparées à la version du noyau cible pour empêcher le chargement de modules non compatibles.

Considérations juridiques

La licence GNU GPL qui régit le noyau Linux implique que tout travail dérivé soit placé sous cette même licence. Les mainteneurs du noyau considèrent que, sauf exception, les modules du noyau sont des travaux dérivés et comme tels soumis à la licence GNU GPL. Linus Torvalds a ainsi exprimé qu'il pouvait exister de rares exceptions : typiquement si le pilote d'un autre système d'exploitation était adapté pour fonctionner sous Linux, il lui semble difficile de qualifier le travail en résultant de « travail dérivé de Linux »[1].

Le symbole d'exportation du noyau permet de spécifier la licence des modules qui interagissent, par exemple dans le cas de EXPORT_SYMBOL_GPL, le module sera marqué de cette façon : MODULE_LICENSE("GPL"). Pour Linus Torvalds, cette précision a une valeur descriptive mais aussi juridique[2].

Notes et références

  1. (en) Linux: The GPL And Binary Modules « Copie archivée » (version du sur Internet Archive)
  2. (en) On the value of EXPORT_SYMBOL_GPL

Annexes

Article connexe

  • Fichier binaire

Lien externe

  • Tutorial sur la programmation de LKM en C
  • icône décorative Portail des logiciels libres
  • icône décorative Portail GNU/Linux