Compilación Cruzada de Módulos del Kernel de Linux: Guía Práctica

Guía paso a paso para compilar en cruzado un kernel Linux para ARM64, construir un rootfs mínimo con BusyBox e initramfs, y probarlo en QEMU cargando módulos del kernel.

8 sept 2025 • 4 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

Bienvenidos a mi primer post técnico reimaginado en español. Hoy nos sumergimos en el mundo práctico de la compilación cruzada de módulos del kernel de Linux, una habilidad esencial en desarrollo embebido. Si trabajas con Raspberry Pi, placas ARM personalizadas o entornos virtualizados, dominar este flujo te permitirá construir, probar y desplegar de forma eficiente.

Antes de ensuciarnos las manos, repasemos el proceso de compilación. Un programa pasa por cuatro fases: 1 Preprocesado expansión de macros e includes, 2 Compilación el compilador convierte a ensamblador, 3 Ensamblado genera código máquina en archivos objeto, 4 Enlace combina objetos y bibliotecas en binarios ejecutables.

Estrategias de compilación. 1 Compilación nativa compilar en la misma arquitectura donde ejecutará. 2 Compilación cruzada compilar en una arquitectura distinta a la de destino usando un toolchain cruzado. ¿Por qué compilar en cruzado? Porque muchos objetivos embebidos tienen recursos limitados y compilar allí sería lento o inviable.

El toolchain de compilación cruzada incluye compilador, enlazador y bibliotecas del destino. Para ARM64 usaremos aarch64-linux-gnu con herramientas como aarch64-linux-gnu-gcc, binutils aarch64-linux-gnu-ld y aarch64-linux-gnu-objcopy, y bibliotecas C para ARM64. Este toolchain corre en un host x86-64 y genera binarios ARM64.

Paso 1 Preparación del entorno. En Ubuntu 22.04 instala paquetes como qemu-system-arm, gcc-aarch64-linux-gnu, build-essential, libncurses-dev, bison, flex, libssl-dev, libelf-dev, cpio y kmod. Clona el proyecto con el módulo de ejemplo hello_module.c y su Makefile usando git clone https://github.com/samar12lassoued/kernel-module-arm-qemu.

Paso 2 Descarga y prepara el kernel. Obtén Linux 6.6 desde kernel.org, descomprime y entra al directorio. Exporta ARCH=arm64 y CROSS_COMPILE=aarch64-linux-gnu- para definir arquitectura y prefijo del compilador cruzado.

Paso 3 Configuración y construcción del kernel. Ejecuta make defconfig para una configuración por defecto ARM64. Opcionalmente usa make menuconfig para personalizar opciones con Y habilitar, N deshabilitar y M compilar como módulo. Verifica en .config opciones clave como CONFIG_BLK_DEV_INITRD=y, CONFIG_DEVTMPFS=y y CONFIG_SERIAL_AMBA_PL011=y. Compila imagen y módulos con make -j nproc Image y make -j nproc modules. Verifica el artefacto con file arch/arm64/boot/Image que debe indicar Linux kernel ARM64 boot executable Image.

Paso 4 Compilar BusyBox para un rootfs mínimo. Descarga BusyBox 1.36, ejecuta make defconfig y luego make menuconfig para activar Settings Build static binary no shared libs. Compila en cruzado con make CROSS_COMPILE=aarch64-linux-gnu- install y comprueba que _install/bin/busybox es un binario ARM64.

Paso 5 Construcción del root filesystem. Crea la estructura mínima en rootfs con directorios bin, dev, etc, proc, sys, tmp, usr/bin. Copia el contenido de _install a rootfs. Crea nodos de dispositivo esenciales con mknod para dev/console y dev/null. Usaremos initramfs para iniciar el sistema en memoria volátil, ideal para pruebas limpias en cada arranque.

Paso 6 Crear el script init. En rootfs crea un archivo llamado init ejecutable que monte proc, sysfs y devtmpfs, exporte PATH y SHELL, muestre un mensaje de arranque y ejecute una shell con exec bin/sh. Este será el primer proceso de usuario que invoca el kernel.

Paso 7 Compilación e integración del módulo. Compila el módulo externo con make KDIR=linux-6.6 cross-compile y verifica con file hello_module.ko que sea ARM64. Copia hello_module.ko a rootfs, empaqueta initramfs con find . | cpio -o -H newc | gzip > initramfs.cpio.gz desde el directorio rootfs.

Paso 8 Pruebas con QEMU. Arranca una VM ARM64 con qemu-system-aarch64 usando -M virt, -cpu cortex-a53, -smp 2, -m 1G, -kernel linux-6.6/arch/arm64/boot/Image, -initrd initramfs.cpio.gz, -append console=ttyAMA0 earlycon=pl011,0x9000000 init=/init, -nographic y -no-reboot. Esto emula una placa genérica ARM64 con UART PL011 como consola y enruta IO a la terminal.

Paso 9 Pruebas en tiempo de ejecución del módulo. Dentro del sistema, carga con insmod hello_module.ko, inspecciona dmesg y descarga con rmmod hello_module para confirmar mensajes de inicialización y salida del módulo.

En resumen, hoy has 1 Compilado en cruzado un kernel Linux para ARM64, 2 Construido un rootfs mínimo con BusyBox, 3 Creado un initramfs funcional, 4 Escrito y compilado en cruzado un módulo del kernel, 5 Arrancado una VM ARM64 en QEMU, 6 Cargado y probado tu módulo personalizado. El desarrollo embebido no es tan intimidante cuando dominas el flujo de trabajo.

En Q2BSTUDIO ayudamos a equipos técnicos a industrializar este tipo de procesos con pipelines de CI, infraestructura reproducible y entregables robustos. Si buscas construir plataformas robustas, integración con hardware y servicios sostenibles, nuestro equipo experto en aplicaciones a medida y software a medida puede acelerar tus objetivos. Descubre cómo abordamos proyectos complejos con un enfoque multiplataforma en desarrollo de aplicaciones y software a medida.

También diseñamos y operamos entornos de build y pruebas en la nube para compilación cruzada con seguridad, observabilidad y escalado automático. Podemos desplegar workers efímeros, cachés de compilación y artefactories sobre AWS y Azure. Conoce nuestros servicios cloud AWS y Azure y cómo integrar estos flujos con ciberseguridad, pentesting, inteligencia artificial, agentes IA e IA para empresas. Completamos el ciclo con analítica avanzada, servicios inteligencia de negocio y cuadros de mando con power bi.

Recursos recomendados para profundizar Linux Kernel documentation, BusyBox official docs, QEMU ARM System Emulation, Building External Modules Guide, The Linux Kernel Module Programming Guide y la guía de ARM GCC cross compiler.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat