sábado, 26 de agosto de 2017

Ubuntu script para purgar kernel antiguos

En las distribuciones de Ubuntu es normal que a lo largo de la vigencia del soporte de la versión instalada, al ir actualizando el SO vayan quedando los kernel antiguos.




Podemos generar una lista que nos muestre los kernel instalados y que ya no serán utilizados



y aquellos que aun están instalados (install) los podemos purgar prestando atención de no eliminar el "linux-image-generic" ni el kernel actualmente en uso.

Para ello creamos un script que nos automatiza esta operación el cual pueden descargarlo desde aqui

El mismo verifica que sea el usuario administrador quien lo ejecute:









una vez que lo ejecutamos como root (sudo) comprueba que el kernel actual sea el último actualizado, si no coinciden nos ofrece reiniciar o cancelar la ejecución:


Una vez que las variables coinciden ya podemos purgar los kernel antiguos





Finalmente eliminamos los paquetes innecesarios:



Si no pueden descarga el script, se puede copiar a continuación:
 #!/bin/bash
# script para purgar los kernel antiguos conservando el actual y el generic.
# El script debe ser ejecutado como usuario administrador.

# identificamos el usuario actual
USER=$(whoami)
# verificación (si es root continua, sino muestra mensaje y sale)
if [ "$USER" != "root" ]; then
echo "Sr. $USER:"
echo "Ejecute este script como root!!"
exit 0
else
echo -e "Chequeando el sistema, espere...\n\n"
fi

# Definimos las variables.
R='\e[1;31m'
G='\e[1;32m'
N='\e[0m'
CURRENT=`uname -r`
LAST=`dpkg --get-selections | grep linux-image|awk '{print $1}'|sort -n|sed '$d'|tail -1|sed 's/^.\{18\}//g'`
LISTA=`dpkg --get-selections | grep linux-image|awk '{print $1}'|sed "/$CURRENT/d"|sed '/linux-image-generic/d'`
# verificamos si el kernel actual es el último instalado. Si no lo es,
# reiniciamos el sistema
if [ "$CURRENT" != "$LAST" ]; then
   echo -e "${R}Debe reiniciar el sistema para cargar el último kernel instalado...${N}\n"
   echo -e "${G}Presione ENTER para reiniciar o CTRL+c para cancelar${N}"
   read
   reboot
   else
       for r in $LISTA
       do
       apt -y purge $r
       done
fi


Nos aseguramos que todo quede limpio con:
sudo dpkg --purge `dpkg --get-selections |grep linux-image | grep deinstall | cut -f1`

No hay comentarios: