Módulos do kernel: .o vs .ko

10

Parece que os arquivos que contêm módulos do kernel são chamados .o, pelo menos é o que eu acho quando vejo um tutorial como este . No entanto, na minha caixa de squeeze do debian, esses arquivos parecem ser chamados .ko.

Depende da distribuição (ou versão) dos arquivos serem chamados .oou .ko, caso contrário , são mais ou menos os mesmos?

zebonauta
fonte

Respostas:

11

Encontrei a seguinte resposta aqui :

A resposta curta é que o arquivo .ko é seu arquivo de objeto vinculado a algumas estruturas de dados geradas automaticamente pelo kernel que são necessárias pelo kernel.

O arquivo .o é o arquivo de objeto dos seus módulos - o resultado da compilação dos arquivos c. O sistema de compilação do kernel cria automaticamente outro arquivo C com algumas estruturas de dados que descrevem o módulo do kernel (chamado your_module_kmod.c), compila esse arquivo C em outro arquivo de objeto e vincula seu arquivo de objeto e o arquivo de objeto que ele criou juntos para criar o .ko Arquivo.

O vinculador dinâmico no kernel encarregado de carregar os módulos do kernel, espera encontrar a estrutura de dados que o kernel colocou no objeto kmod no arquivo .ko e não poderá carregar o módulo do kernel sem eles.

Também a partir dessa fonte , citando tldp : Até versões do kernel 2.4, era ".o" e, desde 2.6, é ".ko".

J. Taylor
fonte
3

Parece um antigo tutorial (tutorial), na verdade foi escrito em 2005. Quando o kernel do Linux era 2.4.x, os módulos tinham extensão .o, enquanto no 2.6 eles se tornaram .ko

asclepix
fonte