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.

2voto

mdonatas Points 833

Sur la base d'une réponse précédente de David Kemp, le script suivant purgera tous les en-têtes et toutes les images, à l'exception de l'en-tête de l'image. 2 derniers versions.

#!/bin/sh
# This script assumes that the installed linux-image and linux-headers packages
# share the same versions (i.e. if a linux-image version number is installed,
# the corresponding linux-headers package will also be installed, and vice
# versa.)

SECONDTOLASTVER=$(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -r -n | sed '/^[^0-9]\+$/d' | sed 's/^.*-\([0-9\.]\+-[0-9]\+\).*/\1/' | uniq | sed -n 2p)

# get a list of package names matching the argument passed to the function, and
# return only those package names which should be removed
get_pkgs_to_remove_matching () {
    if [ -n "$SECONDTOLASTVER" ]; then
        echo $(dpkg --list | grep $1 | awk '{ print $2 }' | sort | sed -n '/'"$SECONDTOLASTVER"'/q;p')
    fi
}

echo $(get_pkgs_to_remove_matching linux-image) $(get_pkgs_to_remove_matching linux-headers) | xargs sudo apt-get purge

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

0 votes

Pourquoi ce texte a-t-il été rétrogradé ? Cela n'a pas fonctionné pour quelqu'un ? Lorsque vous copiez/collez, assurez-vous que vous n'enveloppez pas les longues lignes lorsque vous collez. Je n'ai eu aucun problème pour que cela fonctionne.

0 votes

La dernière version du noyau de ma machine est 3.13.0-43-lowlatency. Ce script purgerait linux-headers-3.13.0-43-lowlatency.

0 votes

@jarno comment avez-vous déterminé cela ? pour l'essayer sans faire quoi que ce soit, ajoutez l'option "-s" à la commande apt-get (ou supprimez simplement l'option | xargs sudo apt-get -y purge tout à fait). Si la version 3.13.0-43-lowlatency est affichée, il est possible que des versions ultérieures soient installées sur votre système.

2voto

sprocketoctopus Points 181

Vous pouvez utiliser ukuu - c'est une interface graphique - pour mettre à jour et supprimer les anciens noyaux. Cela fonctionne pour moi !

N'oubliez pas de laisser les deux derniers installés et évidemment le noyau "en cours d'exécution".

Vous pouvez également configurer ukuu pour qu'il n'affiche que les versions principales, même les noyaux RC, et qu'il cache les versions ponctuelles.

ukuu

Vous pouvez trouver ukuu dans Synaptic, ou les instructions sont ici :

OMG!Ubuntu ukuu instructions d'installation

1voto

Chad--24216 Points 1191

La prochaine fois, lors de la suppression de vieux noyaux, ouvrez un Terminal et utilisez cette commande :

sudo apt-get autoremove linux-headers-2.6.38-10-generic

Vous pouvez utiliser Synaptic pour obtenir le nom exact du noyau que vous avez l'intention de supprimer. Ouvrez simplement Synaptic et recherchez "linux-headers", puis sélectionnez l'entrée du noyau que vous souhaitez supprimer. L'entrée concernée sera marquée avec "-generic" à la fin.

Pour supprimer toutes les dépendances inutilisées (restantes) dans le système, utilisez cette commande seule :

sudo apt-get autoremove

0 votes

Les dépendances sont supprimées mais j'ai toujours ces fichiers dans le dossier /boot.

0 votes

Je pense que vous devriez utiliser --purge et purger les paquets linux-image respectifs ainsi que les paquets linux-headers.

1voto

Joe Points 11

Voici un aperçu de ce que j'ai fait, mais attention, comme je ne suis pas un expert de Linux, assurez-vous de savoir ce que vous faites et d'avoir sauvegardé tous les fichiers que vous modifiez.

gedit /boot/grub/grub.cfg

puis trouvez les entrées que vous voulez conserver, nous les mettrons en surbrillance et les copierons.

cd /etc/grub.d
ls

vous verrez une liste de fichiers comme 10_linux et 30_os-prober

sudo chmod -x 10_linux

ceci empêchera le formulaire d'ajouter automatiquement toutes les entrées linux dans le menu de démarrage Grub.

gksudo gedit 40_custom

ouvrez le fichier du menu de démarrage personnalisé, puis retournez dans Grub.cfg (qui devrait toujours être ouvert dans gedit), et copiez les entrées que vous voulez garder... comme par exemple

menuentry "My Default Karmic" {
  set root=(hd0,1)
  search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8
  linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet splash
  initrd /boot/initrd.img-2.6.31-11-generic
}

les coller dans 40_custom puis enregistrez-la.

sudo chmod 755 40_custom

le rend exécutable, puis enfin nous mettons à jour Grub qui modifiera le fichier Grub.cfg :

sudo update-grub

Maintenant, ATTENTION, si vous mettez à jour votre noyau ou votre OS, votre menu de démarrage ne sera probablement pas mis à jour... vous devrez le faire manuellement. Mais en suivant cette procédure, vous pourrez personnaliser un peu plus le menu de démarrage, par exemple en supprimant la version du noyau et en mettant simplement le nom d'ubuntu... c'est-à-dire Ubuntu Lucid 10.04, etc...

J'espère que quelqu'un trouvera cela utile, car cela m'a pris un certain temps à comprendre... je n'ai vu cette solution nulle part...

3 votes

Cette réponse semble exagérée. Il est préférable de supprimer les anciens noyaux.

0 votes

J'avais lu que des noyaux supplémentaires pouvaient être utiles en cas de situations de récupération. En outre, il s'agit d'un moyen simple de modifier le texte de l'entrée de démarrage. Ainsi, plutôt que de dire "Ubuntu, Linux kernel x.x.xx-yy --text1 -text2 -t3 -t4 --t5 etc etc" (où les entrées --text indiquent juste des options/paramètres que je ne comprends pas) vous pouvez le changer en "Ubuntu xx.yy" bien que j'aie eu un crochet "{" dont je n'ai pas pu me débarrasser.

1 votes

Je garde le noyau précédent jusqu'à ce que je vérifie que le noyau le plus récent fonctionne correctement. S'il fonctionne, il ne va pas cesser de fonctionner. Ainsi, après avoir vérifié le noyau le plus récent (après une semaine environ), je n'ai aucune raison de conserver l'ancien noyau. S'il ne fonctionne pas, je peux me rabattre sur le dernier noyau connu et bon. En fait, j'utilise actuellement un ancien noyau en raison d'un bug rédhibitoire dans les noyaux actuels. Mais cela ne change pas ma politique générale. Vous n'avez besoin que d'un seul noyau connu et bon.

1voto

Installer le gestionnaire de paquets synaptique et descendez jusqu'à l'onglet des filtres (je pense que les filtres, sinon essayez les 5) et sélectionnez "local". Cela vous montrera les paquets orphelins sur votre système, tels que les noyaux. Après les avoir désinstallés, exécutez update-grub . Cette commande met à jour la liste des options de démarrage pour Grub.

Si cela échoue, vous pouvez toujours essayer apt-get remove linux-image-version-generic .

0 votes

Dans Synaptic, vous pouvez filtrer sur 'Components' -> 'Kernel and modules', ce qui inclut tous les noyaux. Et trier par la première colonne : 'S' (Status), ainsi vous obtenez tous les noyaux installés en haut. En effet, update-grub est conseillé.

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