Trop de noyaux nuit

Le noyau est l’élément principal d’un système Linux.

Mais rien ne sert de les accumuler…

2noyaux

 

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

 

 

 

Par Bidouille De Bian

Bidouilleur sur Linux Debian 10 (Buster). Débutant dans le blog sur Wordpress.