Una guía básica para las diferentes etapas del proceso de arranque de Linux


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

En esta guía, destacaremos los diversos pasos que sigue el sistema operativo Linux desde el momento en que se enciende hasta el momento en que inicia sesión. Tenga en cuenta que esta guía solo tiene en cuenta el gestor de arranque GRUB2 y systemd init, ya que están actualmente en uso. por la gran mayoría de las distribuciones modernas de Linux.

El proceso de arranque toma los siguientes 4 pasos que discutiremos con mayor detalle:

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

1. Comprobación de integridad del 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 comando.

Cuando el sistema Linux se enciende, el BIOS (sistema básico de entrada y salida) se activa y realiza una autoprueba de encendido (POST). Se trata de una comprobación de integridad que realiza una gran cantidad de comprobaciones de diagnóstico.

El POST prueba la operatividad del hardware de componentes como el HDD o SSD, el teclado, la RAM, los puertos USB y cualquier otra pieza de hardware. Si no se detecta algún dispositivo de hardware, o si hay un mal funcionamiento en alguno de los dispositivos, como un HDD o SSD dañado, se muestra un mensaje de error en la pantalla que solicita su intervención.

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

2. El cargador de arranque (GRUB2)

Una vez que se completa la POST y la costa está despejada, el BIOS sondea el MBR (Registro de arranque maestro) en busca del cargador de arranque y la información de partición 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 su disco duro. arquitectura. Sin embargo, tenga en cuenta que a veces el MBR se puede ubicar en una instalación Live USB o DVD de Linux.

Hay 3 tipos principales de cargadores de arranque en Linux: LILO, GRUB y GRUB2. El cargador de arranque GRUB2 es el último y principal cargador de arranque en las distribuciones modernas de Linux e informa nuestra decisión de dejar de lado los otros dos que se han vuelto anticuados con el paso del tiempo.

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

El menú de grub2 le permite hacer un par de cosas. Le permite seleccionar la versión del kernel de Linux que le gustaría usar. Si ha estado actualizando su sistema un par de veces, es posible que vea diferentes versiones del kernel en la lista. Además, le brinda la posibilidad de editar algunos parámetros del kernel presionando una combinación de teclas del teclado.

Además, en una configuración de arranque dual en la que tiene varias instalaciones de SO, el menú de grub le permite seleccionar en qué sistema operativo iniciar. El archivo de configuración de grub2 es el archivo /boot/grub2/grub2.cfg. El principal objetivo 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. Conecta el hardware de la PC con los procesos subyacentes. El kernel controla todos los procesos en su sistema Linux. Una vez que el gestor de arranque carga el kernel de Linux seleccionado, debe autoextraerse de su versión comprimida antes de realizar cualquier tarea. Tras la autoextracción, el kernel seleccionado monta el sistema de archivos raíz e inicializa el programa/sbin/init comúnmente conocido como init.

Init es siempre el primer programa que se ejecuta y se le asigna el ID de proceso o PID de 1. Es el proceso de inicio 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 núcleos se encuentran en el directorio /boot junto con la imagen del disco RAM inicial.

4.Inicio de Systemd

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

Systemd usa el archivo /etc/systemd/system/default.target para determinar el estado o destino en el que debe arrancar el sistema Linux.

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

A continuación, se muestra un desglose de los objetivos de systemd:

  • poweroff.target (nivel de ejecución 0): Apague o apague el sistema.
  • rescue.target (nivel de ejecución 1): inicia una sesión de shell de rescate.
  • multi-user.target (nivel de ejecución 2,3,4): configura el sistema en un sistema multiusuario no gráfico (consola).
  • graphical.target (nivel de ejecución 5): configura el sistema para que utilice 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 comando:

$ systemctl get-default

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

$ init runlevel-value

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

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

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