Che cos'è il formato di file KO?
Un file .ko è un loadable kernel module (LKM) per il kernel Linux - un plug-in binario che estende le funzionalità del kernel a runtime senza richiedere un riavvio o una ricompilazione. Gli usi comuni includono driver di dispositivo (grafica, rete, archiviazione), implementazioni di filesystem e sottosistemi di sicurezza.
Strutturalmente, un file .ko è un oggetto rilocabile ELF (tipo ET_REL), che condivide i magic bytes standard ELF (0x7F 0x45 0x4C 0x46) con le librerie condivise .so. La caratteristica distintiva è una sezione ELF .modinfo, che memorizza metadati chiave=valore leggibili tramite modinfo: autore, descrizione, licenza, vermagic (la versione esatta del kernel + stringa SMP + ABI) e voci parm per i parametri configurabili. La convenzione di denominazione .ko ha sostituito il vecchio suffisso .o nel kernel Linux 2.6 (2003).
I moduli vengono caricati con insmod o modprobe e scaricati con rmmod - tutti parte del pacchetto kmod. La stringa vermagic deve corrispondere esattamente al kernel in esecuzione; una mancata corrispondenza causa il rifiuto del caricamento. Una sezione ELF opzionale __versions memorizza i checksum CRC32 per ogni simbolo esportato per la verifica dell'ABI.
A partire dal kernel 3.3+, i moduli di distribuzione sono regolarmente compressi come .ko.xz, .ko.gz o .ko.zst; modprobe li decomprime in modo trasparente. Sui sistemi con secure-boot, la firma del modulo (CONFIG_MODULE_SIG) aggiunge una firma RSA o ECDSA dopo il contenuto ELF; i kernel con lockdown abilitato rifiutano i moduli non firmati.
Sicurezza e incolumità
RISCHIO: HIGHI moduli del kernel vengono eseguiti con privilegi ring-0 (kernel) - il livello di privilegio più alto. Un file .ko malevolo può fare qualsiasi cosa: installare rootkit, intercettare chiamate di sistema, disabilitare la registrazione dei log di controllo. Non caricare mai file .ko da fonti non attendibili. I moduli della distribuzione sono firmati; Secure Boot impone la verifica della firma del modulo. Se un .ko rifiuta di caricarsi a causa di un errore di firma, indaga sul motivo invece di disabilitare l'imposizione della firma.
Dettagli del formato
in sintesiProgrammi che aprono file KO
Dettagli tecnici
specifiche approfondite| Tipo di formato | Oggetto rilocabile ELF (ET_REL), a 32 o 64 bit a seconda dell'architettura di destinazione |
| Magic bytes | 0x7F 0x45 0x4C 0x46 (0x7F seguito da ASCII «ELF») all'offset 0 del file - identico alle librerie condivise .so |
| Ordine dei byte | Dipendente dall'architettura: little-endian su x86/ARM, big-endian su MIPS/PowerPC |
| Sezione ELF chiave | .modinfo - memorizza autore, licenza, vermagic, versione, parm e metadati alias come coppie chiave=valore |
| Applicazione ABI | La stringa vermagic in .modinfo codifica l'esatta versione del kernel + i flag SMP; la mancata corrispondenza causa il rifiuto del caricamento |
| CRC dei simboli | Sezione ELF __versions opzionale con CRC32 per ogni simbolo del kernel esportato per la verifica dell'ABI |
| Firma del modulo | Firma RSA/ECDSA aggiunta dopo i dati ELF (CONFIG_MODULE_SIG); i kernel con lockdown abilitato richiedono una firma valida |
| Compressione | Moduli di distribuzione compressi come .ko.xz, .ko.gz o .ko.zst; modprobe decomprime in modo trasparente (kernel 3.3+) |
| Strumenti di caricamento | insmod (caricamento diretto), modprobe (consapevole delle dipendenze), rmmod (scaricamento) - tutti parte del pacchetto kmod |
| Strumento metadati | modinfo(8) legge la sezione .modinfo; depmod(8) crea la mappa delle dipendenze modules.dep |
| Dimensione tipica | 5 KB - 10 MB (i moduli dei driver di dispositivo variano ampiamente) |
| Storia della denominazione | Il suffisso .ko ha sostituito .o per i moduli del kernel a partire da Linux 2.6.0 (2003) |
| Portabilità | Solo Linux; non compatibile con altri sistemi basati su ELF senza l'infrastruttura dei moduli lato kernel |
| Rilasciato | 2003 (Linux kernel 2.6; .ko replaced .o module naming convention) |
| Ultima versione | N/A (ELF format is stable; kernel ABI versioning via vermagic string) |
| Standard aperto | Sì · royalty-free |
| Specifica | www.kernel.org |
Conversioni KO
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file KO.