He estado usando Fedora durante un par de años y solo he tenido 2 kernel panics, ambos después de actualizar el kernel, sin embargo esta no es la única razón por la que eso podría suceder y también te puede pasar a ti.
![[it’ll-happen-to-you]](/categories/linux/kernel-panic/it'll-happen-to-you.webp)
Qué es un Kernel Panic
Desde Wikipedia (la fuente definitiva de verdad):
Un kernel panic “es una medida de seguridad tomada por el kernel de un sistema operativo al detectar un error fatal interno en el cual o bien es incapaz de recuperarse de forma segura o continuar ejecutando el sistema tendría un mayor riesgo de pérdida importante de datos. El término es en gran medida específico de Unix y sistemas tipo Unix. El equivalente en los sistemas operativos Microsoft Windows es un error de detención, a menudo llamado “pantalla azul de la muerte”.
Causas Comunes
- Instalación de kernels inestables o corruptos.
- Hardware defectuoso, como RAM o dispositivos de almacenamiento.
initramfscorrupto o faltante.- Módulos del kernel (drivers) incompatibles o defectuosos - frecuentemente NVIDIA.
- Problemas de desbordamiento de memoria, causando violaciones de acceso.
Síntomas
Un kernel panic ocurre cuando el kernel de Linux encuentra un error fatal del cual no puede recuperarse y no puede cargarse correctamente, causando:
- Fallo completo del sistema: Tu teclado, mouse, todo se congela.
- Mensaje de error: Aparece un mensaje de “kernel panic” en la pantalla, a menudo con algunos detalles técnicos o explicaciones sobre el problema.
- Fallo al arrancar: El sistema falla al arrancar, ya sea provocando un reinicio automático o permanece congelado indefinidamente.
Podrías ver algo como esto al arrancar:
![[kernel-panic-screen-1.webp]](/categories/linux/kernel-panic/kernel-panic-screen-1.webp)
![[kernel-panic-screen-2.webp]](/categories/linux/kernel-panic/kernel-panic-screen-2.webp)
Mensaje de error común:
error: ../../grub-core/fs/fshelp.c:257:file
/initramfs-<kernel_version>.img
not found
Press any key to continue...
KERNEL PANIC!
Please reboot your computer.
VFS: Unable to mount root fs on unknown-block(0,0)
Solución de Problemas
Arrancar con un Kernel Estable Anterior
Contexto: Retención de Kernel (Opcional)
La mayoría de las distribuciones de Linux (como Fedora/RHEL), mantienen un historial de kernels instalados para permitir la recuperación de actualizaciones de kernel fallidas.
Historial de Retención de Kernel en Fedora
- Comportamiento Estándar de Paquetes: Cuando se actualizan la mayoría de los paquetes con
dnfoyum, el gestor de paquetes reemplaza la versión actual del paquete con la nueva, eliminando completamente la versión antigua. - Comportamiento de Actualización de Kernel: Las actualizaciones de kernel son diferentes. El comando
dnf update kernelinstala el nuevo kernel junto a las versiones de kernel existentes en lugar de reemplazarlas. - Política de Retención Predeterminada: Por defecto,
dnfyyumretienen los últimos 3 kernels instalados en el directorio /boot/.
Modificar la Retención de Kernel
- Editar /etc/dnf/dnf.conf.
- Ajustar el número de kernels retenidos en
installonly_limit=<número>.
# Editar /etc/dnf/dnf.conf con tu editor de texto favorito
# Ejemplo /etc/dnf/dnf.conf
[main]
...
# Mantener los últimos 5 kernels instalados con dnf/yum
installonly_limit=5
Procedimiento de Arranque
- Reinicia tu sistema.
- Accede al menú de arranque GRUB (típicamente manteniendo presionado
Shifto presionandoEscdurante el arranque. - Usa las teclas de flecha arriba y abajo para seleccionar un kernel estable funcional anterior de la lista.
- Arranca en el kernel estable seleccionado.
![[list-of-kernels.webp]](/categories/linux/kernel-panic/list-of-kernels.webp)
Verificar initramfs Faltante (Opcional)
Después de arrancar exitosamente en un kernel estable anterior, puedes confirmar si al kernel defectuoso le falta su archivo initramfs, que es una causa común de kernel panics.
Verificar la Versión Actual del Kernel
uname -r
# Ejemplo de salida (kernel estable): 6.12.0-55.12.1.el10_0.x86_64
Inspeccionar el Directorio Boot
- Verifica el contenido del directorio /boot/ para identificar cualquier archivo
initramfsfaltante. - Cada archivo de kernel instalado (identificado por
vmlinuz-<versión>) debe tener un archivoinitramfs-<versión_kernel>.imgcorrespondiente. Si al kernel defectuoso le falta su archivoinitramfs, esto confirma la causa raíz del fallo de arranque.
cd /boot
ls -l
![[ls-boot.webp]](/categories/linux/kernel-panic/ls-boot.webp)
Regenerar initramfs (Solución)
Si el archivo initramfs para un kernel está faltante o corrupto, debes regenerarlo para corregir el kernel panic. Después de iniciar sesión en el kernel estable anterior, usa el comando dracut para reconstruir el initramfs.
Regenerar un Initramfs de Kernel Específico
--force (-f): Sobrescribe cualquier archivoinitramfsexistente para la versión de kernel especificada, asegura una regeneración fresca incluso si hay un archivo corrupto presente.--kver <versión_kernel>: Especifica la versión del kernel para la cual generar elinitramfs. La versión debe coincidir con el nombre del archivo del kernel en/boot/(sin el prefijovmlinuz-).
# Sintaxis
sudo dracut --force --kver <versión_kernel>
# Ejemplo:
sudo dracut --force --kver 6.12.0-55.27.1.el10_0.x86_64
# Nota: No es necesario regenerar `initramfs` para todos los kernels, pero este único comando es fácil de ejecutar y hará el trabajo
sudo dracut --force --regenerate-all
![[ls-boot-kernel-panic-resolve-dracut.webp]](/categories/linux/kernel-panic/ls-boot-kernel-panic-resolve-dracut.webp)
Finalmente, reinicia y deberías poder iniciar sesión usando el kernel defectuoso.
reboot
Soluciones Alternativas
Si el kernel panic sigue ocurriendo sin importar lo que hagas, podrías querer implementar una solución alternativa temporal mientras se implementa una solución.
Establecer un Kernel Anterior como Predeterminado
Puedes configurar un kernel antiguo y estable como la opción de arranque predeterminada. Este enfoque es útil cuando necesitas acceso inmediato al sistema mientras esperas una actualización de kernel que resuelva el problema o mientras encuentras otras soluciones.
Mostrar el Kernel Predeterminado Actual
- Primero, identifica qué kernel está actualmente configurado para cargarse por defecto en el momento del arranque.
# Opción 1: Mostrar el kernel de arranque predeterminado (probablemente el kernel defectuoso causando el panic)
sudo grubby --info=DEFAULT
# Ejemplo de salida (panic): /boot/vmlinuz-6.27.0-55.12.1.el10_0.x86_64
Identificar la Versión del Kernel Estable Objetivo
- Opción 1: Mostrar todas las entradas de kernel disponibles en el sistema para identificar qué versión deseas establecer como predeterminada en el momento del arranque.
- Opción 2: Mostrar el kernel actualmente en uso (muy probablemente un kernel estable).
# Opción 1: Mostrar la configuración GRUB para todas las entradas de kernel instaladas
sudo grubby --info=ALL
# Opción 2: Mostrar el kernel estable actualmente en ejecución
uname -r
Establecer un Kernel Antiguo Estable como Predeterminado
- Modificar GRUB para arrancar con el kernel estable especificado por defecto.
# Sintaxis
sudo grubby --set-default /boot/vmlinuz-<versión_kernel>
# Ejemplo
sudo grubby --set-default /boot/vmlinuz-6.12.0-55.12.1.el10_0.x86_64
Verificar el Cambio
- El comando debe devolver la ruta del kernel estable que acabas de establecer.
sudo grubby --default-kernel
# Salida después del cambio: /boot/vmlinuz-6.12.0-55.12.1.el10_0.x86_64
Excluir Temporalmente Actualizaciones de Kernel de DNF/YUM
Después de seleccionar un kernel estable como predeterminado, puedes evitar que dnf o yum actualicen automáticamente los paquetes del kernel. Esto asegura que el sistema continúe usando el kernel funcional hasta que se resuelva el problema.
Procedimiento
- Editar /etc/dnf/dnf.conf.
- Editar la configuración de DNF para excluir paquetes de kernel de las actualizaciones.
# Editar /etc/dnf/dnf.conf con tu editor de texto favorito
# Ejemplo /etc/dnf/dnf.conf
[main]
...
# Excluye todos los paquetes de kernel de dnf update
exclude=kernel*
Nota: Esta es una medida temporal solamente. Las actualizaciones de kernel a menudo contienen parches de seguridad críticos y correcciones de errores. Excluir actualizaciones de kernel por períodos prolongados puede dejar tu sistema vulnerable.
Las capturas de pantalla son de una VM de Rocky Linux en la que forcé un kernel panic, sin embargo el contenido es aplicable a las distribuciones Rocky Linux, Fedora, RHEL, CentOS.