Supprimer les anciens noyaux sous Debian ou Ubuntu
Dans un article précédent jai donné la commande à utiliser pour supprimer les anciens noyaux pour une distribution basée sur les paquets RPM (RedHat, CentOS et Fedora), ici je propose une solution pour les distributions utilisant les paquets DEB (Debian, Ubuntu).
Pour la distribution Aptosid, il y a un script d’installé en standard, il s’agit du paquet kernel-remover qui est accédé depuis le menu Applications > Outils système > kernel-remover.
Les tests ont été effectués dans VirtualBox avec une VM fonctionnant sous Ubuntu 10.04.
Pour obtenir la liste des noyaux installés, il faut regarder le contenu
du dossier /boot
. Pour chaque noyau, il y a un fichier
vmlinuz-*
:
yvon@Slim64b:~$ ls -lrt /boot/vmlinuz-2.6.32-2*
-rw-r--r-- 1 root root 4037888 2010-04-16 13:32 /boot/vmlinuz-2.6.32-21-generic
-rw-r--r-- 1 root root 4037792 2010-06-04 00:53 /boot/vmlinuz-2.6.32-22-generic
-rw-r--r-- 1 root root 4045536 2010-06-11 13:28 /boot/vmlinuz-2.6.32-23-generic
-rw-r--r-- 1 root root 4050848 2010-09-16 20:24 /boot/vmlinuz-2.6.32-24-generic
-rw-r--r-- 1 root root 4049888 2010-12-02 05:42 /boot/vmlinuz-2.6.32-27-generic
-rw-r--r-- 1 root root 4052512 2011-01-11 01:27 /boot/vmlinuz-2.6.32-28-generic
yvon@Slim64b:~$
Le fichier vmlinuz-2.6.32-21-generic
correspond au noyau
linux-image-2.6.32-21-generic
.
Le dernier noyau (linux-image-2.6.32-28-generic
) est celui
actuellement utilisé, il ne faut pas le supprimer. Il est également
conseillé de garder l’avant dernier noyau en cas de soucis.
Pour obtenir la liste des noyaux en retirant les 2 derniers, on va utiliser la commande :
yvon@Slim64b:~$ ls -rt /boot/vmlinuz-* | head -n -2
/boot/vmlinuz-2.6.32-21-generic
/boot/vmlinuz-2.6.32-22-generic
/boot/vmlinuz-2.6.32-23-generic
/boot/vmlinuz-2.6.32-24-generic
yvon@Slim64b:~$
La commande head affiche les 10 premières lignes d’un fichier ou de
l’entrée stdin, l’option -n
permet de spécifier le nombre de ligne à
afficher (head -n 3 toto.txt
affiche les 3 premières lignes du
fichier toto.txt).
En inversant l’option du nombre de lignes (-2
) on affiche les
premières lignes à l’exception des 2 dernières lignes.
Le résultat obtenu indique le nom du noyau vmlinuz
alors que le nom
du paquet est linux-image
. Il y a également le nom du sossier
(/boot) dans le résultat.
Pour corriger cela, on va utiliser la commande sed
pour remplacer
vmlinuz
par linux-image
et pour supprimer /tools
.
On obtient alors :
yvon@Slim64b:~$ ls -rt /boot/vmlinuz-* | head -n -2 | sed 's@vmlinuz-@linux-image-@g' | sed 's@/boot/@@'
linux-image-2.6.32-21-generic
linux-image-2.6.32-22-generic
linux-image-2.6.32-23-generic
linux-image-2.6.32-24-generic
yvon@Slim64b:~$
Une fois obtenu la liste des paquets à supprimer, il faut passer ce
résultat à la commande apt-get remove
, pour cela on utilise la
commande xargs
:
ls -rt /boot/vmlinuz-* | head -n -2 | sed 's@vmlinuz-@linux-image-@g' | sed 's@/boot/@@' | xargs -I {} apt-get remove -y {}
Ce qui donne :
root@Slim64b:~# ls -rt /boot/vmlinuz-* | head -n -2 | sed 's@vmlinuz-@linux-image-@g' | sed 's@/boot/@@' | xargs -I {} apt-get remove -y {}
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
linux-headers-2.6.32-21-generic linux-headers-2.6.32-24-generic linux-headers-2.6.32-21 linux-headers-2.6.32-22 linux-headers-2.6.32-23
linux-headers-2.6.32-24 linux-headers-2.6.32-22-generic linux-headers-2.6.32-23-generic
Veuillez utiliser « apt-get autoremove » pour les supprimer.
Les paquets suivants seront ENLEVÉS :
linux-image-2.6.32-21-generic
0 mis à jour, 0 nouvellement installés, 1 à enlever et 0 non mis à jour.
Après cette opération, 125Mo d'espace disque seront libérés.
(Lecture de la base de données... 229520 fichiers et répertoires déjà installés.)
Suppression de linux-image-2.6.32-21-generic ...
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-28-generic
Found initrd image: /boot/initrd.img-2.6.32-28-generic
Found linux image: /boot/vmlinuz-2.6.32-27-generic
Found initrd image: /boot/initrd.img-2.6.32-27-generic
Found linux image: /boot/vmlinuz-2.6.32-24-generic
Found initrd image: /boot/initrd.img-2.6.32-24-generic
Found linux image: /boot/vmlinuz-2.6.32-23-generic
Found initrd image: /boot/initrd.img-2.6.32-23-generic
Found linux image: /boot/vmlinuz-2.6.32-22-generic
Found initrd image: /boot/initrd.img-2.6.32-22-generic
Found memtest86+ image: /boot/memtest86+.bin
done
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
linux-headers-2.6.32-21-generic linux-headers-2.6.32-24-generic linux-headers-2.6.32-21 linux-headers-2.6.32-22 linux-headers-2.6.32-23
linux-headers-2.6.32-24 linux-headers-2.6.32-22-generic linux-headers-2.6.32-23-generic
Veuillez utiliser « apt-get autoremove » pour les supprimer.
Les paquets suivants seront ENLEVÉS :
linux-image-2.6.32-22-generic
0 mis à jour, 0 nouvellement installés, 1 à enlever et 0 non mis à jour.
Après cette opération, 125Mo d'espace disque seront libérés.
(Lecture de la base de données... 226344 fichiers et répertoires déjà installés.)
Suppression de linux-image-2.6.32-22-generic ...
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-28-generic
Found initrd image: /boot/initrd.img-2.6.32-28-generic
Found linux image: /boot/vmlinuz-2.6.32-27-generic
Found initrd image: /boot/initrd.img-2.6.32-27-generic
Found linux image: /boot/vmlinuz-2.6.32-24-generic
Found initrd image: /boot/initrd.img-2.6.32-24-generic
Found linux image: /boot/vmlinuz-2.6.32-23-generic
Found initrd image: /boot/initrd.img-2.6.32-23-generic
Found memtest86+ image: /boot/memtest86+.bin
done
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
linux-headers-2.6.32-21-generic linux-headers-2.6.32-24-generic linux-headers-2.6.32-21 linux-headers-2.6.32-22 linux-headers-2.6.32-23
linux-headers-2.6.32-24 linux-headers-2.6.32-22-generic linux-headers-2.6.32-23-generic
Veuillez utiliser « apt-get autoremove » pour les supprimer.
Les paquets suivants seront ENLEVÉS :
linux-image-2.6.32-23-generic
0 mis à jour, 0 nouvellement installés, 1 à enlever et 0 non mis à jour.
Après cette opération, 128Mo d'espace disque seront libérés.
(Lecture de la base de données... 223168 fichiers et répertoires déjà installés.)
Suppression de linux-image-2.6.32-23-generic ...
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-28-generic
Found initrd image: /boot/initrd.img-2.6.32-28-generic
Found linux image: /boot/vmlinuz-2.6.32-27-generic
Found initrd image: /boot/initrd.img-2.6.32-27-generic
Found linux image: /boot/vmlinuz-2.6.32-24-generic
Found initrd image: /boot/initrd.img-2.6.32-24-generic
Found memtest86+ image: /boot/memtest86+.bin
done
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
linux-headers-2.6.32-21-generic linux-headers-2.6.32-24-generic linux-headers-2.6.32-21 linux-headers-2.6.32-22 linux-headers-2.6.32-23
linux-headers-2.6.32-24 linux-headers-2.6.32-22-generic linux-headers-2.6.32-23-generic
Veuillez utiliser « apt-get autoremove » pour les supprimer.
Les paquets suivants seront ENLEVÉS :
linux-image-2.6.32-24-generic
0 mis à jour, 0 nouvellement installés, 1 à enlever et 0 non mis à jour.
Après cette opération, 128Mo d'espace disque seront libérés.
(Lecture de la base de données... 219868 fichiers et répertoires déjà installés.)
Suppression de linux-image-2.6.32-24-generic ...
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-28-generic
Found initrd image: /boot/initrd.img-2.6.32-28-generic
Found linux image: /boot/vmlinuz-2.6.32-27-generic
Found initrd image: /boot/initrd.img-2.6.32-27-generic
Found memtest86+ image: /boot/memtest86+.bin
done
root@Slim64b:~#
A chaque suppression de noyau, le Grub est mis à jour.
Au final, il reste 2 noyaux dans le dossier /boot
:
root@Slim64b:~# ls /boot/vmlinuz-2.6.32-2*
/boot/vmlinuz-2.6.32-27-generic /boot/vmlinuz-2.6.32-28-generic