Le noyau est l’élément principal d’un système Linux.
Mais rien ne sert de les accumuler…
Environnement
PC sous Linux Debian 10 Buster
Connaitre le noyau actif
Lorsque votre système est fonctionnel:
uname --all Linux debian 4.16.0-2-amd64 #1 SMP Debian 4.16.16-2 (2018-06-22) x86_64 GNU/Linux
Lister les noyaux installés
Plusieurs commandes le font
dpkg -l linux-image* Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder | État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements |/ Err?=(aucune)/besoin Réinstallation (État,Err: majuscule=mauvais) ||/ Nom Version Architecture Description +++-=========================-=================-=================-======================================================= un linux-image <aucune> <aucune> (aucune description n'est disponible) un linux-image-2.6 <aucune> <aucune> (aucune description n'est disponible) in linux-image-4.10.8-dbg <aucune> amd64 (aucune description n'est disponible) in linux-image-4.10.8-kernel <aucune> amd64 (aucune description n'est disponible) ii linux-image-4.16.0-2-amd6 4.16.16-2 amd64 Linux 4.16 for 64-bit PCs ii linux-image-4.9.107-kerne 4.9.107-1 amd64 Linux kernel, version 4.9.107-kernelperso ii linux-image-amd64 4.16+94 amd64 Linux for 64-bit PCs (meta-package)
apt list linux-image* | grep install linux-image-4.16.0-2-amd64/testing,unstable,now 4.16.16-2 amd64 [installé, automatique] linux-image-4.9.107-kernelperso/now 4.9.107-1 amd64 [installé, local] linux-image-amd64/testing,unstable,now 4.16+94 amd64 [installé]
Ce qui est affiché par Grub au démarrage
ls -alrt /boot total 94456 -rw-r--r-- 1 root root 184840 juin 25 2015 memtest86+_multiboot.bin -rw-r--r-- 1 root root 182704 juin 25 2015 memtest86+.bin -rw-r--r-- 1 root root 4221216 juin 10 14:44 vmlinuz-4.9.107-kernelperso -rw-r--r-- 1 root root 3188038 juin 10 14:44 System.map-4.9.107-kernelperso -rw-r--r-- 1 root root 186391 juin 10 14:44 config-4.9.107-kernelperso -rw-r--r-- 1 root root 34749261 juin 10 15:44 initrd.img-4.9.107-kernelperso -rw-r--r-- 1 root root 3402103 juin 13 18:26 initrd-plymouth.img drwxr-xr-x 25 root root 4096 juin 14 12:08 .. -rw-r--r-- 1 root root 4970256 juin 22 11:50 vmlinuz-4.16.0-2-amd64 -rw-r--r-- 1 root root 3145911 juin 22 11:50 System.map-4.16.0-2-amd64 -rw-r--r-- 1 root root 203117 juin 22 11:50 config-4.16.0-2-amd64 -rw-r--r-- 1 root root 42242713 juil. 1 08:34 initrd.img-4.16.0-2-amd64 drwxr-xr-x 3 root root 4096 juil. 1 08:34 . drwxr-xr-x 5 root root 4096 juil. 2 09:07 grub
Ces données sont utilisées par Grub lorsque vous fabriquer le menu ( update-grub) qui s’affiche à l’écran lors du démarrage du PC.
Supprimer les noyaux inutiles
C’est inutile de conserver les anciens noyaux, ça prends de la place sur le disque et ils peuvent être obsolètes d’un point de vue sécurité.
Debian construit un fichier pour préserver les 2 derniers noyaux:
/etc/apt/apt.conf.d/01autoremove-kernels
qui est généré par le script /etc/kernel/postinst.d/apt-auto-removal
En cas de doute régénérer le fichier
root@debian:/# bash /etc/kernel/postinst.d/apt-auto-removal
Pour nettoyer, il suffit ensuite d’appliquer la commande
apt autoremove
Ceci est vrai uniquement pour les noyaux installés automatiquement.
Si vous avez installé manuellement les noyaux, il faut les marquer préalablement « installé automatiquement » par cette commande d’enfer.
sudo apt-mark auto $(apt-mark showmanual | grep -E "^linux-([[:alpha:]]+-)+[[:digit:].]+-[^-]+(|-.+)$")
Exemple
root@debian:/# apt -s purge --autoremove Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait 0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour. root@debian:/# apt list linux-image* | grep install linux-image-4.16.0-2-amd64/testing,unstable,now 4.16.16-2 amd64 [installé, automatique] linux-image-4.17.0-1-amd64/unstable,now 4.17.3-1 amd64 [installé] linux-image-4.9.107-kernelperso/now 4.9.107-1 amd64 [installé, local] linux-image-amd64/testing,unstable,now 4.16+94 amd64 [installé] root@debian:/# sudo apt-mark auto $(apt-mark showmanual | grep -E "^linux-([[:alpha:]]+-)+[[:digit:].]+-[^-]+(|-.+)$") linux-headers-4.17.0-1-amd64 passé en « installé automatiquement ». linux-headers-4.9.107-kernelperso passé en « installé automatiquement ». linux-image-4.17.0-1-amd64 passé en « installé automatiquement ». linux-image-4.9.107-kernelperso passé en « installé automatiquement ». root@debian:/# apt -s purge --autoremove Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets suivants seront ENLEVÉS : linux-headers-4.9.107-kernelperso* linux-image-4.9.107-kernelperso* 0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour. Purg linux-headers-4.9.107-kernelperso [4.9.107-1] Purg linux-image-4.9.107-kernelperso [4.9.107-1]
Automatisation
Voici le script que j’ai ajouté au calendrier hebdomadaire
Créer le fichier/etc/cron.weekly/kernel-automatique avec le contenu suivant:
#!/bin/bash # #set -x export DEBIAN_FRONTEND=noninteractive apt-mark auto $(apt-mark showmanual | grep -E "^linux-([[:alpha:]]+-)+[[:digit:].]+-[^-]+(|-.+)$") # bash /etc/kernel/postinst.d/apt-auto-removal apt autoremove -y apt list --installed | grep linux-image apt list --installed | grep linux-headers exit 0