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
-
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.
-
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.
-
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.
-
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.
- El kernel configura el hardware y ejecuta
-
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.
- systemd busca el objetivo de arranque predeterminado (
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
- Reiniciar el sistema y detener la cuenta regresiva de GRUB2 presionando cualquier tecla.
- Seleccionar el kernel de rescate en el menú de GRUB2 y presionar
epara editar. - Modificar la línea del kernel, agregando
rd.breakal final de la línea que comienza conlinux. - Presionar
Ctrl + Xpara arrancar con los cambios. - Montar el sistema de archivos root con permisos de escritura:
mount -o remount,rw /sysroot - Acceder al entorno chroot para modificar la contraseña:
chroot /sysroot passwd root - Reetiquetar archivos para SELinux:
touch /.autorelabel - 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:
- Editar el archivo de configuración:
vim /etc/systemd/journald.conf - Modificar la línea
[Journal]para habilitar almacenamiento persistente:Storage=persistent - 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
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
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
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
-
Verificar sistemas de archivos montados:
Si el sistema de archivos raíz está montado como solo lectura (mountro), no se podrá editar/etc/fstab. -
Remontar el sistema de archivos con permisos de escritura:
mount -o remount,rw / -
Intentar montar todos los sistemas de archivos definidos en
/etc/fstab:mount --all -
Si aparece un error indicando que el punto de montaje no existe, créalo manualmente:
mkdir -p /mnt/mountfolder -
Corregir errores en
/etc/fstab:- Revisar posibles errores tipográficos.
- Verificar nombres de dispositivos y UUID correctos.
-
Recargar la configuración de systemd:
systemctl daemon-reload -
Volver a montar los sistemas de archivos:
mount --all -
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.