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: