Was ist das KO-Dateiformat?
Eine .ko Datei ist ein ladbares Kernel-Modul (LKM) für den Linux-Kernel - ein binäres Plug-in, das die Kernel-Funktionalität zur Laufzeit erweitert, ohne dass ein Neustart oder eine Neukompilierung erforderlich ist. Typische Anwendungen sind Gerätetreiber (Grafik, Netzwerk, Speicher), Dateisystem-Implementierungen und Sicherheits-Subsysteme.
Strukturell ist eine .ko Datei ein verschiebbares ELF-Objekt (Typ ET_REL) und teilt die Standard-ELF-Magic-Bytes (0x7F 0x45 0x4C 0x46) mit .so Shared Libraries. Das Unterscheidungsmerkmal ist eine .modinfo ELF-Sektion, die Metadaten im Format Schlüssel=Wert speichert, die über modinfo lesbar sind: Autor, Beschreibung, Lizenz, vermagic (die exakte Kernel-Version + SMP + ABI-String) und parm-Einträge für konfigurierbare Parameter. Die Benennungskonvention .ko ersetzte das ältere Suffix .o im Linux-Kernel 2.6 (2003).
Module werden mit insmod oder modprobe geladen und mit rmmod entladen - alle Teil des kmod-Pakets. Der vermagic-String muss exakt mit dem laufenden Kernel übereinstimmen; eine Abweichung führt zur Ablehnung des Ladevorgangs. Eine optionale __versions ELF-Sektion speichert CRC32-Prüfsummen pro exportiertem Symbol zur ABI-Verifizierung.
Seit Kernel 3.3+ werden Distributionsmodule routinemäßig als .ko.xz, .ko.gz oder .ko.zst komprimiert; modprobe dekomprimiert diese transparent. Auf Secure-Boot-Systemen fügt die Modul-Signierung (CONFIG_MODULE_SIG) eine RSA- oder ECDSA-Signatur nach dem ELF-Inhalt an; Kernel mit aktiviertem Lockdown lehnen unsignierte Module ab.
Sicherheit
RISIKO: HIGHKernel-Module laufen mit Ring-0 (Kernel) Privilegien - der höchsten Berechtigungsstufe. Eine bösartige .ko Datei kann alles tun: Rootkits installieren, Systemaufrufe abfangen, Audit-Protokollierung deaktivieren. Laden Sie niemals .ko Dateien aus nicht vertrauenswürdigen Quellen. Distributionsmodule sind signiert; Secure Boot erzwingt die Verifizierung der Modulsignatur. Wenn eine .ko Datei das Laden aufgrund eines Signaturfehlers verweigert, untersuchen Sie die Ursache, anstatt die Signaturerzwingung zu deaktivieren.
Formatdetails
kurz gefasstProgramme zum Öffnen von KO-Dateien
Technische Details
technische Spezifikation| Format-Typ | Verschiebbares ELF-Objekt (ET_REL), 32-Bit oder 64-Bit je nach Zielarchitektur |
| Magic Bytes | 0x7F 0x45 0x4C 0x46 (0x7F gefolgt von ASCII „ELF”) bei Dateioffset 0 - identisch mit .so Shared Libraries |
| Byte-Reihenfolge | Architekturabhängig: Little-Endian auf x86/ARM, Big-Endian auf MIPS/PowerPC |
| Wichtige ELF-Sektion | .modinfo - speichert Autor, Lizenz, vermagic, Version, parm und Alias-Metadaten als Schlüssel=Wert-Paare |
| ABI-Erzwingung | vermagic-String in .modinfo kodiert exakte Kernel-Version + SMP-Flags; Abweichung führt zur Ablehnung |
| Symbol-CRC | Optionale __versions ELF-Sektion mit CRC32 pro exportiertem Kernel-Symbol zur ABI-Verifizierung |
| Modul-Signierung | RSA/ECDSA-Signatur nach den ELF-Daten angehängt (CONFIG_MODULE_SIG); Lockdown-Kernel erfordern gültige Signatur |
| Komprimierung | Distributionsmodule komprimiert als .ko.xz, .ko.gz oder .ko.zst; modprobe dekomprimiert transparent (Kernel 3.3+) |
| Lade-Werkzeuge | insmod (direktes Laden), modprobe (beachtet Abhängigkeiten), rmmod (Entladen) - alle Teil des kmod-Pakets |
| Metadaten-Werkzeug | modinfo(8) liest .modinfo Sektion; depmod(8) erstellt modules.dep Abhängigkeitskarte |
| Typische Größe | 5 KB - 10 MB (Gerätetreiber-Module variieren stark) |
| Namenshistorie | Das Suffix .ko ersetzte .o für Kernel-Module beginnend mit Linux 2.6.0 (2003) |
| Portabilität | Nur Linux; nicht kompatibel mit anderen ELF-basierten Systemen ohne Kernel-seitige Modul-Infrastruktur |
| Veröffentlicht | 2003 (Linux kernel 2.6; .ko replaced .o module naming convention) |
| Neueste Version | N/A (ELF format is stable; kernel ABI versioning via vermagic string) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | www.kernel.org |
KO-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu KO-Dateien.