UBUNTU – Automatiser le nettoyage des versions du noyau


  • Version 14 et en dessous :

Pour ne pas avoir à me soucier du nettoyage de mes versions de noyau, j’ai créé trois petits scripts qui reprennent les commandes principales citées dans ce fil. J’ai placé ces scripts dans /etc/cron.weekly.

/etc/cron.weekly/apt-mark-auto-kernels:

#!/bin/bash

if [[ $(apt-mark showmanual | egrep linux-.*[0-9] | grep -v "hwe") ]]; then
  apt-mark auto $(apt-mark showmanual | egrep linux-.*[0-9] | grep -v "hwe")
fi
/etc/kernel/postinst.d/apt-auto-removal \
$(dpkg -l | awk '/linux-image-[0-9]/{k=$2}\
END{sub(/linux-image-/,"",k);print k}')

exit 0

/etc/cron.weekly/autoremove:

#!/bin/bash

apt-get autoremove --purge -y

exit 0

/etc/cron.weekly/purge-rc

#!/bin/bash

if [[ $(dpkg -l | grep ^rc) ]]; then
  dpkg -P $(dpkg -l | awk '/^rc/{print $2}')
fi

exit 0

Ces scripts doivent bien sûr être exécutables.

Si vous ne savez pas comment créer ces scripts et les rendre exécutables les quelques lignes de commande suivantes pourront vous aider.

echo -e "#\x21/bin/bash\n\nif [[ \$(apt-mark showmanual | egrep linux-.*[0-9] | grep -v \"hwe\") ]]; then\n  apt-mark auto \$(apt-mark showmanual | egrep linux-.*[0-9] | grep -v \"hwe\")\nfi\n/etc/kernel/postinst.d/apt-auto-removal \\\\\n\$(dpkg -l | awk '/linux-image-[0-9]/{k=\$2}\\\\\nEND{sub(/linux-image-/,\"\",k);print k}')\n\nexit 0" | sudo tee /etc/cron.weekly/apt-mark-auto-kernels
sudo chmod -v +x /etc/cron.weekly/apt-mark-auto-kernels
echo -e "#\x21/bin/bash\n\napt-get autoremove --purge -y\n\nexit 0" | sudo tee /etc/cron.weekly/autoremove
sudo chmod -v +x /etc/cron.weekly/autoremove
echo -e "#\x21/bin/bash\n\nif [[ \$(dpkg -l | grep ^rc) ]]; then\n  dpkg -P \$(dpkg -l | awk '/^rc/{print \$2}')\nfi\n\nexit 0" | sudo tee /etc/cron.weekly/purge-rc
sudo chmod -v +x /etc/cron.weekly/purge-rc
  • pour les versions 16 et 18

Depuis 18.04, le gestionnaire de mises à jour supprime les versions obsolètes du noyau. Une mise à jour d’update-manager incluant cette fonction a également été faite sur la 16.04.
De ce fait, seul le dernier script d’automatisation reste encore utile. Il peut être mis dans cron.monthly.

/etc/cron.monthly/purge-rc :

#!/bin/bash

if [[ $(dpkg -l | grep ^rc) ]]; then
  dpkg -P $(dpkg -l | awk '/^rc/{print $2}')
fi

exit 0

Ce script doit bien sûr être exécutable.

Si vous ne savez pas comment créer le script et le rendre exécutable, passer ces deux commandes :

echo -e "#\x21/bin/bash\n\nif [[ \$(dpkg -l | grep ^rc) ]]; then\n  dpkg -P \$(dpkg -l | awk '/^rc/{print \$2}')\nfi\n\nexit 0" | sudo tee /etc/cron.monthly/purge-rc
sudo chmod -v +x /etc/cron.monthly/purge-rc

Si, comme moi, vous avez fait une mise à niveau vers 18.04, les scripts étant restés, il suffit de supprimer les deux premiers et déplacer le troisième :

sudo rm -v /etc/cron.weekly/apt-mark-auto-kernels /etc/cron.weekly/autoremove
sudo mv -v /etc/cron.weekly/purge-rc /etc/cron.monthly/purge-rc