748 votes

Comment supprimer les anciennes versions du noyau pour nettoyer le menu de démarrage ?

Chaque fois que j'installe un nouveau noyau Linux, il est laissé dans le grub_config, rendant le menu de démarrage plus long à chaque fois.

Je sais que je peux rechercher manuellement dans les paquets installés et les supprimer.

Ubuntu propose-t-il un moyen plus simple de les nettoyer ou de les empêcher d'apparaître dans la liste de démarrage ?

0 votes

En plus de supprimer les anciens noyaux, décommentez cette ligne dans le fichier /etc/default/grub si vous voulez vous débarrasser des éléments de "récupération" dans le menu : #GRUB_DISABLE_LINUX_RECOVERY="true"

0 votes

Dans les versions récentes Ubuntu cache les noyaux dans le sous menu de Grub, donc ce n'est pas si gênant. Cependant, il peut être une bonne idée de supprimer les noyaux supplémentaires pour économiser de l'espace, surtout, si vous avez une petite partition /boot séparée.

10 votes

Il existe une commande ubuntu appelée purge-old-kernels pour faire ce travail. Voir mon réponse pour plus d'informations.

0voto

cadrian Points 4102

Si vous utilisez ansible pour contrôler les machines, ce playbook peut être utile.

---
 - hosts: all
   become: yes
   tasks:
    - name: "Run apt-get autoremove"
      apt: 
        name: linux-image-generic
        autoremove: yes
        state: present 
        update_cache: yes
        cache_valid_time: 3600

0voto

k0pernikus Points 5614

Utilisez plutôt apt le front-end du client pour les humains, que apt-get pour purger les anciennes images du noyau :

$ sudo apt autoremove --purge
...
The following packages will be REMOVED:
  linux-headers-4.4.0-51* linux-headers-4.4.0-51-generic* linux-image-4.4.0-51-generic* linux-image-extra-4.4.0-51-generic*

0 votes

Quelle est la différence ici entre apt et apt-get ? (Note, apt n'est pas disponible sur une installation 12.04 ordinaire).

0 votes

@mwfearnley Pour la différence de base, voir cette réponse Quand je faisais des recherches sur ce sujet, apt-get n'a pas purgé les vieux noyaux pour moi. apt mais j'ai pu aussi les utiliser différemment.

0voto

joeytwiddle Points 1759

J'utilise unattended-upgrades donc j'ai vraiment aimé La réponse de Qwerty qui le configure pour désinstaller automatiquement les anciens paquets du noyau.

Cependant, il y avait un problème : après l'installation d'un nouveau noyau, ce processus désinstallait le paquet pour le noyau en cours d'exécution !

Cela ne casse pas entièrement le système d'exploitation. En fait, j'ai rarement remarqué que cela s'était produit, jusqu'à ce que j'aie besoin de charger à chaud un module (par exemple en branchant un périphérique USB) et que le module soit introuvable.

Comme solution à cela, j'ai créé un script pour générer un paquet virtuel currently-installed-kernel qui bloque effectivement le paquetage actuel du noyau jusqu'au prochain démarrage.

Le script est appelé pin-current-kernel-with-package.sh . Voici le nouvelle version (probablement) et le première version (définitivement).

Enregistrez simplement ce script quelque part, et ajoutez-le à votre processus de démarrage . Par exemple, enregistrez-le dans /usr/local/bin/pin-current-kernel-with-package.sh et ensuite modifier /etc/rc.local et ajoutez la ligne suivante :

bash /usr/local/bin/pin-current-kernel-with-package.sh

Maintenant, votre paquet de noyau en cours d'exécution ne sera jamais désinstallé !

0 votes

Des versions plus récentes de unattended-upgrades pourrait être plus intelligent à ce sujet maintenant, donc vous pourriez ne pas avoir besoin de ce script. lien

0voto

loved.by.Jesus Points 437

Je donne deux variations plus sûres des méthodes dans d'autres réponses : l'une utilisant gestionnaire synaptique et l'autre en utilisant terminal .

Avec ces variantes, vous ne supprimez que les paquets que le système identifie comme amovibles. Il n'y a aucun risque que vous supprimiez les noyaux linux qui sont actuellement utilisés - comme cela m'est arrivé il y a quelques semaines ;-(

Utilisation de Synaptic Manager

Au lieu de chercher linux-image en tous les paquets installés, sélectionnez le auto-amovible (voir l'ellipse rouge dans l'image ci-dessous). Maintenant, dans cette liste, retirez le paquet linux-image que vous voulez.

enter image description here

Utilisation du terminal

De la même manière, si vous supprimez des noyaux sur le terminal, ne montrez que l'option auto-amovible en exécutant

 sudo apt-get -s autoremove | grep linux-image

Et ensuite enlever n'importe quel noyau linux-image-x.x.x-x-generic que vous voulez supprimer de la liste donnée en exécutant

 sudo apt-get purge linux-image-x.x.x-x-generic

0voto

Abdallah Okasha Points 295

A supprimer les noyaux qui ont été automatiquement installés via les mises à jour régulières du système, ouvrez le terminal et exécutez :

sudo apt autoremove --purge

Pour connaître la version actuelle de votre noyau, exécutez uname -r et aussi tu peux courir uname --help pour en savoir plus sur tous les uname commandes

Vous pouvez également exécuter df -h pour vous montrer les pilotes de système de fichiers, de la même façon vous pouvez exécuter df --help pour plus.

Pour activer la suppression automatique des anciens noyaux : Editez le fichier de configuration en utilisant gksu

gksudo gedit /etc/apt/apt.conf.d/50unattended-upgrades

Lorsque le fichier s'ouvre, décommentez la ligne suivante et changez la valeur en vrai :

//Unattended-Upgrade::Remove-Unused-Dependencies " faux " ;

Si vous devez installer gksu vous pouvez exécuter sudo apt install gksu

Pour effacer les anciens paquets, nous pouvons utiliser sudo apt-get clean

Pour en savoir plus, visitez http://ubuntuhandbook.org/index.php/2016/05/remove-old-kernels-ubuntu-16-04/

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