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.

39voto

Mnementh Points 19831

Mise à jour : purge-old-kernels es déprécié de nos jours.

J'ai fait un pour purger les noyaux même dans des conditions délicates. Il s'appelle linux-purge et vous pouvez le trouver aquí .

Si vous voulez simplement purger les noyaux (et les paquets associés) qui sont plus anciens que le noyau actuellement utilisé, lorsque le système n'est pas cassé, vous pouvez utiliser ce script .

Il existe également une page de documentation Ubuntu à laquelle j'ai contribué concernant la suppression des anciens noyaux. aquí .

1 votes

@drevicko Voir aquí .

0 votes

Une autre question légèrement tangentielle : à moins d'aller au source, y a-t-il un moyen de déterminer quelles commandes deviennent disponibles lorsque vous installez bikeshed ?

1 votes

@drevicko, bien sûr, dlocate -lsbin bikeshed

30voto

Qwerty Points 191

Vous pouvez suivre le Utilisation de la section du paquet "unattended-upgrades". de Mises à jour de sécurité automatiques article sur Ubuntu Wiki pour effectuer cette opération.

Vous devez modifier la ligne suivante dans /etc/apt/apt.conf.d/50unattended-upgrades fichier ;

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

avec

Unattended-Upgrade::Remove-Unused-Dependencies "true";

pour supprimer automatiquement les anciens paquets, y compris les noyaux.

Supprimez ou commentez également la ligne

"^linux-image.*"; 

dans la section "NeverAutoRemove" du fichier /etc/apt/apt.conf.d/01autoremove.

2 votes

J'ai fait cela, mais il collectait toujours 3+ vieux noyaux consommant des centaines de Mo. J'ai donc ajouté apt-get autoremove à mon travail cron quotidien qui effectue les mises à jour, puisqu'il ne passe pas toujours par le gestionnaire de mises à jour intégré.

0 votes

Je pense que cela ne fonctionne dans Trusty que pour les noyaux qui ont été installés automatiquement.

0 votes

Cela permet d'éviter l'accumulation d'anciens noyaux lors de la mise à jour automatique des paquets, par exemple avec les mises à jour non surveillées. Cependant, si vous ne redémarrez pas, vous pouvez vous rendre compte que le paquet pour l'option Noyau en cours d'exécution a été désinstallé ! Un problème que cela peut causer : les nouveaux appareils que vous branchez peuvent ne pas fonctionner, parce que le module correspondant ne peut pas être chargé à chaud, car il n'est plus sur votre disque. (Une solution rapide pour cela est de réinstaller le paquetage du noyau, puis de débrancher et rebrancher le périphérique).

28voto

Bob Points 940

La méthode la plus rapide/simple (applicable au moins depuis 12.04) possible et déjà fournie avec Ubuntu est la suivante apt-get . Procédez comme suit si vous souhaitez supprimer toutes les anciennes versions du noyau qui ne sont pas utilisées (à l'exception de la version précédente que vous n'utilisez plus). Cela permet de s'assurer que si la version actuelle du noyau échoue d'une manière ou d'une autre, vous avez un moyen de revenir à un état antérieur). Faites ce qui suit :

sudo apt-get autoclean

Cela éliminera tous les anciens fichiers (y compris les versions du noyau) que vous pourriez avoir. Notez que si vous avez beaucoup d'anciennes versions, cela prendra un certain temps car il faut s'assurer que la suppression de la version du noyau ne pose aucun problème. Pour moi, la suppression des 12 dernières versions du noyau a pris environ 2 minutes. Vous pouvez également procéder comme suit :

sudo apt-get clean

Ce qui éliminera tout ce qui est téléchargé et stocké dans le dossier cache d'apt. Enfin, vous avez :

sudo apt-get autoremove

qui vérifie les paquets inutilisés et les supprime si nécessaire. C'est idéal pour les bibliothèques et les paquets de dépendance qui ne sont plus nécessaires à une application installée.

1 votes

Je suppose que cela a changé dans les nouvelles versions car dans 14.04 cela nettoie simplement le cache des paquets et n'affecte pas les paquets installés ou Grub.

2 votes

Je peux confirmer que sudo apt-get autoremove supprime les anciens noyaux (plus d'une version antérieure) dans 14.04. Vous devrez peut-être l'exécuter avant et après la mise à niveau de votre noyau. Lorsque je l'ai exécuté avant la mise à jour, il a seulement supprimé la version générique de l'ancien noyau. Ensuite, après avoir mis à jour mon noyau, il a également supprimé la version à faible latence de l'ancien noyau.

0 votes

Je voulais dire le sudo apt-get autoclean commande. @tekNorah J'ai installé un couple de noyaux plus anciens et ensuite j'ai exécuté sudo apt-get autoremove dans Ubuntu Studio 14.04. Il n'a pas supprimé de noyaux. Je n'ai installé que des noyaux à faible latence. Pourquoi avez-vous installé les noyaux -générique et -lowlatency ?

27voto

mikewhatever Points 30768

Pour savoir quels noyaux et en-têtes sont installés, utilisez

dpkg -l | grep linux-image

dpkg -l | grep linux-headers

Vous pouvez ensuite les supprimer un par un ou ensemble, mais veillez à conserver les plus récents.

Il existe également quelques commandes et scripts pratiques pour automatiser la suppression.

http://ubuntuforums.org/showthread.php?t=1658648

Ce qui suit prétend supprimer tous les noyaux et en-têtes inutilisés :

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

(utiliser apt-get -y à supprimer sans poser de questions)

Voici ce qui se passe lorsqu'il est exécuté sur la 18.04.1 :

~$ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]

\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | xargs sudo apt-get -y purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.15.0-33* linux-headers-4.15.0-33-generic* linux-headers-4.15.0-34* linux-headers-4.15.0-34-generic* linux-image-4.15.0-33-generic* linux-image-4.15.0-34-generic*
  linux-modules-4.15.0-33-generic* linux-modules-4.15.0-34-generic* linux-modules-extra-4.15.0-33-generic* linux-modules-extra-4.15.0-34-generic*
0 upgraded, 0 newly installed, 10 to remove and 1 not upgraded.
After this operation, 671 MB disk space will be freed.
(Reading database ... 227403 files and directories currently installed.)
Removing linux-headers-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-headers-4.15.0-33 (4.15.0-33.36) ...
Removing linux-headers-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-headers-4.15.0-34 (4.15.0-34.37) ...
Removing linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-image-4.15.0-33-generic (4.15.0-33.36) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-33-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Found linux image: /boot/vmlinuz-4.15.0-34-generic
Found initrd image: /boot/initrd.img-4.15.0-34-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-image-4.15.0-34-generic (4.15.0-34.37) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.15.0-36-generic
I: /initrd.img.old is now a symlink to boot/initrd.img-4.15.0-36-generic
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-34-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
(Reading database ... 156180 files and directories currently installed.)
Purging configuration files for linux-image-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
dpkg: warning: while removing linux-modules-4.15.0-33-generic, directory '/lib/modules/4.15.0-33-generic' not empty so not removed
Purging configuration files for linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-image-4.15.0-33-generic (4.15.0-33.36) ...
Purging configuration files for linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
~$ uname -r
4.15.0-36-generic

0 votes

Le script que vous avez trouvé dans le forum est défectueux. Il se peut qu'il ne supprime pas certains paquets d'en-tête souhaités (si vous utilisez un vieux noyau -pae), et d'un autre côté, il peut supprimer un ou plusieurs paquets que vous voulez conserver.

0 votes

Merci pour le commentaire. Le script n'est peut-être pas parfait, cependant, je l'utilise depuis des années, principalement sur 12.04 et 14.04, 32 et 64 bits, et je n'ai eu aucun problème. ...et oui, linux-libc-dev est installé.

0 votes

Je suppose que le numéro de version de linux-libc-dev correspond au numéro de version du noyau actuel alors. Voici dpkg -l linux-libc-dev | sed '/^ii/!d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' imprime linux-libc-dev:amd64

26voto

SitWalkStand Points 735

10.04 Méthode GUI

Computer Janitor peut nettoyer les vieux noyaux et je crois qu'il est installé par défaut dans Ubuntu (mais pas dans Kubuntu).

Grub 1, si vous l'utilisez, dispose d'une option en /boot/grub/menu.lst pour spécifier combien de noyaux il doit montrer au maximum. Grub 2, pour autant que je sache, ne le fait pas.

4 votes

Computer Janitor ne doit pas être utilisé - il est bogué et a maintenant été abandonné comme application par défaut dans natty/oneiric/precise.

2 votes

Installez plutôt "Ubuntu Tweak" comme décrit dans une autre réponse (sa propre ppa), qui a son propre "computer janitor" (à ne pas confondre avec le "computer janitor" qui était temporairement disponible dans les anciennes versions d'ubuntu)

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