web-dev-qa-db-fra.com

Ne pas démarrer sur le dernier noyau après la mise à jour vers grub 2

J'ai l'habitude d'installer les mises à jour d'ubuntu depuis apt, puis de le redémarrer pour obtenir le dernier noyau. Cependant, ce processus ne semble pas fonctionner correctement sur l'un de mes serveurs. Le noyau 4.10.0-21 est installé, mais la machine ne semble utiliser que 4.10.0-20 au redémarrage.

Pendant le processus de mise à jour vers grub2 , une boîte de dialogue m’a demandé si je souhaitais chaîner ma configuration grub héritée. J'ai choisi "non". Je pense que cela peut faire partie du problème.

Mettre à jour grub semble faire le bon choix, il met le noyau le plus récent en premier:

$ Sudo update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.10.0-21-generic
Found initrd image: /boot/initrd.img-4.10.0-21-generic
Found linux image: /boot/vmlinuz-4.10.0-20-generic
Found initrd image: /boot/initrd.img-4.10.0-20-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done

Mon fichier /etc/grub/default indique que le noyau 0 doit être le répertoire par défaut:

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

Je peux vérifier que grub.cfg obtient les noyaux ajoutés:

$ grep menuentry /boot/grub/grub.cfg
...
    menuentry 'Ubuntu, with Linux 4.10.0-21-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-21-generic-advanced-6af3f559-58c5-4c56-b1c8-ffe02c700c97' {
    menuentry 'Ubuntu, with Linux 4.10.0-21-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-21-generic-recovery-6af3f559-58c5-4c56-b1c8-ffe02c700c97' {
    menuentry 'Ubuntu, with Linux 4.10.0-20-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-20-generic-advanced-6af3f559-58c5-4c56-b1c8-ffe02c700c97' {
    menuentry 'Ubuntu, with Linux 4.10.0-20-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-20-generic-recovery-6af3f559-58c5-4c56-b1c8-ffe02c700c97' {
...

$ grep -Poz "menuentry 'Ubuntu' (.|\n)*?\}" /boot/grub/grub.cfg
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-6af3f559-58c5-4c56-b1c8-ffe02c700c97' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  6af3f559-58c5-4c56-b1c8-ffe02c700c97
    else
      search --no-floppy --fs-uuid --set=root 6af3f559-58c5-4c56-b1c8-ffe02c700c97
    fi
        linux   /boot/vmlinuz-4.10.0-21-generic root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro  quiet splash $vt_handoff
    initrd  /boot/initrd.img-4.10.0-21-generic
}

Le fichier du noyau existe réellement sur le disque:

$ ls -l /boot/vmlinuz-4.10.0-21-generic
-rw------- 1 root root 7575312 Apr 28 06:41 /boot/vmlinuz-4.10.0-21-generic

Au cas où il aurait été corrompu, j'ai essayé de le réinstaller:

$ Sudo apt-get install --reinstall linux-image-4.10.0-21-generic

dpkg montre que les deux noyaux sont installés:

$ dpkg -l | grep ii | grep linux-image-[0-9].*-generic
ii  linux-image-4.10.0-20-generic               4.10.0-20.22                              AMD64        Linux kernel image for version 4.10.0 on 64 bit x86 SMP
ii  linux-image-4.10.0-21-generic               4.10.0-21.23                              AMD64        Linux kernel image for version 4.10.0 on 64 bit x86 SMP

Cependant après le redémarrage:

$ uname -r
4.10.0-20-generic

$ cat /proc/version 
Linux version 4.10.0-20-generic (buildd@lcy01-05) (gcc version 6.3.0 20170406 (Ubuntu 6.3.0-12ubuntu2) ) #22-Ubuntu SMP Thu Apr 20 09:22:42 UTC 2017

$ cat /proc/cmdline
root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro quiet splash 

Je pense vraiment que l'héritage de grub est toujours utilisé sur cette machine. /boot/grub/menu.1st fait référence à 20 mais pas à 21:

title           Ubuntu 17.04, kernel 4.10.0-20-generic
root            (hd0,0)
kernel          /boot/vmlinuz-4.10.0-20-generic root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro quiet splash
initrd          /boot/initrd.img-4.10.0-20-generic
quiet

title           Ubuntu 17.04, kernel 4.10.0-20-generic (recovery mode)
root            (hd0,0)
kernel          /boot/vmlinuz-4.10.0-20-generic root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro  single
initrd          /boot/initrd.img-4.10.0-20-generic

title           Ubuntu 17.04, kernel 4.8.0-49-generic
root            (hd0,0)
kernel          /boot/vmlinuz-4.8.0-49-generic root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro quiet splash
initrd          /boot/initrd.img-4.8.0-49-generic
quiet

title           Ubuntu 17.04, kernel 4.8.0-49-generic (recovery mode)
root            (hd0,0)
kernel          /boot/vmlinuz-4.8.0-49-generic root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro  single
initrd          /boot/initrd.img-4.8.0-49-generic

title           Ubuntu 17.04, memtest86+
root            (hd0,0)
kernel          /boot/memtest86+.bin
quiet

Cette machine est dans un centre de données et je n’ai pas accès à la console pendant le processus de redémarrage. Je ne parviens pas à voir ce que Grub a dit lors du redémarrage, je ne peux y entrer qu'une fois qu'il est opérationnel.

Qu'est-ce qui pourrait empêcher le noyau le plus récent d'être utilisé et comment puis-je le réparer?

4

Au premier abord, tout semble aller pour le mieux, votre grub.cfg, /etc/default/grub, l'état d'installation du noyau, tout est comme il se doit.

Cependant, si nous vérifions cat /proc/version comme votre sortie l'indique, grub charge un mauvais noyau:

Linux version 4.10.0-20-generic ...

Et comme vous l'avez mentionné, vous avez GRUB Legacy sur votre système. Je suppose donc que GRUB 2 n'est pas installé sur votre secteur de démarrage en général.

alors courez:

Sudo grub-install /dev/sda

installer le grub2 sur le secteur d’amorçage.

Ensuite, pour vous assurer que tout est correct, exécutez:

Sudo update-grub

régénérer le grub.cfg

3
Ravexina

Je ne cours pas le serveur, mais le bureau. J'ai remarqué quelque chose d'étrange lors de ma mise à jour vers la 4.10.0-21.23 ...

À la fin du processus de mise à jour, une sortie dans le terminal indiquait:

The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old 
you may need to re-run your boot loader[grub]

J'ai re-couru:

Sudo update-grub

Juste pour être en sécurité avant de redémarrer.

0
user689766