98 votes

Pourquoi Ubuntu ne supprime-t-il pas automatiquement les anciens noyaux ?

Je me demande pourquoi Ubuntu ne supprime pas automatiquement les anciens noyaux.

Il est certain que rien n'est parfait et que les choses peuvent mal tourner, donc au cas où une mise à jour ne fonctionnerait pas, avoir un noyau de secours pourrait être une bonne chose. Mais il suffirait aussi de garder le dernier noyau et celui d'avant le dernier et de supprimer tous les anciens.

Y a-t-il une raison pour qu'Ubuntu ne le fasse pas automatiquement ?

44voto

Rinzwind Points 270388

Y a-t-il une raison pour qu'Ubuntu ne le fasse pas automatiquement ?

Je ne vois qu'une seule raison : cela ne fonctionne pas parfaitement ; il n'y a pas de moyen propre de décider actuellement de la définition des "vieux noyaux". "vieux" ne signifie pas "inutilisé" ni "indésirable". Et toute erreur à ce sujet peut tuer la machine d'un utilisateur.

C'est pourquoi, jusqu'à présent, la méthode manuelle est préférée, car elle met le pouvoir de suppression entre les mains des utilisateurs.


Ressources pour cette conclusion :

Ubuntu WIKI : Proposition pour la suppression des anciens noyaux

Last-good-boot est entièrement implémenté dans Intrepid/8.10 final, cependant il a été désactivé car il n'était pas considéré comme suffisamment stable. Le paramètre est une simple ligne dans le fichier /etc/default/kernel-helper-rc.


Launchpad : L'aptitude devrait-elle fournir un moyen de supprimer les anciennes versions du noyau ?

apt-get possède une fonction de suppression automatique qui désinstalle tous les paquets qui ne sont pas nécessaires en tant que dépendances et qui n'ont pas été installés manuellement. Depuis Ubuntu 14.04, tous les noyaux et en-têtes obsolètes devraient être automatiquement signalés comme n'étant plus nécessaires, et peuvent donc être purgés avec la commande apt-get autoremove. (Certains rapports indiquent que cela ne fonctionne pas encore complètement). . Je n'ai pas connaissance d'une fonctionnalité dans aptitude qui soit similaire à l'autoremove d'apt-get.


Ubuntu-devel : Mécanisme fourni par les distributions pour nettoyer les anciens noyaux.

Tout en convenant qu'il serait très utile et semble approprié d'avoir la nettoyage automatique, il existe un léger piège potentiel (ou deux). Il existe différentes saveurs de noyaux et les gens peuvent délibérément ou non les avoir installés en parallèle. De même, les différentes versions ont parfois un ensemble changeant de dépendants. Pendant un certain temps, il ne devait y avoir que linux-backports-modules (il y a eu linux-ubuntu-modules et linux-restricted-modules). Bien que cela ce n'est pas vraiment un problème. Du point de vue de la correspondance des motifs, les noyaux generic-pae sont un peu une car ils ont tendance à ruiner le principe "utiliser la dernière partie d'une division par "-" pour la saveur". Mais quoi qu'il en soit, je pense que le problème principal est la diversité des saveurs, donc un nettoyage qui est automatique devrait conserver les trois derniers de chaque, même si cela peut avoir tendance à laisser plus de noyaux autour.

22voto

andrewdevans Points 321

Il y a deux choses qui se passent ici :

  1. Les nouveaux noyaux sont des paquets complètement nouveaux, et non des paquets mis à jour avec un numéro de version plus récent, donc l'installation d'une nouvelle image de noyau ne remplace pas les anciennes. Ils coexistent.

  2. Ubuntu utilise un tas de magie apt pour protéger les deux dernières versions du noyau de 'apt-get autoremove' (la plus récente, et celle qui a été démarrée en dernier). Voir /etc/apt/apt.conf.d/01autoremove-kernels pour plus de détails.

Ce que cela signifie, c'est qu'une fois que vous avez redémarré avec le dernier noyau, "apt-get autoremove" devrait supprimer tous les paquets du noyau, à l'exception du paquet actuel et du dernier paquet démarré.

Les anciens noyaux s'accumulent toujours dans /boot parce que l'autoremove n'est pas activé par défaut dans Ubuntu - vous devez soit le lancer manuellement de temps en temps, soit l'activer.

Cela pourrait changer dans la version 16.04 - une correction d'un bogue dans le paquet unattended-upgrades activera l'autoremove des vieux noyaux par défaut.

20voto

psnizek Points 201

Ce script fera l'affaire. Il supprimera tous les noyaux qui ne sont pas utilisés.

sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

A part ça, ne pas enlever les noyaux doit être une chose assez récente. J'ai un système Ubuntu 14 après l'autre qui rencontre le problème d'une partition de démarrage pleine à cause de vieux noyaux inutiles.

Il peut rendre la vie des utilisateurs moins expérimentés extrêmement compliquée. C'est en fait un piège à noob. Canonical devrait corriger cela.

3voto

Chris_Dorking Points 31

La façon la plus simple de supprimer les anciens noyaux est d'utiliser ubuntu-tweak. Vous sélectionnez l'étiquette Janitor et cochez la case Old Kernel. Cela vous donne une liste de noyaux dont il pense que vous n'avez plus besoin. Vous pouvez les sélectionner tous et cliquer sur Clean et, après un certain temps, le travail est fait. Étant d'humeur nerveuse, j'ai vérifié le noyau que j'utilisais en utilisant uname -a mais il n'apparaissait pas dans la liste. Cela a fonctionné sur l'ordinateur portable de ma femme (qui a une partition de démarrage plutôt petite et montrait des avertissements) et sur le mien (qui fonctionnait bien). Est-ce que tout le monde est d'accord pour dire que c'est sans danger ?

2voto

Tactux Points 166

Ubuntu ne supprime automatiquement que les éléments qui ne sont plus nécessaires ou qui représentent un risque pour la sécurité... Je suppose donc que la raison de cette suppression est liée à la sécurité. Supposons que pour une raison étrange, un nouveau noyau devienne non sécurisé... Vous seriez alors redirigé vers l'ancien noyau temporairement, le temps que le nouveau soit corrigé. Par exemple, en mettant à jour la version 14.04.1 vers 14.04.2, vous pouvez opter pour un nouveau noyau, mais en avril prochain, lorsque la nouvelle version LTS 15.04 sortira, vous aurez automatiquement vos mises à jour de noyau. Je pense donc que c'est pour des raisons de sécurité.

mais si vous voulez l'enlever, essayez d'exécuter cette ligne de commande

sudo apt-get autoremove

Cela devrait supprimer tous les logiciels inutiles, comme votre ancien noyau.

sudo apt-get remove (kernels-name)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X