it-swarm.com.de

Nach dem Update auf Grub 2 wird nicht auf den neuesten Kernel gebootet

Ich bin es gewohnt, Ubuntu Core-Updates von Apt zu installieren und dann neu zu starten, um auf den neuesten Kernel zuzugreifen. Dieser Prozess scheint jedoch auf einem meiner Server nicht richtig zu funktionieren. Kernel 4.10.0-21 ist installiert, aber der Computer scheint 4.10.0-20 nur beim Neustart zu verwenden.

Während des apt update process to grub2 fragte mich ein Dialog, ob ich meine alte Grub-Konfiguration verketten möchte. Ich habe "nein" gewählt. Ich denke, das könnte ein Teil des Problems sein.

Das Aktualisieren von grub scheint das Richtige zu tun, der neueste Kernel steht an erster Stelle:

$ 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

Meine /etc/grub/default -Datei besagt, dass Kernel 0 der Standard sein sollte:

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=""

Ich kann überprüfen, ob grub.cfg die Kernel hinzugefügt bekommt:

$ 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
}

Die Kerneldatei ist tatsächlich auf der Festplatte vorhanden:

$ 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

Bei der Möglichkeit, dass es irgendwie beschädigt war, habe ich versucht, es neu zu installieren:

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

dpkg zeigt, dass beide Kernel installiert sind:

$ 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

Nach dem Neustart:

$ uname -r
4.10.0-20-generic

$ cat /proc/version 
Linux version 4.10.0-20-generic ([email protected]) (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 

Ich denke wirklich, dass Grub-Legacy auf dieser Maschine immer noch verwendet wird. /boot/grub/menu.1st hat Verweise auf 20, aber nicht auf 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

Dieser Computer befindet sich in einem Rechenzentrum und ich habe während des Neustarts keinen Konsolenzugriff. Ich kann nicht sehen, was grub während des Neustarts sagt, ich kann nur einlesen, wenn es läuft.

Was könnte dazu führen, dass der neueste Kernel nicht verwendet wird und wie kann ich das beheben?

4

Auf den ersten Blick scheint alles in Ordnung zu sein, Ihr grub.cfg, /etc/default/grub, Kernel-Installationsstatus, alles ist so, wie es sein sollte.

Wenn wir jedoch cat /proc/version überprüfen, während Ihre Ausgabe besagt, dass grub einen falschen Kernel lädt:

Linux version 4.10.0-20-generic ...

Und wie Sie bereits erwähnt haben, haben Sie GRUB Legacy auf Ihrem System, also ist GRUB 2 in Ihrem Bootsektor im Allgemeinen nicht installiert.

so laufe:

Sudo grub-install /dev/sda

um den grub2 im Bootsektor zu installieren.

Dann stellen Sie sicher, dass alles korrekt ist:

Sudo update-grub

den grub.cfg neu generieren

3
Ravexina

Ich verwende keinen Server, sondern einen Desktop. Beim Update auf 4.10.0-21.23 ist mir etwas Merkwürdiges aufgefallen ...

Am Ende des Update-Vorgangs wurde im Terminal Folgendes ausgegeben:

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

Ich rannte erneut:

Sudo update-grub

Nur um sicher zu gehen, bevor Sie neu starten.

0
user689766