Limpiando la casa: Como eliminar Kernels no utilizados en Ubuntu 16.04 LTS

Cada vez que Ubuntu instala una nueva versión del Kernel, el sistema operativo va dejando las versiones viejas en la partición /boot y configura el menú GRUB  y otros archivos para hacer referencia al nuevo Kernel. Con el paso del tiempo y si no se hace el debido mantenimiento se puede llegar a llenar la particion /boot y comenzar a tener problemas de arranque.

Ejecutar los comandos

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get clean

Mantendría el equipo actualizado y limpiaría bastante el desorden (archivos residuales) , sin embargo esto no es suficiente, porque el sistema no considera los archivos viejos del Kernel como basura que deba ser limpiada (Ubuntu declaró esto como un BUG y prometió corregirlo), por lo que mientras tanto hay que tomar acción y realizar la limpieza de forma manual.

Formas de realizar la limpieza

Como todo en Linux no existe una sola forma de hacerlo y cada quien decide como quiere y como le gusta.

OJO: Se debe tener MUUUUUCHO cuidado de NO ELIMINAR el Kernel que actualmente está activo (el más reciente), así que si durante la sesión de trabajo activa hubo una actualización del Kernel, debes reiniciar tu computadora antes de proceder.

Opción 1: Usar Synaptic

Utilizando la interfaz gráfica de Synaptic se deben seleccionar los archivos de Kernel viejos que se deseen eliminar y aplicar los cambios.

synaptic-kernel-remove1

Esta aplicación utiliza el programa dpkg para realizar el proceso de eliminación y actualizar los archivos que corresponda. Yo probé esta opción y grabé un video donde muestro como lo hice.

Opción 2:Comando purge-old-kernels

Este comando no viene disponible por defecto y debe ser instalado utilizando el comando

sudo apt-get install byobu
purge-old-kernels

screenshot-purge-old-kernels

Yo no use esta opción, en su lugar prefiero utilizar la tercera o cuarta opciones.

Opción 3: Utilizar la herramienta apt-get

Este comando es un poderoso administrador de paquetes disponible por defecto en Ubuntu y puede ser utilizado de forma directa o combinado con otros comandos en scripts para automatizar los procesos.

sudo apt-get -y purge nombre-de-archivo

Para poder utilizar este comando necesitamos saber el nombre de los archivos del kernel que vamos a necesitar eliminar, para lo cual podemos recurrir a una combinación de los comandos dpkg, awk y grep.

dpkg -l linux-* | awk '/^ii/{ print $2 }' | grep -e [0-9]

Donde el comando dpkg me entrega el listado de los paquetes que comiencen por “linux-”

screenshot-dpkg

AWK busca en ese listado todos los paquetes que tengan al comienzo de la linea los caracteres “ii” lo cual significa que el paquete esta actualmente instalado, si desean saber un poco más sobre el significado de los otros valores, pueden consultar el manual de consulta del comando dpkg usando el comando: man dpkg-query

Sobre el resultado que entrega el comando awk, hacemos una busqueda con el comando grep para identificar aquellos paquetes que tienen al menos un número en su nombre.

screenshot-dpkg-script1

ALERTA:      Este script

dpkg -l linux-* | awk '/^ii/{ print $2 }' | grep -e [0-9]

Trae como resultado todos los paquetes que están actualmente instalados, incluyendo la versión más reciente del Kernel.

Recuerde que no se debe eliminar la versión más reciente del Kernel.

Para saber cual es la versión más reciente del Kernel utilizamos el comando uname -r.

screenshot-uname

Particularmente yo recomiendo dejar instalados al menos los últimos dos Kernels, eso nos permitirá recuperarnos de un error, en caso de que el Kernel más reciente falle.

Opción 4: Usar un script para automatizar la herramienta apt-get

Podemos utizar una combinación de comandos para automatizar el proceso de eliminación de Kernels viejos que estén instalados, como por ejemplo:

dpkg -l ‘linux-*’ | sed ‘/^ii/!d;/'”$(uname -r | sed “s/\(.*\)-\([^0-9]\+\)/\1/”)”‘/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d’ | xargs sudo apt-get -y purge

OK, esto se pone un poco más complicado, voy a tratar de explicarlo con palabras más simples, ya sabemos que el comando dpkg -l ‘linux-*’ me va a traer como resultado todos los paquetes ‘linux-‘ que están instalados.

La segunda parte,

sed ‘/^ii/!d;/'”$(uname -r | sed “s/\(.*\)-\([^0-9]\+\)/\1/”)”‘/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d’

va a buscar los paquetes cuya linea comienza por ‘ii’ y cuyo números de versión sean diferentes a la versión del Kernel que esta actualmente instalado (uname -r). La tercera parte del script

xargs sudo apt-get -y purge

Ejecuta el comando sudo apt-get con los parámetros de purga de los archivos pasándole el nombre de los archivos como parámetro.

Para evitar cualquier duda, yo recomiendo que ejecute el script en dos pasos, en el primer paso ejecutarlo SIN la tercera parte para verificar cuales serán los paquetes que van a ser desinstalados sin afectar nada. Despues de verificar, agregarle la porción que ejecuta la eliminación y volver a ejecutar.

screenshot-script1

Que otras opciones tenemos?

Existe una aplicación llamada Ubuntu Tweak, que permite realizar este trabajo utilizando una interfaz gráfica, esta herramienta no está instalado por defecto y no forma parte de los paquetes estandar de Ubuntu, de acuerdo a la información oficial de los desarrolladores, esta herramienta ya no esta bajo mantenimiento (mayo 2016). Esta herramienta no debe ser confundida con el proyecto GNOME-Tweak-Tool.

ubuntutweak

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s