Cómo es el proceso de arranque de un GNU/Linux
¿Quieres saber lo que sucede realmente en un ordenador o computadora, desde el momento en que presionas el botón de encender hasta que tienes delante de tí el sistema GNU/Linux cargado y listo para usarlo? El proceso de arranque de Linux puede resultar misterioso, pero aquí te lo explico para que lo entiendas fácilmente.
Si estás empezando en el mundo de GNU/Linux y no tienes claro cuales son los conceptos más importantes, puede apuntarte ya a mi curso básico gratuito sobre Linux.
Índice de contenidos
Arrancando el PC con Linux
Obviamente, el proceso comienza cuando presionas el botón de encendido para encender tu computadora.
Antes de hacer nada y de iniciar cualquier programa, el sistema tiene que hacer un pequeño chequeo interno para asegurar que todo está bien instalado, que la fuente de alimentación da la corriente correcta, que el equipo tiene memoria RAM, procesador, disipadores, periféricos, etc…
Este programa es la BIOS o más actualmente UEFI. Son básicamente bloques de software que revisan y preparan todas las partes principales de tu PC para el momento de entrar en acción.
Diferencias entre BIOS y UEFI
UEFI es la evolución de la BIOS que ofrece tiempos más rápidos y mejores características de seguridad, como el arranque seguro o SecureBoot.
Una diferencia fundamental entre BIOS y UEFI es su enfoque hacia el almacenamiento.
BIOS está vinculado al sistema de registro de arranque maestro (MBR) que limita este tamaño de las particiones a 2 TB.
UEFI, por otro lado, utiliza un tipo de tabla de particiones GPT (como el CHAT, jejeje), que elimina estas restricciones de tamaño y ofrece un entorno más flexible y moderno.
Proceso POST en el arranque
Volvamos a las tareas de estos programas. Después la BIOS o el UEFi ejecutan un chequeo llamado POST antes del arranque y comienza a probar que todas las diferentes partes del hardware funcionan correctamente justo antes de iniciar todo por completo.
Si esta aplicación o proceso POST encuentra un problema antes de empezar, se mostrará por pantalla un mensaje de error o incluso te avisará mediante pitidos de la propia placa base o placa madre.
Si todo se verifica correctamente aparecerá por pantalla el menú del BIOS o UEFI, y ya pasamos al siguiente paso, que es encontrar y cargar el software que llamamos cargador de arranque.
Cargador de arranque de Linux
Este cargador de arranque se puede configurar para que sea buscado en diferentes dispositivos de almacenamiento. En el menú de BOOT podemos verificar los dispositivos de almacenamiento que han sido reconocidos, como pueden ser los discos duros y las unidades USB o CD.
Si no tenemos nada todavía en el disco duro porque queramos realizar una instalación nueva o si queremos arrancar directamente desde otro dispositivo, puedes personalizar este orden de arranque en el menú BOOT.
En un sistema con BIOS el código del cargador de arranque se encuentra en el primer pequeño espacio de almacenamiento del disco duro que llamamos registro de arranque maestro (Master boot record).
Para UEFI en cambio, hay una partición separada que almacena estos archivos del arranque, llamada EFI.
La función principal del archivo del cargador de arranque es ubicar el kernel del sistema operativo en un dispositivo de almacenamiento. Después, cargar el kernel en la memoria de la computadora. Y a continuación se comienza a ejecutar el código del kernel.
Los cargadores de arranque más comunes que podemos encontrar en el mundo Linux son Lilo y sobre todo Grub 2. Casi te diría que la mayoría de las distros ya utilizan Grub 2 por defecto, ya que es más moderno y tiene mejores características, además nos permite manejar múltiples sistemas operativos y se pueden configurar menús mucho más amigables.
Carga del kernel en memoria
Bien, continuamos ya que una vez que se carga el kernel de Linux en la memoria se le entrega el control para finalizar el proceso de inicio. El kernel toma el control de los recursos de la computadora y comienza a iniciar todos los procesos y servicios en segundo plano.
Primero se descomprime en memoria, se verifica el hardware y se cargan los controladores de dispositivos y otros módulos del kernel.
Luego se inicia un proceso inicial llamado INIT que en los sistemas Linux modernos suele ser el “systemd”. Este “systemd” o “systemD” (lo podrás encontrar escrito de diferentes formas) ha reemplazado a otros sistemas de inicio como SysVinit, aunque todavía podemos encontrar este en algunas ditros que se resisten a implantar systemd. El proceso INIT es, por decirlo así, el padre de todos los demás procesos en Linux.
SystemD como proceso INIT
SystemD tiene la responsabilidad de que el sistema quede completamente listo para usar. Primero trata de verificar si hay algún hardware que necesite un controlador que todavía no esté cargado, y después chequear y montar todos los diferentes sistemas de archivos y discos para que sean accesibles desde el sistema operativo.
También comienza ejecutar en segundo plano otros procesos como redes, administración de sonido y energía, inicio de sesión de los usuarios, y una vez que realiza todas las tareas llega el turno del entorno gráfico y procede a cargar su entorno de escritorio.
SystemD usa una jerarquía de archivos de configuración para decidir en qué orden y de qué forma debe inicializarse cualquier proceso. Estos objetivos o target corresponden en cierto modo a los niveles de ejecución antiguos. Si escuchaste hablar de ellos antes, ahora solo necesitas saber que systemD maneja la inicialización y el arranque de todo lo que necesita Linux para funcionar de forma transparente al usuario.
Una vez que ha terminado, voila! ahí lo tienes, tu Linux recién arrancado. Esta ha sido la secuencia de eventos y procesos que transforman el hardware de su computadora en un sistema Linux funcional cuando presiona el botón de encendido.