Moduli del kernel: .o vs .ko


10

Sembra che vengano chiamati file contenenti moduli del kernel .o, almeno è quello che immagino quando guardo un tutorial come questo . Tuttavia, sulla mia casella di compressione debian, questi file sembrano essere chiamati .ko.

Dipende dalla distribuzione (o versione dello stesso) se i file sono chiamati .oo .ko, e sono più o meno gli stessi, altrimenti?

Risposte:


11

Ho trovato la seguente risposta qui :

La risposta breve è che il file .ko è il file oggetto collegato ad alcune strutture di dati generate automaticamente dal kernel necessarie al kernel.

Il file .o è il file oggetto dei tuoi moduli, il risultato della compilazione dei tuoi file c. Il sistema di compilazione del kernel crea quindi automaticamente un altro file C con alcune strutture di dati che descrivono il modulo del kernel (chiamato your_module_kmod.c), compila questo file C in un altro file oggetto e collega il file oggetto e il file oggetto che ha creato insieme per creare il .ko file.

Il linker dinamico nel kernel che si occupa del caricamento dei moduli del kernel, si aspetta di trovare la struttura di dati che il kernel ha inserito nell'oggetto kmod nel file .ko e non sarà in grado di caricare il modulo del kernel senza di essi.

Anche da quella fonte , citando tldp : fino alla versione 2.4 del kernel, era ".o", e dal 2.6 è ".ko".


3

Sembra un vecchio howto (tutorial), infatti è stato scritto nel 2005. Quando il kernel Linux era 2.4.x i moduli avevano estensione .o, mentre in 2.6 sono diventati .ko

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.