Solución al error "Not enough free disk space. The upgrade has aborted." actualizando Ubuntu
Hoy mismo hemos redactado otro artículo sobre Cómo actualizar Ubuntu a 22.10 desde 22.04 y hemos obtenido un par de problemas en el proceso. Uno de ellos ha ocurrido por el hecho de tener poco espacio en la partición /boot y el output que arroja el proceso de actualización es similar al siguiente:
Not enough free disk space
The upgrade has aborted. The upgrade needs a total of 433 M free space on disk '/boot'. Please free at least an additional 122 M of disk space on '/boot'. You can remove old kernels using 'sudo apt autoremove' and you could also set COMPRESS=xz in /etc/initramfs-tools/initramfs.conf to reduce the size of your initramfs.
La buena noticia, es que es relativamente sencillo solucionar. Vamos a realizar un par de configuraciones que puedes realizar para obtener el espacio necesario.
Antes de comenzar con cada una de las soluciones debes ingresar como root al sistema para evitar digital en todos los comandos sudo.
sudo su
Compresión del initramfs
Para editar la forma en que se comprime el initramfs podemos utilizar un editor de texto como nano o vim y abrir el siguiente archivo.
vim /etc/initramfs-tools/initramfs.conf
Busca la línea con para configurar la compresión COMPRESS
y modifícala para que tenga el valor xz
. Si la línea está comentada también debes eliminar el caracter #
.
COMPRESS=xz
Guarda los cambios y actualiza el initramfs.
update-initramfs -u
Finalmente ejecuta el siguiente comando para borrar cualquier kernel antiguo en tu sistema.
apt autoremove
Eliminación de Kernels antiguos
En primer lugar puedes verificar la versión del kernel que está actualmente usando tu sistema.
root@server:/# uname -r
5.19.0-40-generic
Esto te servirá para contrastar otras versiones posiblemente instaladas del kernel en tu sistema. Para listar todas las versiones instaladas puedes usar el siguiente comando:
dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep ii
Veamos un par de consideraciones al intentar eliminar kernels en tu sistema. Tener múltiples versiones del kernel puede ser útil, especialmente cuando necesitas un respaldo en caso de que una nueva actualización cause problemas. Sin embargo, mantener demasiados puede ocupar espacio innecesario en tu sistema. Por lo general, se recomienda conservar las dos versiones más recientes y eliminar las más antiguas.
Kernels genéricos
Los kernels genéricos son los más comunes en distribuciones estándar de Linux, como Ubuntu. Por ejemplo, podrías tener varias versiones instaladas como las que se muestran a continuación:
ii linux-image-6.8.0-49-generic 6.8.0-49.50~22.04.1 amd64 Signed kernel image generic
ii linux-image-6.8.0-50-generic 6.8.0-50.51~22.04.1 amd64 Signed kernel image generic
ii linux-image-6.8.0-51-generic 6.8.0-51.52~22.04.1 amd64 Signed kernel image generic
En este caso, la versión 6.8.0-51-generic
es la más reciente, y probablemente querrás conservarla junto con la inmediatamente anterior. Si tienes versiones más antiguas, puedes eliminarlas para liberar espacio.
.Para desinstalar el kernel deseado basta usar uno de los valores obtenidos anteriomente así:
update-initramfs -d -k linux-image-6.8.0-50-generic
Aún así puedes intentar ejecutar dpkg para eliminar cualquier rastro del kernel si lo hubiere.
dpkg --purge linux-image-6.8.0-50-generic
Kernels Kernels específicos para la nube
En entornos en la nube, como servidores o máquinas virtuales, podrías encontrarte con kernels diseñados específicamente para optimizar el rendimiento y la compatibilidad en estos contextos. Por ejemplo:
ii linux-image-4.19.0-16-cloud-amd64 4.19.181-1 amd64 Linux 4.19 for x86-64 cloud (signed)
ii linux-image-4.19.0-22-cloud-amd64 4.19.260-1 amd64 Linux 4.19 for x86-64 cloud (signed)
ii linux-image-4.19.0-23-cloud-amd64 4.19.269-1 amd64 Linux 4.19 for x86-64 cloud (signed)
.Para desinstalar el kernel deseado basta usar parte del nombre del kernel así:
update-initramfs -d -k 4.19.0-16-cloud-amd64
Aún así puedes intentar ejecutar dpkg para eliminar cualquier rastro del kernel si lo hubiere.
dpkg --purge 4.19.0-16-cloud-amd64
Único Kernel
En casos extremos, probablemente tengas que dejar la última versión del kernel para ahorrar espacio al máximo, caso en el cual debes asegurarte que la versión que estés usando (uname -r
) sea exactamente la que dejaste.
Al dejar un solo kernel en tu sistema tu carpeta boot debería lucir más o menos como se muestra a continuación. Nota que el kernel está asociado tanto a la imagen actual de Linux como a la old.
Es muy probable que al dejar un solo kernel el Software Updater te sugiera instalar uno secundario. En ese caso, debes omitir esa instlación, cerrar y abrir de nuevo el Software Updater.
Optimización de los contenidos en /boot
Después de ejecutar los pasos citados anteriormente, puedes verificar el contenido de la carpeta /boot
en busca de cualquier archivo antiguo del kernel.
Si es el caso y encuentras un archivo como se muestra a continuación con la terminación .old
podrás eliminar el archivo asociado de manera segura siempre y cuando sea diferente a la imagen principal. Es decir, no sea el único kernel que tengas en tu sistema!.
rm /boot/initrd.img-5.15.0-25-generic
rm vmlinuz-5.15.0-25-generic
Enseguida en términos de dejar todo consistente, ejecuta el siguiente comando para actualizar el GRUB y eliminar esas entradas innecesarias del menú de selección cuando arranca tu máquina.
update-grub
Finalmente puedes ejecutar la siguiente serie de comandos para arreglar cualquier paquete roto o paquetes no utilizados en tu sistema.
apt install -f
dpkg --configure -a
apt autoremove