Não reiniciando para o kernel mais recente após a atualização para o grub 2

4

Estou acostumado a instalar as atualizações principais do Ubuntu a partir do apt e, em seguida, reinicializar para acessar o kernel mais recente. No entanto, esse processo não parece estar funcionando diretamente em um dos meus servidores. Kernel 4.10.0-21 está instalado, mas a máquina só parece usar 4.10.0-20 quando reinicia.

Durante o processo de atualização apt para o grub2 , uma caixa de diálogo me perguntou se eu gostaria de encadear minha configuração legada do grub . Eu escolhi "não". Eu acho que isso pode ser parte do problema.

A atualização do grub parece fazer a coisa certa, ele coloca o kernel mais recente primeiro:

$ 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

Meu arquivo /etc/grub/default diz que o kernel 0 deve ser o padrão:

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

Posso verificar se grub.cfg obtém os kernels adicionados:

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

O arquivo do kernel realmente existe no disco:

$ 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

Com a chance de que ele tenha sido corrompido de alguma forma, tentei reinstalá-lo:

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

O dpkg mostra que ambos os kernels estão instalados:

$ 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

No entanto, após a reinicialização:

$ 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 

Eu realmente acho que o legado do grub ainda está sendo usado nesta máquina. /boot/grub/menu.1st tem referências a 20, mas não a 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

Esta máquina está em um data center e não tenho acesso ao console durante o processo de reinicialização. Não consigo ver o que o grub diz durante a reinicialização, só posso fazer o ssh após ele estar ativo e em execução.

O que poderia estar causando o uso do kernel mais recente e como posso corrigi-lo?

    
por Stephen Ostermiller 16.05.2017 / 14:22

2 respostas

2

Em primeiro lugar, tudo parece bem, seu grub.cfg , /etc/default/grub , status de instalação do Kernel, tudo é como deveria ser.

No entanto, se verificarmos cat /proc/version como sua saída diz que o grub está carregando um Kernel errado:

Linux version 4.10.0-20-generic ...

E, como você mencionou, você tem o GRUB Legacy no seu sistema, então acho que o GRUB 2 não está instalado em seu setor de inicialização em geral.

então execute:

sudo grub-install /dev/sda

para instalar o grub2 no setor de inicialização.

Para garantir que tudo esteja correto, execute:

sudo update-grub

para gerar novamente o grub.cfg

    
por Ravexina 16.05.2017 / 16:10
0

Não estou executando o servidor, mas a área de trabalho. Eu notei algo estranho durante minha atualização para 4.10.0-21.23 ...

No final do processo de atualização, havia uma saída no terminal que dizia:

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

Eu corri novamente:

sudo update-grub

Apenas para estar seguro antes de reinicializar.

    
por user689766 16.05.2017 / 16:44