Ménage dans les vieux noyaux

Mon PC fixe est toujours avec la version 9.10 d'Ubuntu; et ce matin, une mise à jour vient de me faire passer à la version 2.6.31-22 du noyau. Lors du reboot qui a suivi, j'ai réalisé que le menu de grub ne suffisait pas à afficher toutes les versions de noyaux qui s'étaient succédées sur la machine depuis sa première installation. J'ai donc cherché le moyen de faire un grand ménage.

S'il existe plusieurs moyens pour automatiser cela par la ligne de commande, tous imposent soit de traiter les noyaux un par un, soit de les éradiquer tous à l'exception du noyau courant. Puisqu'on n'est jamais à l'abri d'un effet de bord qui tarde à ce manifester, j'ai choisi de conserver les deux derniers noyaux. Une fois n'est pas coutume, j'ai préféré procéder par l'interface graphique, d'autant que, puisque c'est avec celle de Synaptic, la manipulation est utilisable simplement sur d'autres distributions.

Mais d'abord, il faut s'assurer du numéro de version du noyau en cours. Pour cela, dans un terminal, faire :

$ uname -r
2.6.31-22-generic

La réponse (2.6.31-22-generic dans ce cas) est à garder en mémoire. Il ne faut en aucun cas le retirer.

Ensuite, il faut lancer Synaptic (menu Système, Administration, Gestionnaire de paquets Synaptic sur Ubuntu) et effectuer une recherche sur linux-image-2.6 (ou saisir 'linux-image-2.6.31' dans le champ de recherche rapide). A partir de là, la manipulation est très simple :

  • Cliquez sur le première colonne de la liste pour afficher en premier ceux qui sont installés.
  • Sélectionnez les linux-image-2.6.31-XX-generic à supprimer (pour en sélectionner plusieurs, maintenez Ctrl appuyé).
  • Par le menu contextuel (clic droit), placez les dans l'état 'Sélectionner pour suppression complète'.
  • Validez en cliquant sur Appliquer.

Confirmez votre choix et laissez Synaptic travailler. Au prochain boot de votre machine, votre menu grub aura bien diminué (il ne devrait rester que les choix correspondants aux noyaux que vous avez laissés, en mode de lancement normal, et en "safe").

Et au passage, vous aurez grappillé une quinzaine de Mo par version supprimée (6 pour moi sur ce coup, soit environ 90 Mo; ce qui est toujours bon à prendre sur le filesystem racine[1]).

Pour parfaire ce ménage, si vous avez comme moi installé VirtualBox (ou une autre application qui impose la présence des headers du noyau pour la re-compilation de modules, comme le paquet build-essential), vous pouvez vous débarrasser des "headers" liés à chaque version de noyau que vous venez de retirer. La gain d'espace est, cette fois, bien plus substantiel puisqu'il s'élève à environ 80 Mo par version retirée.

La manipulation est sensiblement la même à la différence près qu'il faut effectuer une recherche sur linux-headers et sélectionner les linux-headers-2.6.31-XX et les linux-headers-2.6.31-XX-generic à supprimer (deux paquets par version).

Attention à ne pas supprimer le paquet linux-headers-generic, c'est celui qui assure l'installation des nouvelles versions lorsqu'elles sont disponibles.

Voilà, une fois mon ménage terminé, j'ai fait les comptes; environ 550 Mo de gagnés; une bonne chose de faite.

Notes

[1] Sans trop me compliquer la vie, j'ai depuis longtemps pris l'habitude de séparer /home dans un filesystem distinct placé sur un gros disque séparé (bientôt en raid), tout le reste se trouvant dans le filesystem racine (en prévision d'une répartition des répertoires entre un SSD et le disque rapide qui le porte actuellement).