Qu'est-ce que le format de fichier KO ?
Un fichier .ko est un module de noyau chargeable (LKM) pour le noyau Linux - un plug-in binaire qui étend les fonctionnalités du noyau au moment de l'exécution sans nécessiter de redémarrage ou de recompilation. Les utilisations courantes incluent les pilotes de périphériques (graphiques, réseau, stockage), les implémentations de systèmes de fichiers et les sous-systèmes de sécurité.
Structurellement, un fichier .ko est un objet relogeable ELF (type ET_REL), partageant les octets magiques standard ELF (0x7F 0x45 0x4C 0x46) avec les bibliothèques partagées .so. La caractéristique distinctive est une section ELF .modinfo, qui stocke des métadonnées clé=valeur lisibles via modinfo : auteur, description, licence, vermagic (la version exacte du noyau + SMP + chaîne ABI) et les entrées parm pour les paramètres configurables. La convention de nommage .ko a remplacé l'ancien suffixe .o dans le noyau Linux 2.6 (2003).
Les modules sont chargés avec insmod ou modprobe et déchargés avec rmmod - tous faisant partie du paquet kmod. La chaîne vermagic doit correspondre exactement au noyau en cours d'exécution ; une discordance entraîne le rejet du chargement. Une section ELF optionnelle __versions stocke les sommes de contrôle CRC32 par symbole exporté pour la vérification de l'ABI.
Depuis le noyau 3.3+, les modules de distribution sont couramment compressés en .ko.xz, .ko.gz ou .ko.zst ; modprobe les décompresse de manière transparente. Sur les systèmes avec démarrage sécurisé (Secure Boot), la signature des modules (CONFIG_MODULE_SIG) ajoute une signature RSA ou ECDSA après le contenu ELF ; les noyaux avec verrouillage activé rejettent les modules non signés.
Sécurité et sûreté
RISQUE : HIGHLes modules de noyau s'exécutent avec le privilège ring-0 (noyau) - le niveau de privilège le plus élevé. Un fichier .ko malveillant peut tout faire : installer des rootkits, intercepter des appels système, désactiver la journalisation d'audit. Ne chargez jamais de fichiers .ko provenant de sources non fiables. Les modules de distribution sont signés ; Secure Boot impose la vérification de la signature des modules. Si un .ko refuse de se charger en raison d'une erreur de signature, recherchez pourquoi plutôt que de désactiver l'application de la signature.
Détails du format
en brefProgrammes qui ouvrent les fichiers KO
Détails techniques
spécifications approfondies| Type de format | Objet relogeable ELF (ET_REL), 32 bits ou 64 bits selon l'architecture cible |
| Octets magiques | 0x7F 0x45 0x4C 0x46 (0x7F suivi de l'ASCII « ELF ») à l'offset 0 du fichier - identique aux bibliothèques partagées .so |
| Ordre des octets | Dépendant de l'architecture : petit-boutiste (little-endian) sur x86/ARM, gros-boutiste (big-endian) sur MIPS/PowerPC |
| Section ELF clé | .modinfo - stocke l'auteur, la licence, le vermagic, la version, parm et les métadonnées d'alias sous forme de paires clé=valeur |
| Application de l'ABI | La chaîne vermagic dans .modinfo encode la version exacte du noyau + les drapeaux SMP ; une discordance entraîne le rejet du chargement |
| CRC de symbole | Section ELF __versions optionnelle avec CRC32 par symbole de noyau exporté pour la vérification de l'ABI |
| Signature de module | Signature RSA/ECDSA ajoutée après les données ELF (CONFIG_MODULE_SIG) ; les noyaux avec verrouillage activé exigent une signature valide |
| Compression | Modules de distribution compressés en .ko.xz, .ko.gz ou .ko.zst ; modprobe décompresse de manière transparente (noyau 3.3+) |
| Outils de chargement | insmod (chargement direct), modprobe (gestion des dépendances), rmmod (déchargement) - tous font partie du paquet kmod |
| Outil de métadonnées | modinfo(8) lit la section .modinfo ; depmod(8) construit la carte de dépendances modules.dep |
| Taille typique | 5 Ko - 10 Mo (les modules de pilotes de périphériques varient considérablement) |
| Historique du nommage | Le suffixe .ko a remplacé .o pour les modules de noyau à partir de Linux 2.6.0 (2003) |
| Portabilité | Linux uniquement ; non compatible avec d'autres systèmes basés sur ELF sans l'infrastructure de module côté noyau |
| Publié | 2003 (Linux kernel 2.6; .ko replaced .o module naming convention) |
| Dernière version | N/A (ELF format is stable; kernel ABI versioning via vermagic string) |
| Standard ouvert | Oui · libre de droits |
| Spécification | www.kernel.org |
Conversions KO
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers KO.