Qué ocurre cuándo enciendes tu PC: el arranque del kernel de Linux

Fuentes: The Linux Kernel Startup | Internals for Interns
Qué ocurre cuándo enciendes tu PC: el arranque del kernel de Linux
Imagen generada con IA

El arranque del kernel de Linux es un proceso fascinante que ocurre entre el momento en que enciendes tu computadora y cuando aparece la pantalla de login. Este proceso, que usualmente dura solo unos segundos, implica una de las secuencias de inicialización más complejas en computación. El kernel de Linux funciona como un 'equipo avanzado' que aterriza en un 'planeta enemigo' (tu computadora apagada) y debe construir toda la infraestructura necesaria antes de que los 'colonos' (el sistema operativo y tus aplicaciones) puedan funcionar. El bootloader, como GRUB, entrega el control al kernel, pero en ese momento el sistema tiene recursos limitados: la CPU está en diferentes modos (16-bit Real Mode, 32-bit Protected Mode o 64-bit Long Mode), la memoria está parcialmente mapeada y no existen aún servicios básicos como la consola o el manejo de interrupciones. El proceso comienza con un pequeño descompresor que maneja archivos bzImage comprimidos, que además implementa KASLR (Kernel Address Space Layout Randomization) para seguridad. Luego se configura el stack, la GDT y la IDT, dos tablas esenciales para el funcionamiento de la CPU. En sistemas con soporte de hardware, se activa el cifrado de memoria (SME en AMD o TME en Intel). El kernel verifica que la CPU soporte las características necesarias como Long Mode y SSE2 mediante la función verify_cpu. Finalmente, se resuelve el 'problema del direccionamiento': el kernel fue cargado en una dirección física baja pero está compilado para ejecutarse en direcciones virtuales altas, lo cual requiere configurar page tables dinámicas. Este proceso transforma literalmente el código de inicialización en el sistema operativo que usamos diariamente.