Hvad er KO-filformatet?
En .ko-fil er et loadable kernel module (LKM) til Linux-kernen - et binært plug-in, der udvider kernens funktionalitet under kørsel uden at kræve genstart eller genkompilering. Almindelige anvendelser inkluderer enhedsdrivere (grafik, netværk, lagring), filsystem-implementeringer og sikkerhedsundersystemer.
Strukturelt er en .ko-fil et ELF-relokerbart objekt (type ET_REL), der deler de standard ELF magic bytes (0x7F 0x45 0x4C 0x46) med .so delte biblioteker. Det kendetegnende træk er en .modinfo ELF-sektion, som gemmer nøgle=værdi-metadata, der kan læses via modinfo: forfatter, beskrivelse, licens, vermagic (den nøjagtige kerneversion + SMP + ABI-streng) og parm-poster for konfigurerbare parametre. Navngivningskonventionen .ko erstattede det ældre .o-suffiks i Linux-kernen 2.6 (2003).
Moduler indlæses med insmod eller modprobe og fjernes med rmmod - alle en del af kmod-pakken. vermagic-strengen skal matche den kørende kerne nøjagtigt; et misforhold medfører afvisning af indlæsning. En valgfri __versions ELF-sektion gemmer CRC32-kontrolsummer pr. eksporteret symbol til ABI-verificering.
Siden kerne 3.3+ bliver distributionsmoduler rutinemæssigt komprimeret som .ko.xz, .ko.gz eller .ko.zst; modprobe dekomprimerer dem gennemsigtigt. På systemer med Secure Boot tilføjer modulsignering (CONFIG_MODULE_SIG) en RSA- eller ECDSA-signatur efter ELF-indholdet; kerner med lockdown aktiveret afviser usignerede moduler.
Sikkerhed og tryghed
RISIKO: HIGHKernemoduler kører med ring-0 (kerne) privilegier - det højeste privilegieniveau. En ondsindet .ko-fil kan gøre alt: installere rootkits, opsnappe systemkald, deaktivere revisionslogning. Indlæs aldrig .ko-filer fra upålidelige kilder. Distributionsmoduler er signerede; Secure Boot håndhæver verificering af modulsignaturer. Hvis en .ko nægter at indlæse på grund af en signaturfejl, skal du undersøge hvorfor i stedet for at deaktivere signaturhåndhævelsen.
Formatdetaljer
kort fortaltProgrammer der åbner KO-filer
Tekniske detaljer
dyb specifikation| Format-type | ELF-relokerbart objekt (ET_REL), 32-bit eller 64-bit afhængigt af målarkitektur |
| Magic bytes | 0x7F 0x45 0x4C 0x46 (0x7F efterfulgt af ASCII «ELF») ved fil-offset 0 - identisk med .so delte biblioteker |
| Byte-orden | Arkitekturafhængig: little-endian på x86/ARM, big-endian på MIPS/PowerPC |
| Vigtig ELF-sektion | .modinfo - gemmer forfatter, licens, vermagic, version, parm og alias-metadata som nøgle=værdi-par |
| ABI-håndhævelse | vermagic-streng i .modinfo koder den nøjagtige kerneversion + SMP-flag; misforhold medfører afvisning af indlæsning |
| Symbol CRC | Valgfri __versions ELF-sektion med CRC32 pr. eksporteret kernesymbol til ABI-verificering |
| Modulsignering | RSA/ECDSA-signatur tilføjet efter ELF-data (CONFIG_MODULE_SIG); kerner med lockdown kræver en gyldig signatur |
| Komprimering | Distributionsmoduler komprimeret som .ko.xz, .ko.gz eller .ko.zst; modprobe dekomprimerer gennemsigtigt (kerne 3.3+) |
| Indlæsningsværktøjer | insmod (direkte indlæsning), modprobe (afhængighedsbevidst), rmmod (fjernelse) - alle en del af kmod-pakken |
| Metadataværktøj | modinfo(8) læser .modinfo-sektionen; depmod(8) bygger modules.dep-afhængighedskortet |
| Typisk størrelse | 5 KB - 10 MB (enhedsdrivermoduler varierer meget) |
| Navngivningshistorik | .ko-suffikset erstattede .o for kernemoduler startende med Linux 2.6.0 (2003) |
| Portabilitet | Kun Linux; ikke kompatibel med andre ELF-baserede systemer uden kerneside-modulinfrastruktur |
| Udgivet | 2003 (Linux kernel 2.6; .ko replaced .o module naming convention) |
| Seneste version | N/A (ELF format is stable; kernel ABI versioning via vermagic string) |
| Åben standard | Ja · royaltyfri |
| Specifikation | www.kernel.org |
KO-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om KO-filer.