web-dev-qa-db-fra.com

Pourquoi GrUB ne trouve-t-il pas un noyau déjà trouvé?

Après la mise à niveau vers 15.04, les en-têtes du noyau doivent correspondre au noyau en cours d’exécution (pour un autre package).

La mise à niveau a installé le noyau 3.19.0-17. Juste au cas où, j'ai aussi installé linux-headers-generic. Ensuite, j'ai exécuté Sudo update-grub et redémarré. Pourtant, le système a démarré dans le noyau 3.16.0-31 (comme confirmé par uname -r).

Après de nombreuses recherches, j'ai découvert que GrUB reconnaît le noyau 3.19 dans update-grub et le remplit même dans /boot/grub/menu.lst. Cependant, au démarrage, GrUB ne reconnaît que le noyau 3.16 dans le menu de démarrage . Comment puis-je résoudre ce problème, afin que GrUB puisse démarrer en 3.19?


Voici quelques résultats de mon système actuel.

Sudo update-grub produit toujours la sortie suivante:

$ Sudo update-grub
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-3.19.0-17-generic
Found kernel: /boot/vmlinuz-3.16.0-31-generic
Found kernel: /boot/vmlinuz-3.13.0-40-generic
Found kernel: /boot/vmlinuz-3.11.0-19-generic
Found kernel: /boot/vmlinuz-3.8.0-35-generic
Found kernel: /boot/memtest86+.bin
Found kernel: /boot/vmlinuz-3.19.0-17-generic
Found kernel: /boot/vmlinuz-3.16.0-31-generic
Found kernel: /boot/vmlinuz-3.13.0-40-generic
Found kernel: /boot/vmlinuz-3.11.0-19-generic
Found kernel: /boot/vmlinuz-3.8.0-35-generic
Found kernel: /boot/memtest86+.bin
Updating /boot/grub/menu.lst ... done

Ouverture de /boot/grub/menu.lst après avoir exécuté update-grub, la toute première option est:

title        Ubuntu 15.04, kernel 3.19.0-17-generic
uuid        ac9d0eaf-e090-4c29-8e7b-30e98ed07d29
kernel        /boot/vmlinuz-3.19.0-17-generic root=UUID=ac9d0eaf-e090-4c29-8e7b-30e98ed07d29 ro quiet splash
initrd        /boot/initrd.img-3.19.0-17-generic

Mais, tenant Shift au démarrage, il n'y a pas d'option pour choisir 3.19 (bien que je puisse choisir n'importe lequel des autres). Après le démarrage, uname -r confirme qu'il a démarré en 3.16:

$ uname -r
3.16.0-31-generic

La sortie recadrée d'un dpkg -l, montrant que le noyau 3.19 est bien installé:

ii  linux-headers-3.19.0-17                              3.19.0-17.17                               all          Header files related to Linux kernel version 3.19.0
ii  linux-headers-3.19.0-17-generic                      3.19.0-17.17                               AMD64        Linux kernel headers for version 3.19.0 on 64 bit x86 SMP
ii  linux-headers-generic                                3.19.0.17.16                               AMD64        Generic Linux kernel headers

J'ai également essayé de purger/réinstaller grub et les en-têtes, et quelques autres choses qui n'ont eu aucune conséquence.

3
imallett

L'ancienne version de GRUB (0.9.7) utilisait probablement menu.lst pour déterminer les éléments à afficher, tandis que la version plus récente de GRUB (GRUB 2) utilisait plutôt grub.cfg. Il semble que vous ayez un certain mélange de GRUB et de GRUB 2 installés.

Utiliser update-grub à partir du paquet grub mettra à jour le fichier menu.lst, ce qui ne fera rien si le chargeur de démarrage est GRUB 2, ce qui se passe ici. Au lieu de cela, vous devriez installer grub2-common (ce qui devrait désinstaller le paquet grub). Ensuite, lors de l'exécution de update-grub (ou update-grub2; les deux font la même chose), le fichier grub.cfg est mis à jour à la place.

Réponse basée sur this réponse.

4
saiarcot895