Introducción
Uno de los escenarios más frustrantes que puede enfrentar un administrador de sistemas es un Kernel Panic. Esto puede ocurrir por diversas razones, pero en este artículo nos centraremos en un caso específico que se produce al actualizar el kernel en un sistema Linux, especialmente cuando el directorio /boot
está casi lleno. Este problema impide que la actualización del kernel se complete correctamente y, tras el reinicio, provoca un error que impide que la máquina arranque. Vamos a explicar cómo solucionar este problema paso a paso.
¿Qué es un Kernel Panic?
El Kernel Panic es un mecanismo de protección que utiliza el kernel del sistema operativo cuando se encuentra con un error crítico del que no puede recuperarse. En Linux, este tipo de error detiene todos los procesos en ejecución y muestra un mensaje en pantalla, generalmente acompañado de un volcado de memoria o un stack trace. En esencia, el sistema se bloquea completamente.
Causa del Problema: Falta de Espacio en /boot
El directorio /boot
contiene los archivos necesarios para arrancar el sistema, como los diferentes kernels y los initramfs. A medida que se actualiza el sistema operativo, los kernels antiguos se mantienen en este directorio por seguridad, lo que puede llevar a la falta de espacio si no se realiza un mantenimiento adecuado. Si el espacio disponible en /boot
es insuficiente durante una actualización del kernel, puede provocar que la instalación del nuevo kernel quede incompleta, lo que resulta en un Kernel Panic en el siguiente reinicio.
Escenario
- Realizas una actualización del sistema que incluye la actualización del kernel.
- La actualización falla parcialmente debido a la falta de espacio en el directorio
/boot
. - Después del reinicio, aparece un Kernel Panic y la máquina no arranca correctamente.
Solución Paso a Paso
La solución a este problema consiste en:
- Arrancar en una versión anterior del kernel.
- Limpiar el directorio
/boot
para liberar espacio. - Completar la actualización del kernel.
Paso 1: Iniciar con una Versión Anterior del Kernel
Cuando un sistema no arranca debido a un Kernel Panic tras una actualización, el primer paso es iniciar en un kernel más antiguo que funcione correctamente.
Instrucciones:
- Reinicia el sistema.
- Accede al menú de arranque avanzado. Dependiendo de tu distribución de Linux, esto puede lograrse presionando la tecla
Shift
oEsc
repetidamente durante el arranque para abrir el GRUB. - En el menú de GRUB, selecciona la opción Opciones avanzadas para Ubuntu (o tu distribución de Linux).
- Selecciona una versión anterior del kernel que sabes que funcionaba correctamente. Asegúrate de elegir una versión que no sea la más reciente (probablemente fallida) y presiona
Enter
.
Si todo sale bien, el sistema debería arrancar con el kernel anterior.
Paso 2: Limpiar el Directorio /boot
Ahora que has arrancado el sistema, es necesario liberar espacio en /boot
. Puedes eliminar los kernels más antiguos y no utilizados para hacer espacio para la actualización pendiente.
Listar los kernels instalados
El primer paso es listar los kernels que tienes instalados para identificar cuáles puedes eliminar.
dpkg --list | grep linux-image
Este comando mostrará una lista de todos los kernels instalados. Verás algo como esto:
ii linux-image-5.8.0-53-generic 5.8.0-53.60~20.04.1 amd64 Linux kernel image for version 5.8.0 on 64 bit x86 SMP
ii linux-image-5.8.0-54-generic 5.8.0-54.61~20.04.1 amd64 Linux kernel image for version 5.8.0 on 64 bit x86 SMP
ii linux-image-5.4.0-73-generic 5.4.0-73.82~20.04.1 amd64 Linux kernel image for version 5.4.0 on 64 bit x86 SMP
Eliminar los kernels antiguos
Asegúrate de no eliminar el kernel que estás utilizando actualmente. Puedes eliminar versiones más antiguas con el siguiente comando:
sudo apt-get remove --purge linux-image-X.X.X-XX-generic
Por ejemplo, para eliminar el kernel 5.4.0-73-generic
, ejecutarías:
sudo apt-get remove --purge linux-image-5.4.0-73-generic
Limpiar los paquetes obsoletos
Una vez que hayas eliminado los kernels antiguos, es una buena práctica limpiar los paquetes obsoletos:
sudo apt-get autoremove
sudo apt-get clean
Estos comandos liberarán aún más espacio eliminando dependencias no utilizadas y limpiando la caché del paquete.
Verificar el espacio en /boot
Después de eliminar los kernels antiguos, es importante verificar cuánto espacio has liberado en /boot
:
df -h /boot
Este comando te dará una idea del espacio disponible en el sistema de archivos /boot
.
Paso 3: Completar la Actualización del Kernel
Ahora que has liberado espacio en /boot
, puedes proceder con la actualización del kernel. Esto asegurará que el nuevo kernel se instale correctamente sin problemas de espacio.
Actualizar el sistema
Ejecuta una actualización completa del sistema para asegurarte de que todo se haya instalado correctamente:
sudo apt-get update
sudo apt-get upgrade
Si la actualización del kernel estaba pendiente, este proceso debería completarla sin errores esta vez.
Verificar la instalación del nuevo kernel
Para asegurarte de que el nuevo kernel se ha instalado correctamente, puedes verificar la versión actual del kernel:
uname -r
Este comando te mostrará la versión del kernel que estás ejecutando actualmente. Asegúrate de que sea la versión más reciente que intentaste instalar.
Paso 4: Reiniciar el Sistema
Finalmente, reinicia el sistema para arrancar con el nuevo kernel y asegurarte de que el problema del Kernel Panic se ha resuelto.
sudo reboot
Prevención de Futuras Ocupaciones en /boot
Para evitar que este problema ocurra nuevamente, es importante realizar un mantenimiento regular del directorio /boot
. Aquí hay algunas recomendaciones:
- Eliminar kernels antiguos regularmente: Después de cada actualización del sistema, elimina los kernels antiguos que ya no necesitas.
sudo apt-get autoremove --purge
- Monitorizar el espacio en
/boot
: Es una buena práctica verificar regularmente cuánto espacio tienes disponible en/boot
usandodf -h /boot
. - Usar herramientas automáticas: Existen herramientas como
unattended-upgrades
que pueden eliminar automáticamente los kernels antiguos. Puedes configurar esto para que no tengas que hacerlo manualmente cada vez.
Conclusión
Un Kernel Panic debido a la falta de espacio en /boot
después de una actualización del kernel es un problema común, pero puede ser resuelto fácilmente si sigues los pasos correctos. Al arrancar en un kernel anterior, limpiar el directorio /boot
y completar la actualización, puedes restaurar la funcionalidad del sistema y evitar este problema en el futuro. Recuerda realizar un mantenimiento regular para evitar que el directorio /boot
se llene, lo que garantizará que tus futuras actualizaciones del kernel se realicen sin problemas.