Búsqueda de sitios web

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 le 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 toma en consideración el gestor de arranque GRUB2 y systemd init tal como los utilizan actualmente 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)
  • Cargando el cargador de arranque (GRUB2)
  • Inicialización del kernel
  • Iniciando systemd, el padre de todos los procesos

1. La verificació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 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 ). Esta es una verificación de integridad que realiza una gran cantidad de comprobaciones de diagnóstico.

El POST prueba la operabilidad del hardware de componentes como el HDD o el SSD, el teclado, la RAM<, puertos USB y cualquier otra pieza de hardware. Si no se detecta algún dispositivo de hardware, o si hay un mal funcionamiento en cualquiera de los dispositivos, como un HDD o SSD corrupto, aparecerá un mensaje de error en la pantalla solicitando su intervención.

En algunos casos, se escuchará un pitido, especialmente si falta 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 gestor de arranque (GRUB2)

Una vez que se completa el POST y no hay moros en la costa, el BIOS sondea el MBR (Master Boot Record) en busca de el gestor 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 suele ser /dev/sda o /dev/hda dependiendo de la arquitectura de su disco duro. Sin embargo, tenga en cuenta que a veces el MBR puede ubicarse en una instalación Live USB o DVD de Linux.

Hay 3 tipos principales de gestores de arranque en Linux: LILO, GRUB y GRUB2. El gestor de arranque GRUB2 es el gestor de arranque principal y más reciente en las distribuciones modernas de Linux e informa nuestra decisión de omitir los otros dos que se han vuelto anticuados con el paso del tiempo.

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

El menú grub2 te permite hacer un par de cosas. Le permite seleccionar la versión del kernel de Linux que desea utilizar. 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 donde tiene múltiples instalaciones de sistema operativo, 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. Interconecta 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 extraerse automáticamente de su versión comprimida antes de realizar cualquier tarea. Al autoextraerse, 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 que genera varios demonios y monta todas las particiones especificadas en /etc/. fstab archivo.

Luego, el kernel 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 del disco RAM inicial.

4.Iniciando el sistema

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

Systemd utiliza el archivo /etc/systemd/system/default.target para determinar el estado o destino en el que debe iniciarse 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 inicio de SystemV.
  • Para un servidor, el destino predeterminado es multi-user.target, que corresponde al nivel de ejecución 3 en SysV init.

Aquí hay un desglose de los objetivos de systemd:

  • poweroff.target (nivel de ejecución 0): apaga o apaga 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 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 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 y init 0 lo apaga. 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 objetivo o el valor del nivel de ejecución. Es en este punto que se le solicitará su nombre de usuario y contraseña, con lo que podrá acceder a su sistema Linux.