Hva er KO-filformatet?
En .ko-fil er en lastbar kjernemodul (LKM) for Linux-kjernen - en binær programutvidelse som utvider kjernens funksjonalitet ved kjøretid uten å kreve omstart eller rekompilering. Vanlige bruksområder inkluderer enhetsdrivere (grafikk, nettverk, lagring), filsystemimplementeringer og sikkerhetsundersystemer.
Strukturelt sett er en .ko-fil et ELF-relokerbart objekt (type ET_REL), som deler de standard ELF-magiske bytene (0x7F 0x45 0x4C 0x46) med .so delte biblioteker. Det skillende trekket er en .modinfo ELF-seksjon, som lagrer nøkkel=verdi-metadata som er lesbare via modinfo: forfatter, beskrivelse, lisens, vermagic (den nøyaktige kjerneversjonen + SMP + ABI-streng), og parm-oppføringer for konfigurerbare parametere. Navnekonvensjonen .ko erstattet det eldre suffikset .o i Linux-kjerne 2.6 (2003).
Moduler lastes med insmod eller modprobe og fjernes med rmmod - alle en del av kmod-pakken. vermagic-strengen må samsvare nøyaktig med den kjørende kjernen; et avvik fører til at lastingen avvises. En valgfri __versions ELF-seksjon lagrer CRC32-sjekksummer per eksportert symbol for ABI-verifisering.
Siden kjerne 3.3+ blir distribusjonsmoduler rutinemessig komprimert som .ko.xz, .ko.gz eller .ko.zst; modprobe dekomprimerer disse automatisk. På systemer med Secure Boot legger modulsignering (CONFIG_MODULE_SIG) til en RSA- eller ECDSA-signatur etter ELF-innholdet; kjerner med «lockdown» aktivert avviser usignerte moduler.
Sikkerhet og trygghet
RISIKO: HIGHKjernemoduler kjører med ring-0 (kjerne) privilegier - det høyeste privilegienivået. En ondsinnet .ko-fil kan gjøre hva som helst: installere rootkits, avskjære systemkall eller deaktivere revisjonslogging. Last aldri .ko-filer fra upålitelige kilder. Distribusjonsmoduler er signerte; Secure Boot håndhever verifisering av modulsignaturer. Hvis en .ko-fil nekter å laste på grunn av signaturfeil, undersøk hvorfor i stedet for å deaktivere signaturhåndheving.
Formatdetaljer
i et nøtteskallProgrammer som åpner KO-filer
Tekniske detaljer
dyp spesifikasjon| Format-type | ELF-relokerbart objekt (ET_REL), 32-bit eller 64-bit avhengig av målarkitektur |
| Magiske byte | 0x7F 0x45 0x4C 0x46 (0x7F etterfulgt av ASCII «ELF») ved filforskyvning 0 - identisk med .so delte biblioteker |
| Byterekkefølge | Arkitekturavhengig: little-endian på x86/ARM, big-endian på MIPS/PowerPC |
| Viktig ELF-seksjon | .modinfo - lagrer metadata for forfatter, lisens, vermagic, versjon, parm og alias som nøkkel=verdi-par |
| ABI-håndheving | vermagic-streng i .modinfo koder nøyaktig kjerneversjon + SMP-flagg; misforhold fører til avvisning |
| Symbol-CRC | Valgfri __versions ELF-seksjon med CRC32 per eksportert kjernesymbol for ABI-verifisering |
| Modulsignering | RSA/ECDSA-signatur lagt til etter ELF-data (CONFIG_MODULE_SIG); kjerner med lockdown krever en gyldig signatur |
| Komprimering | Distribusjonsmoduler komprimert som .ko.xz, .ko.gz eller .ko.zst; modprobe dekomprimerer automatisk (kjerne 3.3+) |
| Verktøy for lasting | insmod (direkte lasting), modprobe (håndterer avhengigheter), rmmod (fjerning) - alle del av kmod-pakken |
| Metadata-verktøy | modinfo(8) leser .modinfo-seksjonen; depmod(8) bygger modules.dep-avhengighetskart |
| Typisk størrelse | 5 KB - 10 MB (enhetsdrivermoduler varierer mye) |
| Navnehistorikk | .ko-suffikset erstattet .o for kjernemoduler fra og med Linux 2.6.0 (2003) |
| Portabilitet | Kun Linux; ikke kompatibel med andre ELF-baserte systemer uten modul-infrastruktur på kjernesiden |
| Utgitt | 2003 (Linux kernel 2.6; .ko replaced .o module naming convention) |
| Siste versjon | N/A (ELF format is stable; kernel ABI versioning via vermagic string) |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | www.kernel.org |
KO-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om KO-filer.