Modules du noyau: .o vs .ko

10

Il semble que les fichiers contenant des modules du noyau soient appelés .o, du moins c'est ce que je pense en regardant un tutoriel comme celui-ci . Cependant, sur ma boîte de compression Debian, ces fichiers semblent être appelés .ko.

Cela dépend-il de la distribution (ou de sa version) si les fichiers sont appelés .oou .ko, et sont-ils plus ou moins les mêmes, sinon?

zebonaut
la source

Réponses:

11

J'ai trouvé la réponse suivante ici :

La réponse courte est que le fichier .ko est votre fichier objet lié à certaines structures de données générées automatiquement par le noyau dont le noyau a besoin.

Le fichier .o est le fichier objet de vos modules - le résultat de la compilation de vos fichiers c. Le système de construction du noyau crée ensuite automatiquement un autre fichier C avec des structures de données décrivant le module du noyau (nommé your_module_kmod.c), compile ce fichier C dans un autre fichier objet et relie votre fichier objet et le fichier objet qu'il a construit ensemble pour créer le .ko fichier.

L'éditeur de liens dynamique dans le noyau qui est chargé de charger les modules du noyau, s'attend à trouver la structure de données que le noyau a placée dans l'objet kmod dans le fichier .ko et ne pourra pas charger votre module du noyau sans eux.

Également de cette source , citant tldp : jusqu'à la version 2.4 du noyau, c'était ".o", et depuis 2.6, c'est ".ko".

J. Taylor
la source
3

Cela semble être un vieux tutoriel (tutoriel), en fait il a été écrit en 2005. Quand le noyau Linux était 2.4.x les modules avaient l'extension .o, alors qu'en 2.6 ils devenaient .ko

asclepix
la source