Vad är filformatet KO?
En .ko-fil är en laddbar kärnmodul (LKM) för Linux-kärnan - ett binärt insticksprogram som utökar kärnans funktionalitet vid körning utan att kräva omstart eller omkompilering. Vanliga användningsområden inkluderar drivrutiner (grafik, nätverk, lagring), filsystemsimplementeringar och säkerhetssubsystem.
Strukturellt sett är en .ko-fil ett omflyttbart ELF-objekt (typ ET_REL), som delar standard ELF-magic bytes (0x7F 0x45 0x4C 0x46) med delade bibliotek i .so-format. Den utmärkande egenskapen är en .modinfo ELF-sektion, som lagrar metadata i form av nyckel=värde-par som är läsbara via modinfo: författare, beskrivning, licens, vermagic (den exakta kärnversionen + SMP + ABI-sträng) och parm-poster för konfigurerbara parametrar. Namngivningskonventionen .ko ersatte det äldre suffixet .o i Linux-kärnan 2.6 (2003).
Moduler laddas med insmod eller modprobe och tas bort med rmmod - alla en del av paketet kmod. Strängen vermagic måste matcha den körande kärnan exakt; en avvikelse gör att laddningen nekas. En valfri __versions ELF-sektion lagrar CRC32-kontrollsummor per exporterad symbol för ABI-verifiering.
Sedan kärna 3.3+ komprimeras distributionsmoduler rutinmässigt som .ko.xz, .ko.gz eller .ko.zst; modprobe dekomprimerar dessa transparent. På system med Secure Boot lägger modulsignering (CONFIG_MODULE_SIG) till en RSA- eller ECDSA-signatur efter ELF-innehållet; kärnor med lockdown aktiverat avvisar osignerade moduler.
Säkerhet & trygghet
RISK: HIGHKärnmoduler körs med ring-0 (kärna) privilegier - den högsta privilegienivån. En skadlig .ko-fil kan göra vad som helst: installera rootkits, avlyssna systemanrop eller inaktivera granskningsloggning. Ladda aldrig .ko-filer från opålitliga källor. Distributionsmoduler är signerade; Secure Boot tvingar fram verifiering av modulsignaturer. Om en .ko-fil nekas laddning på grund av signaturfel, undersök varför istället för att inaktivera signaturkravet.
Formatdetaljer
i ett nötskalProgram som öppnar KO-filer
Tekniska detaljer
djup specifikation| Formattyp | ELF omflyttbart objekt (ET_REL), 32-bitars eller 64-bitars beroende på målarkitektur |
| Magic bytes | 0x7F 0x45 0x4C 0x46 (0x7F följt av ASCII «ELF») vid filoffset 0 - identiskt med .so delade bibliotek |
| Byteordning | Arkitekturberoende: little-endian på x86/ARM, big-endian på MIPS/PowerPC |
| Viktig ELF-sektion | .modinfo - lagrar metadata för författare, licens, vermagic, version, parm och alias som nyckel=värde-par |
| ABI-kontroll | vermagic-strängen i .modinfo kodar exakt kärnversion + SMP-flaggor; avvikelse nekar laddning |
| Symbol-CRC | Valfri __versions ELF-sektion med CRC32 per exporterad kärnsymbol för ABI-verifiering |
| Modulsignering | RSA/ECDSA-signatur tillagd efter ELF-data (CONFIG_MODULE_SIG); kärnor med lockdown kräver en giltig signatur |
| Komprimering | Distributionsmoduler komprimerade som .ko.xz, .ko.gz eller .ko.zst; modprobe dekomprimerar transparent (kärna 3.3+) |
| Laddningsverktyg | insmod (direkt laddning), modprobe (hanterar beroenden), rmmod (avlastning) - alla en del av kmod-paketet |
| Metadataverktyg | modinfo(8) läser .modinfo-sektionen; depmod(8) bygger beroendekartan modules.dep |
| Typisk storlek | 5 KB - 10 MB (drivrutinsmoduler varierar kraftigt) |
| Namnhistorik | Suffixet .ko ersatte .o för kärnmoduler med start i Linux 2.6.0 (2003) |
| Portabilitet | Endast Linux; inte kompatibel med andra ELF-baserade system utan kärninfrastruktur för moduler |
| Släppt | 2003 (Linux kernel 2.6; .ko replaced .o module naming convention) |
| Senaste version | N/A (ELF format is stable; kernel ABI versioning via vermagic string) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | www.kernel.org |
KO-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om KO-filer.