web-dev-qa-db-fra.com

Supprimer les anciennes entrées du noyau dans Grub

J'efface régulièrement les anciens noyaux en ne laissant que les deux dernières entrées à l'aide de Synaptic.

J'utilise Precise. Cependant, dans le menu "Version précédente de Linux" de Grub, il y a pas mal d'entrées intitulées 2.6.8. Je ne trouve pas ces images linux dans Synaptic.

dpkg -l | grep linux-image

Donne:

rc  linux-image-3.0.0-17-generic           3.0.0-17.30                         
    Linux kernel image for version 3.0.0 on x86/x86_64
ii  linux-image-3.2.0-27-generic           3.2.0-27.43
Linux kernel image for version 3.2.0 on 32 bit x86 SMP
ii  linux-image-3.2.0-29-generic           3.2.0-29.46
Linux kernel image for version 3.2.0 on 32 bit x86 SMP
ii  linux-image-3.4.0-030400-generic       3.4.0-030400.201205210521
Linux kernel image for version 3.4.0 on 32 bit x86 SMP
ii  linux-image-generic                    3.2.0.29.31
Generic Linux kernel image

Sudo update-grub donne:

Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.4.0-030400-generic
Found initrd image: /boot/initrd.img-3.4.0-030400-generic
Found linux image: /boot/vmlinuz-3.2.0-29-generic
Found initrd image: /boot/initrd.img-3.2.0-29-generic
Found linux image: /boot/vmlinuz-3.2.0-27-generic
Found initrd image: /boot/initrd.img-3.2.0-27-generic
Found linux image: /boot/vmlinuz-2.6.38-11-generic
Found initrd image: /boot/initrd.img-2.6.38-11-generic
Found linux image: /boot/vmlinuz-2.6.38-10-generic
Found initrd image: /boot/initrd.img-2.6.38-10-generic
Found linux image: /boot/vmlinuz-2.6.38-8-generic
Found initrd image: /boot/initrd.img-2.6.38-8-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows Vista (loader) on /dev/sda1

Sudo apt-get remove linux-image-2.6.8-8-generic donne:

E: Unable to locate package linux-image-2.6.8-8-generic
E: Couldn't find any package by regex 'linux-image-2.6.8-8-generic'

Mon dossier de démarrage contient les éléments suivants:

abi-2.6.38-10-generic initrd.img-3.4.0-030400-generic 
 abi-2.6.38-11-generic memtest86 + .bin 
 abi-2.6.38-8- generic memtest86 + _multiboot.bin 
 abi-3.2.0-27-generic System.map-2.6.38-10-generic 
 abi-3.2.0-29-generic System.map-2.6 .38-11-generic 
 Abi-3.4.0-030400-generic System.map-2.6.38-8-generic 
 Config-2.6.38-10-generic System.map-3.2 .0-27-generic 
 Config-2.6.38-11-system.map-3.2.0-29-generic 
 Config-2.6.38-8-generic System.map-3.4 .0-030400-generic 
 Config-3.2.0-27-generic vmcoreinfo-2.6.38-10-generic 
 Config-3.2.0-29-generic vmcoreinfo-2.6.38-11 -generic 
 config-3.4.0-030400-generic vmcoreinfo-2.6.38-8-generic 
 extlinux vmlinuz-2.6.38-10-generic 
 grub vmlinuz-2.6. 38-11-generic 
 Initrd.img-2.6.38-10-generic vmlinuz-2.6.38-8-generic 
 Initrd.img-2.6.38-11-generic vmlinu z-3.2.0-27-generic 
 initrd.img-2.6.38-8-generic vmlinuz-3.2.0-29-generic 
 initrd.img-3.2.0-27-generic vmlinuz-3.4.0-030400-generic 
 initrd.img-3.2.0-29-generic

et

ls -l /etc/grub.d
total 56 
 - rwxr-xr-x 1 racine racine 6715 17 avril 17 20:16 00_header 
 - rwxr-xr-x 1 racine racine 5522 1 oct 2011 2011_debian_theme 
 - rwxr- xr-x 1 racine 7407 17 mai 09 09h22 10_linux 
 - rwxr-xr-x 1 racine 6335 avril 17 20:16 20_linux_xen 
 - rwxr-xr-x 1 racine 1 1588 mai 3 2011 20_memtest86 + 
 - rwxr-xr-x 1 racine racine 7603 17 avr. 20 20:16 30_os-prober 
 - rwxr-xr-x 1 racine racine 214 1er octobre 2011 40_custom 
 -rwxr-xr-x 1 racine racine 95 1 octobre 2011 41_custom 
 - rw-r - r-- 1 racine racine 483 1er octobre 2011 FICHIER LISEZMOI 
gdisk -l /dev/sda

rendements:

Balayage de la table de partition: 
 MBR: MBR seulement 
 BSD: non présent 
 APM: non présent 
 GPT: non présent 
 
 
 ******************************************** ****************** 
 GPT invalide et MBR valide; convertir le format MBR au format GPT. 
 ************************************* *********************** 
 
 Disque/dev/sda: 312581808 secteurs, 149,1 Gio 
 Taille du secteur logique: 512 octets 
 Identificateur de disque (GUID): F832A498-05E1-4615-B5B1-757ACB4A757A 
 La table de partition contient jusqu'à 128 entrées 
 Le premier secteur utilisable est 34, le dernier le secteur utilisable est 312581774 
 Les partitions seront alignées sur les limites du secteur 2048 
 L’espace libre total est de 4183661 secteurs (2,0 Gio) 
 
 Nombre Début (secteur) Fin ( secteur) Taille Code Nom 
 1 2048 61442047 29.3 GiB 0700 données de base Microsoft 
 3 163842048 169986047 2.9 GiB 8200 échanges Linux 
 4 169986048 312578047 68.0 GiB 0700 données de base Microsoft 
 5 61444096 159666175 46.8 GiB 8300 système de fichiers Linux 

Aidez-nous à éliminer les anciens noyaux inexistants de Grub.

21
To Do

J'ai trouvé ce que ce problème était.

Le problème était que, lorsque j'ai mis à niveau Ubuntu, en effectuant une installation via liveUSB au lieu d'effectuer une mise à niveau normale, les anciens fichiers du noyau étaient conservés dans le dossier/boot.

Maintenant que je suis passé de la même manière de 12h10 à 13h04, j'ai rencontré la même situation.

La solution consiste à supprimer manuellement tous les fichiers liés aux anciens noyaux du dossier/boot et à exécuter Sudo update-grub. Les entrées supplémentaires ont disparu.

10
To Do
  • Ouvrez un terminal (Ctrl+Alt+T).

  • Tapez uname -r. Cela vous montrera le noyau que vous utilisez actuellement, vous ne voudrez donc pas le supprimer.

  • Exécutez la commande suivante: dpkg --list | grep linux-image. Cela montrera tous les noyaux installés.

  • Notez les noms de tous les noyaux que vous souhaitez supprimer.

  • Pour supprimer les noyaux, exécutez: Sudo apt-get purge linux-image-x.x.x.x-xyz ( remplacez le nom du noyau par un nom approprié ).

  • Mettre à jour le GRUB: Sudo update-grub2

Et tu as fini.

Bonus: voici un petit one-liner pour faire tout ça automatiquement:

Sudo apt-get purge $( dpkg --list | grep -P -o "linux-image-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") )
44
green

Essayez cette commande. C'est une version raffinée de la même commande apt-get remove

Sudo apt-get autoremove linux-image-3.2.0-23-generic-pae

En remplaçant remove par autoremove, le processus de suppression détecte et supprime automatiquement les autres dépendances, de sorte que vous obtiendrez une désinstallation propre, plutôt que de devoir aller ici et là et supprimer les restes.

Répétez le processus pour les autres anciens noyaux.

Après cela, lancez

Sudo update-grub

Après cela, vous ne verrez que le dernier noyau.

6
Omal Lasitha

La solution la plus simple consisterait à utiliser ubuntu-Tweak. Après l’installation, lancez-le, allez à Janitor, choisissez Old Kernel, sélectionnez les anciens noyaux que vous souhaitez supprimer et Clean. C'est tout! (Notez que seuls anciens noyaux apparaissent dans le concierge)

3
SeMeKh

En général, je lance simplement Synaptic (qui doit être installé séparément ces jours-ci), cherche "linux" dans la catégorie "Installé" et marque toutes les anciennes versions du noyau et des en-têtes linux (c'est-à-dire toutes sauf la version actuelle) à supprimer. Une fois désinstallés, ils sont supprimés du menu GRUB.

Il doit y avoir une commande astucieuse sur une seule ligne pour le faire, mais il est plus sûr de le faire manuellement.

3
Sergey

Je vous suggère d'entrer ceci dans une session de terminal (Alt-Ctrl-T):

Sudo update-grub

Cette commande force grub à utiliser os-prober et à mettre à jour le menu.

Si vous avez des partitions avec d'anciennes versions Ubuntu qui utilisaient grub (il semble que l'OP ait quelque part une partition médiocre, peut-être plus), il est nécessaire de les nettoyer aussi avant d'exécuter update-grub sur le système actuel. os-prober trouve Windows et d'autres partitions Linux. Pour les autres partitions Linux, il copie les éléments de leurs menus, le cas échéant, plutôt que de consulter leurs fichiers du noyau.

Si vous avez une configuration vraiment confuse, la meilleure solution peut être de démarrer votre système Ubuntu et de réinstaller grub avec:

Sudo apt-get --reinstall install grub2

Lors de la réinstallation de grub, les fichiers /etc/default/grub et /boot/grub/menu.cfg seront recréés, en fonction des noyaux installés dans cette partition et des noyaux installés dans les configurations grub d'autres partitions (probablement plus anciennes) Ubuntu (ne semble pas être un pour l'OP). .

3
John S Gruber

Pour Ubuntu 12.04 LTS (Précis) 64bit (sur non-PAE 32bit)

Vérifiez quelles versions sont présentes:

Sudo update-grub

Supprimez les plus anciens en premier, et non supprimez la version actuelle/la plus récente:

Sudo apt-get remove linux-image-3.2.0-23-generic
Sudo apt-get remove linux-image-3.2.0-24-generic
Sudo apt-get remove linux-image-3.2.0-25-generic

Revérifier quelle version sont maintenant présents. (Optionnel)

Remarque: Cette étape est obligatoire, si vous supprimez la version la plus récente (ou si vous n'en laissez qu'une).

Sudo update-grub

Pour Ubuntu 12.04 LTS (précis) 32bit (PAE)

Vérifiez quelles versions sont présentes:

Sudo update-grub

Supprimez les plus anciens en premier, et non supprimez la version actuelle/la plus récente:

Sudo apt-get remove linux-image-3.2.0-23-generic-pae
Sudo apt-get remove linux-image-3.2.0-24-generic-pae
Sudo apt-get remove linux-image-3.2.0-25-generic-pae

Revérifier quelle version sont maintenant présents. (Optionnel)

Remarque: Cette étape est obligatoire, si vous supprimez la version la plus récente (ou si vous n'en laissez qu'une).

Sudo update-grub
1
david6