Solución al error "Not enough free disk space. The upgrade has aborted." actualizando Ubuntu

Author
Por Darío Rivera
Publicado el en 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.

Listado de archivos dentro de la carpeta /boot

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.

Listado de archivos dentro de la carpeta /boot

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

Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.