Wat is het KO-bestandsformaat?
Een .ko-bestand is een loadable kernel module (LKM) voor de Linux-kernel - een binaire plug-in die de kernelfunctionaliteit tijdens runtime uitbreidt zonder dat een herstart of hercompilatie nodig is. Veelvoorkomende toepassingen zijn apparaatstuurprogramma's (grafisch, netwerk, opslag), bestandssysteemimplementaties en beveiligingssubsystemen.
Structureel is een .ko-bestand een ELF-verplaatsbaar object (type ET_REL), dat de standaard ELF-magic bytes (0x7F 0x45 0x4C 0x46) deelt met .so gedeelde bibliotheken. Het onderscheidende kenmerk is een .modinfo ELF-sectie, die sleutel=waarde-metadata opslaat die leesbaar is via modinfo: auteur, beschrijving, licentie, vermagic (de exacte kernelversie + SMP + ABI-string) en parm-vermeldingen voor configureerbare parameters. De .ko-naamgevingsconventie verving de oudere .o-suffix in Linux-kernel 2.6 (2003).
Modules worden geladen met insmod of modprobe en verwijderd met rmmod - allemaal onderdeel van het kmod-pakket. De vermagic-string moet exact overeenkomen met de actieve kernel; een mismatch leidt tot weigering van het laden. Een optionele __versions ELF-sectie slaat CRC32-checksums op per geëxporteerd symbool voor ABI-verificatie.
Sinds kernel 3.3+ worden distributiemodules routinematig gecomprimeerd als .ko.xz, .ko.gz of .ko.zst; modprobe decomprimeert deze transparant. Op systemen met secure-boot voegt module-ondertekening (CONFIG_MODULE_SIG) een RSA- of ECDSA-handtekening toe na de ELF-inhoud; kernels met lockdown ingeschakeld weigeren niet-ondertekende modules.
Beveiliging & veiligheid
RISICO: HIGHKernelmodules draaien met ring-0 (kernel) privileges - het hoogste privilegeniveau. Een kwaadaardig .ko-bestand kan alles doen: rootkits installeren, systeemaanroepen onderscheppen, audit-logging uitschakelen. Laad nooit .ko-bestanden van onbetrouwbare bronnen. Distributiemodules zijn ondertekend; Secure Boot dwingt verificatie van modulehandtekeningen af. Als een .ko weigert te laden vanwege een handtekeningfout, onderzoek dan de oorzaak in plaats van de handtekeningcontrole uit te schakelen.
Formaatdetails
in een notendopProgramma's die KO-bestanden openen
Technische details
diepe specificaties| Formaattype | ELF-verplaatsbaar object (ET_REL), 32-bits of 64-bits afhankelijk van doelarchitectuur |
| Magic bytes | 0x7F 0x45 0x4C 0x46 (0x7F gevolgd door ASCII „ELF”) op bestandsoffset 0 - identiek aan .so gedeelde bibliotheken |
| Bytevolgorde | Architectuurafhankelijk: little-endian op x86/ARM, big-endian op MIPS/PowerPC |
| Belangrijke ELF-sectie | .modinfo - slaat auteur, licentie, vermagic, versie, parm en alias-metadata op als sleutel=waarde-paren |
| ABI-handhaving | vermagic-string in .modinfo codeert exacte kernelversie + SMP-vlaggen; mismatch veroorzaakt weigering van laden |
| Symbool-CRC | Optionele __versions ELF-sectie met CRC32 per geëxporteerd kernelsymbool voor ABI-verificatie |
| Module-ondertekening | RSA/ECDSA-handtekening toegevoegd na ELF-gegevens (CONFIG_MODULE_SIG); kernels met lockdown vereisen een geldige handtekening |
| Compressie | Distributiemodules gecomprimeerd als .ko.xz, .ko.gz of .ko.zst; modprobe decomprimeert transparant (kernel 3.3+) |
| Laadgereedschappen | insmod (direct laden), modprobe (afhankelijkheidsbewust), rmmod (verwijderen) - allemaal onderdeel van kmod-pakket |
| Metadata-tool | modinfo(8) leest .modinfo-sectie; depmod(8) bouwt modules.dep afhankelijkheidskaart |
| Typische grootte | 5 KB - 10 MB (apparaatstuurprogramma's variëren sterk) |
| Naamgevingsgeschiedenis | .ko-suffix verving .o voor kernelmodules vanaf Linux 2.6.0 (2003) |
| Portabiliteit | Alleen Linux; niet compatibel met andere op ELF gebaseerde systemen zonder module-infrastructuur aan de kernelzijde |
| Uitgebracht | 2003 (Linux kernel 2.6; .ko replaced .o module naming convention) |
| Laatste versie | N/A (ELF format is stable; kernel ABI versioning via vermagic string) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | www.kernel.org |
KO conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over KO-bestanden.