Troubleshooting de arranque

Introducción

Cuando un sistema Linux no arranca, el diagnóstico sigue siempre el mismo flujo: identificar en qué fase del arranque falla (GRUB, kernel, initramfs o systemd) y actuar en consecuencia. La mayoría de fallos tienen causas concretas y soluciones conocidas.

Flujo de diagnóstico


¿Aparece el menú de GRUB?
├── NO  → problema en GRUB o MBR/EFI → ver "Reparar GRUB desde Live USB"
└── SÍ  ¿El kernel arranca?
         ├── NO  → kernel panic o parámetros incorrectos → ver sección kernel panic
         └── SÍ  ¿Monta el sistema raíz?
                  ├── NO  → error en /etc/fstab o disco dañado
                  └── SÍ  ¿Arranca systemd correctamente?
                           ├── NO  → servicio roto en el arranque
                           └── SÍ  → problema en capa de aplicación
          

Errores comunes de GRUB

error: no such partition / Entering rescue mode

GRUB no encuentra la partición donde está instalado. Causas habituales: se cambió el UUID de la partición, se reorganizaron los discos o se eliminó una partición.


# Desde la consola de rescate de GRUB, identificar los discos:
grub> ls
(hd0) (hd0,gpt1) (hd0,gpt2) (hd1) ...

# Buscar cuál contiene el sistema:
grub> ls (hd0,gpt2)/
grub> ls (hd0,gpt2)/boot/

# Una vez encontrada la partición correcta, arrancar manualmente:
grub> set root=(hd0,gpt2)
grub> linux /boot/vmlinuz-... root=/dev/sda2 ro
grub> initrd /boot/initrd.img-...
grub> boot

# Una vez dentro del sistema, regenerar grub.cfg:
update-grub
          

GRUB muestra solo una línea de comandos (grub>)

GRUB encontró su partición pero no pudo leer grub.cfg. Se puede arrancar manualmente desde la consola y luego regenerar la configuración como en el caso anterior.

GRUB no aparece en absoluto (pantalla negra o directamente el SO)

El MBR o la EFI no apuntan a GRUB. Requiere reparación desde Live USB (ver contenido siguiente).

Kernel panic

Un kernel panic es un error fatal del kernel del que no puede recuperarse. El sistema se detiene mostrando un mensaje de error. Causas más frecuentes:

  • Sistema de ficheros raíz no encontrado o corrupto
  • Parámetro root= incorrecto en la línea de arranque
  • initramfs dañado o incompatible con el kernel
  • Módulo del kernel incompatible cargado al arranque

# Mensaje típico de kernel panic por dispositivo raíz no encontrado:
# "Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)"

# Solución: editar la entrada de GRUB en el arranque (tecla 'e'),
# localizar la línea que empieza por "linux" y corregir root=UUID=...
# o root=/dev/sdX según corresponda

# Para ver el UUID correcto de las particiones desde un Live USB:
blkid
lsblk -f
          

Error en /etc/fstab

Un error en /etc/fstab (UUID incorrecto, partición inexistente, opción de montaje inválida) provoca que el sistema quede en modo de emergencia al arrancar con el mensaje:


# "You are in emergency mode. After logging in, type 'journalctl -xb' to view system logs..."

# 1. Entrar con la contraseña de root cuando la pide
# 2. Montar la raíz en modo escritura (normalmente está en solo lectura):
mount -o remount,rw /

# 3. Ver el error concreto:
journalctl -xb | grep -i "failed to mount\|fstab"

# 4. Editar fstab para corregir la entrada problemática:
nano /etc/fstab

# 5. Verificar que la sintaxis es correcta:
mount -a

# 6. Reiniciar
systemctl reboot
          

Para evitar que un error en /etc/fstab bloquee el arranque, usar la opción nofail en entradas de discos opcionales:


# /etc/fstab — disco de datos opcional, no bloquea el arranque si falla
UUID=xxxx  /datos  ext4  defaults,nofail  0  2
          

Servicio que impide el arranque

Si systemd arranca pero un servicio falla y bloquea el proceso, el sistema puede quedarse esperando o entrar en modo de emergencia.


# Ver qué falló en el último arranque:
journalctl -xb --priority=err

# Ver el tiempo que tardó cada servicio (detectar cuál bloquea):
systemd-analyze blame

# Ver el árbol de dependencias del arranque:
systemd-analyze critical-chain

# Deshabilitar el servicio problemático y reiniciar:
systemctl disable nombre-servicio
systemctl reboot
          

La clave del troubleshooting de arranque es identificar la fase exacta del fallo: GRUB, kernel, montaje del sistema raíz o systemd. Cada fase tiene herramientas y mensajes de error específicos que guían la solución.

Reparar GRUB desde Live USB

Índice de la sección

Índice del curso