¿Qué es el formato de archivo KO?
Un archivo .ko es un módulo de kernel cargable (LKM) para el kernel de Linux: un complemento binario que extiende la funcionalidad del kernel en tiempo de ejecución sin requerir un reinicio o recompilación. Los usos comunes incluyen controladores de dispositivos (gráficos, redes, almacenamiento), implementaciones de sistemas de archivos y subsistemas de seguridad.
Estructuralmente, un archivo .ko es un objeto reubicable ELF (tipo ET_REL), que comparte los magic bytes estándar de ELF (0x7F 0x45 0x4C 0x46) con las bibliotecas compartidas .so. La característica distintiva es una sección ELF .modinfo, que almacena metadatos de clave=valor legibles a través de modinfo: autor, descripción, licencia, vermagic (la versión exacta del kernel + cadena SMP + ABI) y entradas parm para parámetros configurables. La convención de nomenclatura .ko reemplazó al antiguo sufijo .o en el kernel de Linux 2.6 (2003).
Los módulos se cargan con insmod o modprobe y se descargan con rmmod, todos parte del paquete kmod. La cadena vermagic debe coincidir exactamente con el kernel en ejecución; una discrepancia provoca el rechazo de la carga. Una sección ELF opcional __versions almacena sumas de comprobación CRC32 por cada símbolo exportado para la verificación de la ABI.
Desde el kernel 3.3+, los módulos de distribución se comprimen rutinariamente como .ko.xz, .ko.gz o .ko.zst; modprobe los descomprime de forma transparente. En sistemas con arranque seguro (Secure Boot), la firma de módulos (CONFIG_MODULE_SIG) añade una firma RSA o ECDSA después del contenido ELF; los kernels con bloqueo (lockdown) habilitado rechazan los módulos sin firma.
Seguridad y protección
RIESGO: HIGHLos módulos del kernel se ejecutan con privilegios de ring-0 (kernel), el nivel de privilegio más alto. Un archivo .ko malicioso puede hacer cualquier cosa: instalar rootkits, interceptar llamadas al sistema o desactivar el registro de auditoría. Nunca cargue archivos .ko de fuentes no confiables. Los módulos de las distribuciones están firmados; Secure Boot impone la verificación de la firma del módulo. Si un .ko se niega a cargarse debido a un error de firma, investigue el motivo en lugar de desactivar la imposición de firmas.
Detalles del formato
en pocas palabrasProgramas que abren archivos KO
Detalles técnicos
especificación profunda| Tipo de formato | Objeto reubicable ELF (ET_REL), de 32 o 64 bits según la arquitectura de destino |
| Magic bytes | 0x7F 0x45 0x4C 0x46 (0x7F seguido de ASCII «ELF») en el desplazamiento de archivo 0 - idéntico a las bibliotecas compartidas .so |
| Orden de bytes | Dependiente de la arquitectura: little-endian en x86/ARM, big-endian en MIPS/PowerPC |
| Sección ELF clave | .modinfo - almacena metadatos de autor, licencia, vermagic, versión, parm y alias como pares clave=valor |
| Cumplimiento de ABI | La cadena vermagic en .modinfo codifica la versión exacta del kernel + indicadores SMP; la discrepancia provoca el rechazo de la carga |
| CRC de símbolo | Sección ELF opcional __versions con CRC32 por símbolo de kernel exportado para verificación de ABI |
| Firma de módulo | Firma RSA/ECDSA añadida después de los datos ELF (CONFIG_MODULE_SIG); los kernels con bloqueo habilitado requieren una firma válida |
| Compresión | Módulos de distribución comprimidos como .ko.xz, .ko.gz o .ko.zst; modprobe los descomprime de forma transparente (kernel 3.3+) |
| Herramientas de carga | insmod (carga directa), modprobe (consciente de dependencias), rmmod (descarga) - todos parte del paquete kmod |
| Herramienta de metadatos | modinfo(8) lee la sección .modinfo; depmod(8) construye el mapa de dependencias modules.dep |
| Tamaño típico | 5 KB - 10 MB (los módulos de controladores de dispositivos varían ampliamente) |
| Historia de nomenclatura | El sufijo .ko reemplazó a .o para los módulos del kernel a partir de Linux 2.6.0 (2003) |
| Portabilidad | Solo Linux; no es compatible con otros sistemas basados en ELF sin la infraestructura de módulos del lado del kernel |
| Lanzado | 2003 (Linux kernel 2.6; .ko replaced .o module naming convention) |
| Última versión | N/A (ELF format is stable; kernel ABI versioning via vermagic string) |
| Estándar abierto | Sí · libre de regalías |
| Especificación | www.kernel.org |
Conversiones de KO
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos KO.