Habiendo explorado algunos componentes clave de Linux, veamos ahora cómo se unen todos durante el inicio del sistema. Toda la secuencia, desde presionar el botón de encendido hasta llegar a un indicador de inicio de sesión, se conoce como el proceso de arranque de Linux. Es un viaje fascinante que transforma una máquina apagada en un sistema operativo completamente funcional.
El proceso de arranque del sistema operativo Linux se puede simplificar en cuatro etapas principales.
Etapa 1 BIOS
El BIOS (Sistema Básico de Entrada/Salida) o su sucesor moderno, UEFI (Interfaz de Firmware Extensible Unificada), es el primer software que se ejecuta cuando enciendes tu computadora. Realiza una Prueba Automática de Encendido (POST) para inicializar y verificar el hardware del sistema, como la CPU, la memoria y los dispositivos de almacenamiento. Una vez que el hardware está verificado, el trabajo principal del BIOS es localizar y cargar el gestor de arranque desde un dispositivo de almacenamiento.
Etapa 2 Gestor de Arranque (Bootloader)
El gestor de arranque toma el control del BIOS. Su principal responsabilidad es cargar el kernel de Linux en la memoria. Un gestor de arranque común para Linux es GRUB (GRand Unified Bootloader). GRUB a menudo presenta un menú, lo que te permite elegir qué sistema operativo o versión del kernel arrancar. Después de realizar una selección (o después de un tiempo de espera), carga el kernel seleccionado y un disco RAM inicial (initrd) en la memoria, y luego transfiere el control al kernel.
Etapa 3 Kernel
Una vez que el kernel se carga en la memoria, toma el control del sistema. Comienza descomprimiéndose e inicializando el hardware central y la gestión de la memoria. Luego, el kernel monta el sistema de archivos raíz, que contiene todos los archivos del sistema. Su tarea final y más crítica en el proceso de arranque linux consiste en ejecutar el primer programa del espacio de usuario: el proceso init.
Etapa 4 Init
El proceso init es el primer proceso iniciado por el kernel y es el ancestro de todos los demás procesos en el sistema. Su trabajo principal es llevar el sistema a un estado utilizable iniciando servicios esenciales y procesos en segundo plano (daemons) de acuerdo con su configuración. Existen varias implementaciones de init, como el tradicional System V init, Upstart y el ahora ampliamente adoptado systemd.
Esto proporciona una visión general de alto nivel del proceso de arranque linux que sigue. Profundizaremos en cada una de estas etapas en las próximas lecciones.