Módulos del kernel: .o vs .ko

10

Parece que se llaman archivos que contienen módulos de kernel .o, al menos eso es lo que imagino cuando veo un tutorial como este . Sin embargo, en mi cuadro de compresión de Debian, estos archivos parecen llamarse .ko.

¿Depende de la distribución (o versión de los mismos) si los archivos se llaman .oo no .ko, y son más o menos lo mismo?

zebonaut
fuente

Respuestas:

11

Encontré la siguiente respuesta aquí :

La respuesta corta es que el archivo .ko es su archivo de objeto vinculado con un núcleo que genera automáticamente estructuras de datos que el núcleo necesita.

El archivo .o es el archivo objeto de sus módulos, el resultado de compilar sus archivos c. El sistema de compilación del kernel crea automáticamente otro archivo C con algunas estructuras de datos que describen el módulo del kernel (llamado your_module_kmod.c), compila este archivo C en otro archivo de objeto y vincula su archivo de objeto y el archivo de objeto que creó juntos para crear el .ko archivo.

El enlazador dinámico en el kernel que se encarga de cargar los módulos del kernel, espera encontrar la estructura de datos que el kernel puso en el objeto kmod en el archivo .ko y no podrá cargar el módulo del kernel sin ellos.

También de esa fuente , citando tldp : hasta 2.4 versiones del núcleo, era ".o", y desde 2.6, es ".ko".

J. Taylor
fuente
3

Parece un viejo tutorial (tutorial), de hecho, fue escrito en 2005. Cuando el kernel de Linux era 2.4.x, los módulos tenían extensión .o, mientras que en 2.6 se convertían en .ko

asclepix
fuente