Una guía básica para el proceso de inicio de Linux

Cada vez que enciendes tu PC con Linux, pasa por una serie de etapas antes de mostrar finalmente una pantalla de inicio de sesión que solicita tu nombre de usuario o contraseña. Hay 4 etapas distintas que cada distribución de Linux atraviesa en un proceso de arranque típico.

User Login Prompt

En esta guía, destacaremos los diversos pasos que realiza el sistema operativo Linux desde el momento en que se enciende hasta el momento en que inicias sesión. Ten en cuenta que esta guía solo tiene en cuenta el cargador de arranque GRUB2 y systemd init, ya que actualmente son utilizados por la gran mayoría de las distribuciones de Linux modernas.

El proceso de arranque sigue los siguientes 4 pasos que discutiremos con más detalle:

  • Verificación de integridad de la BIOS (POST)
  • Carga del cargador de arranque (GRUB2)
  • Inicialización del kernel
  • Inicio de systemd, el padre de todos los procesos

1. Verificación de integridad de la BIOS (POST)

El proceso de arranque generalmente se inicializa cuando un usuario presiona el botón de encendido, si la PC ya estaba apagada, o reinicia el sistema usando la GUI o en la línea de comandos.

Cuando el sistema Linux se enciende, la BIOS (Sistema Básico de Entrada/Salida) se pone en marcha y realiza una Prueba de Autoinicio (POST). Esta es una verificación de integridad que realiza una gran cantidad de pruebas diagnósticas.

El POST sondea la operabilidad del hardware de componentes como el HDD o SSD, teclado, RAM, puertos USB, y cualquier otro elemento de hardware. Si algún dispositivo de hardware no es detectado, o si hay una falla en alguno de los dispositivos como un HDD o SSD corrupto, un mensaje de error aparece en la pantalla solicitando su intervención.

En algunos casos, un sonido de pitido se activará especialmente en caso de que falte un módulo RAM. Sin embargo, si el hardware esperado está presente y funcionando como se espera, el proceso de arranque continúa a la siguiente etapa.

2. El cargador de arranque (GRUB2)

Una vez que el POST está completo y todo está en orden, el BIOS sondea el MBR (Registro de Arranque Principal) en busca del cargador de arranque y la información de particionado del disco.

El MBR es un código de 512 bytes que se encuentra en el primer sector del disco duro que generalmente es /dev/sda o /dev/hda dependiendo de la arquitectura de su disco duro. Sin embargo, a veces el MBR puede estar ubicado en un USB en Vivo o en una instalación de Linux con DVD.

Existen 3 tipos principales de cargadores de arranque en Linux: LILO, GRUB, y GRUB2. El cargador de arranque <

GRUB2 significa GRand Unified Bootloader versión 2. Una vez que la BIOS localiza el cargador de arranque grub2, lo ejecuta y lo carga en la memoria principal (RAM).

El menú de grub2 te permite hacer un par de cosas. Te permite seleccionar la versión del kernel de Linux que deseas utilizar. Si has estado actualizando tu sistema varias veces, es posible que veas diferentes versiones de kernel en la lista. Además, te da la capacidad de editar algunos parámetros del kernel presionando una combinación de teclas del teclado.

Select Kernel Version

Además, en una configuración de arranque dual donde tienes varias instalaciones de SO, el menú de grub te permite seleccionar en qué SO arrancar. El archivo de configuración de grub2 es el archivo /boot/grub2/grub2.cfg. El objetivo principal de GRUB es cargar el kernel de Linux en la memoria principal.

3. Inicialización del Kernel

El kernel es el núcleo de cualquier sistema Linux. Interactúa con el hardware de la PC y los procesos subyacentes. El kernel controla todos los procesos en tu sistema Linux. Una vez que el kernel de Linux seleccionado es cargado por el cargador de arranque, debe autoextraerse de su versión comprimida antes de realizar cualquier tarea. Tras autoextraerse, el kernel seleccionado monta el sistema de archivos raíz e inicializa el programa /sbin/init comúnmente conocido como init.

Kernel Initialization Process

Init es siempre el primer programa en ejecutarse y se le asigna el ID de proceso o PID 1. Es el proceso init el que genera varios demonios y monta todas las particiones que se especifican en el archivo /etc/fstab.

El kernel luego monta el disco RAM inicial (initrd), que es un sistema de archivos raíz temporal hasta que se monta el sistema de archivos raíz real. Todos los kernels se encuentran en el directorio /boot junto con la imagen de disco RAM inicial.

4. Iniciando Systemd

El kernel finalmente carga Systemd, que es el reemplazo del viejo init SysV. Systemd es la madre de todos los procesos de Linux y gestiona, entre otras cosas, el montaje de sistemas de archivos, el inicio y detención de servicios, por mencionar solo algunos.

Systemd utiliza el archivo /etc/systemd/system/default.target para determinar el estado o destino en el que debería arrancar el sistema Linux.

  • Para una estación de trabajo de escritorio (con GUI), el valor de destino predeterminado es 5, que es equivalente al nivel de ejecución 5 para el antiguo init de SystemV.
  • Para un servidor, el destino predeterminado es multi-user.target, que corresponde al nivel de ejecución 3 en SysV init.

Aquí tienes un desglose de los objetivos de systemd:

  • poweroff.target (nivel de ejecución 0): Apagar o apagar el sistema.
  • rescue.target (nivel de ejecución 1): lanza una sesión de shell de rescate.
  • multi-user.target (niveles de ejecución 2, 3, 4): Configura el sistema a un sistema multiusuario no gráfico (consola).
  • graphical.target (nivel de ejecución 5): Configura el sistema para utilizar una interfaz gráfica multiusuario con servicios de red.
  • reboot.target (nivel de ejecución 6): reinicia el sistema.

Para verificar el objetivo actual en su sistema, ejecute el siguiente comando:

$ systemctl get-default
Check Run Level

Puede cambiar de un objetivo a otro ejecutando el siguiente comando en la terminal:

$ init runlevel-value

Por ejemplo, init 3 configura el sistema a un estado no gráfico.

El comando init 6 reinicia su sistema y init 0 apaga el sistema. Asegúrese de invocar el comando sudo cuando desee cambiar a estos dos objetivos.

El proceso de arranque finaliza una vez que systemd carga todos los demonios y establece el valor del objetivo o nivel de ejecución. Es en este punto cuando se le solicita su nombre de usuario y contraseña, tras lo cual obtiene acceso a su sistema Linux.

Source:
https://www.tecmint.com/linux-boot-process/