Skip to content

Introducción

El arranque de Red Hat Enterprise Linux 9 es un proceso estructurado que involucra la inicialización del hardware, la carga del sistema operativo y la activación de servicios esenciales mediante systemd. Comprender este flujo es clave para solucionar problemas, como fallos en GRUB2, errores en la configuración del sistema de archivos o servicios que impiden un arranque exitoso.

Esta sección explora el proceso de arranque, el manejo de objetivos en systemd, la recuperación de la contraseña root, la inspección de registros y la reparación de errores del sistema de archivos.

Objetivos

  • Conocer la secuencia del arranque en RHEL 9, incluyendo BIOS/UEFI, GRUB2 y systemd.
  • Administrar objetivos de arranque en systemd para modificar el estado del sistema.
  • Restablecer la contraseña root en caso de pérdida mediante el modo de rescate.
  • Diagnosticar problemas de arranque utilizando journalctl y systemctl.
  • Solucionar errores en el sistema de archivos que bloqueen el arranque.
  • Implementar estrategias de recuperación avanzadas con shell de emergencia y objetivos de rescate.

Control del Proceso de Arranque en Linux

Introducción al Proceso de Arranque El proceso de arranque en Red Hat Enterprise Linux 9 es una secuencia de eventos que llevan al sistema desde un estado apagado hasta un entorno completamente funcional. Este proceso involucra la inicialización del hardware, la carga del sistema operativo y la activación de servicios esenciales.

El arranque de un sistema Linux sigue una serie de pasos bien definidos, que incluyen la ejecución del firmware del sistema, la carga del gestor de arranque, la inicialización del kernel y la activación de systemd, el administrador de servicios en Linux.

Etapas del Proceso de Arranque en RHEL 9

Arranque Linux

  1. Encendido y POST (Power-On Self Test)

    • La máquina se enciende y el firmware del sistema (BIOS o UEFI) ejecuta una prueba automática de encendido (POST).
    • Se inicializa el hardware y se busca un dispositivo de arranque.
  2. Carga del Gestor de Arranque (GRUB2)

    • El firmware del sistema lee el cargador de arranque desde el disco y transfiere el control a GRUB2.
    • GRUB2 carga su configuración desde /boot/grub2/grub.cfg (BIOS) o /boot/efi/EFI/redhat/grub.cfg (UEFI).
    • Se presenta un menú para seleccionar el kernel a arrancar.
  3. Carga del Kernel e Initramfs

    • GRUB2 carga el kernel de Linux y la imagen initramfs en la memoria.
    • La imagen initramfs contiene módulos del kernel y scripts de inicialización.
  4. Inicialización del Kernel

    • El kernel configura el hardware y ejecuta /sbin/init, que en RHEL 9 es un enlace a systemd.
    • Se monta el sistema de archivos raíz y se inicia systemd.
  5. Activación de Systemd y Objetivos de Arranque

    • systemd busca el objetivo de arranque predeterminado (default.target).
    • Se activan los servicios y unidades necesarias para alcanzar el estado deseado del sistema.

Gestión de Objetivos de Arranque con Systemd

En systemd, un objetivo es un conjunto de unidades que el sistema activa para alcanzar un estado específico. Algunos de los objetivos más comunes incluyen:

Objetivo Propósito
graphical.target Inicia sesión gráfica y basada en texto.
multi-user.target Inicia sesión basada en texto para múltiples usuarios.
rescue.target Modo de recuperación con acceso limitado.
emergency.target Modo mínimo para reparar el sistema.

Comandos útiles para gestionar objetivos

  • Listar los objetivos disponibles:

    systemctl list-units --type=target --all
    

  • Cambiar el objetivo en tiempo de ejecución:

    systemctl isolate multi-user.target
    

  • Configurar un objetivo predeterminado en el arranque:

    systemctl set-default graphical.target
    

Restablecimiento de la Contraseña Root

En Red Hat Enterprise Linux 9, si un administrador pierde la contraseña de root, puede restablecerla sin necesidad de medios externos, utilizando el kernel de rescate y la opción rd.break.

Pasos para restablecer la contraseña root

  1. Reiniciar el sistema y detener la cuenta regresiva de GRUB2 presionando cualquier tecla.
  2. Seleccionar el kernel de rescate en el menú de GRUB2 y presionar e para editar.
  3. Modificar la línea del kernel, agregando rd.break al final de la línea que comienza con linux.
  4. Presionar Ctrl + X para arrancar con los cambios.
  5. Montar el sistema de archivos root con permisos de escritura:
    mount -o remount,rw /sysroot
    
  6. Acceder al entorno chroot para modificar la contraseña:
    chroot /sysroot
    passwd root
    
  7. Reetiquetar archivos para SELinux:
    touch /.autorelabel
    
  8. Salir del entorno chroot y reiniciar el sistema.

Este procedimiento permite recuperar el acceso root sin necesidad de reinstalar el sistema.


Inspección de Registros de Arranque

Cuando un sistema Linux presenta problemas de arranque, es útil revisar los registros del sistema con journalctl.

Configuración de registros persistentes

Por defecto, los registros se almacenan en /run/log/journal y se eliminan tras un reinicio. Para mantenerlos de forma permanente:

  1. Editar el archivo de configuración:
    vim /etc/systemd/journald.conf
    
  2. Modificar la línea [Journal] para habilitar almacenamiento persistente:
    Storage=persistent
    
  3. Reiniciar el servicio de registros:
    systemctl restart systemd-journald.service
    

Revisión de registros de arranques anteriores

Para inspeccionar errores del arranque previo:

journalctl -b -1 -p err
Esto mostrará mensajes de error del arranque anterior.


Solución de Problemas de Arranque con Systemd

Activación de la Shell de Depuración

Para depurar problemas de arranque, se puede habilitar una shell root en TTY9:

systemctl enable debug-shell.service
Esto permite acceder a una sesión root sin autenticación en Ctrl + Alt + F9.

Uso de Objetivos de Emergencia y Recuperación

Si el sistema no arranca correctamente, se pueden usar los siguientes objetivos en GRUB2:

  • Modo de emergencia (systemd.unit=emergency.target):
  • Monta el sistema de archivos en solo lectura.
  • Requiere contraseña root.

  • Modo de recuperación (systemd.unit=rescue.target):

  • Permite acceso a más servicios del sistema.
  • Útil para corregir errores en /etc/fstab.

Para volver a montar el sistema de archivos con permisos de escritura:

mount -o remount,rw /

Identificación de Trabajos Atascados

Si el sistema se congela en el arranque, se pueden listar los trabajos pendientes con:

systemctl list-jobs
Esto ayuda a identificar procesos que bloquean el arranque.


Problemas del Sistema de Archivos en el Arranque

Durante el proceso de arranque, systemd monta los sistemas de archivos persistentes definidos en /etc/fstab. Sin embargo, errores en este archivo o sistemas de archivos dañados pueden impedir que el sistema complete el arranque.

Algunos problemas comunes incluyen:

  • Sistema de archivos dañado: systemd intenta repararlo automáticamente, pero si falla, el sistema abre una shell de emergencia.
  • Dispositivo o UUID no existente: systemd espera que el dispositivo esté disponible, pero si no responde, el sistema entra en modo de emergencia.
  • Punto de montaje faltante: Si el directorio de montaje no existe, el sistema puede fallar al intentar montar el sistema de archivos.

Reparación de Problemas del Sistema de Archivos en el Arranque

Si el sistema no puede completar el arranque debido a problemas en el sistema de archivos, systemd proporciona el objetivo de emergencia, que abre una shell de mantenimiento con acceso root.

Ejemplo de error en el arranque

[ TIME ] Timed out waiting for device /dev/vda2.
[DEPEND] Dependency failed for /mnt/mountfolder
[DEPEND] Dependency failed for Local File Systems.
[ OK ] Started Emergency Shell.
[ OK ] Reached target Emergency Mode.
Give root password for maintenance (or press Control-D to continue):

En este caso, el sistema no pudo montar /dev/vda2, lo que activó el modo de emergencia.

Pasos para reparar el sistema de archivos

  1. Verificar sistemas de archivos montados:

    mount
    
    Si el sistema de archivos raíz está montado como solo lectura (ro), no se podrá editar /etc/fstab.

  2. Remontar el sistema de archivos con permisos de escritura:

    mount -o remount,rw /
    

  3. Intentar montar todos los sistemas de archivos definidos en /etc/fstab:

    mount --all
    

  4. Si aparece un error indicando que el punto de montaje no existe, créalo manualmente:

    mkdir -p /mnt/mountfolder
    

  5. Corregir errores en /etc/fstab:

    • Revisar posibles errores tipográficos.
    • Verificar nombres de dispositivos y UUID correctos.
  6. Recargar la configuración de systemd:

    systemctl daemon-reload
    

  7. Volver a montar los sistemas de archivos:

    mount --all
    

  8. Reiniciar el sistema para verificar que el arranque se completa correctamente:

    systemctl reboot
    


Uso de la Opción nofail en /etc/fstab

Para evitar que un error en el montaje de un sistema de archivos detenga el arranque, se puede agregar la opción nofail en /etc/fstab.

Ejemplo de entrada en /etc/fstab:

UUID=1234-5678 /mnt/mountfolder xfs defaults,nofail 0 0

Esto permite que el sistema arranque incluso si el montaje falla. Sin embargo, no se recomienda en sistemas de producción, ya que una aplicación podría iniciarse sin los datos necesarios, causando problemas graves.

Conclusión

El control del arranque en RHEL 9 es esencial para mantener la estabilidad del sistema. Con systemd, los administradores pueden gestionar el arranque, corregir errores y recuperar accesos de manera eficiente.

Desde la inspección de registros hasta la reparación de sistemas de archivos, dominar estas herramientas garantiza un entorno seguro y optimizado, minimizando tiempos de inactividad y asegurando operaciones sin interrupciones.