Confusão com múltiplas imagens do kernel linux - o Ubuntu inicia no kernel antigo

5

Estou executando o Ubuntu 16.04. Após um aviso por atualização de software, que descartei, ao inicializar, abri um terminal e executei meu alias de atualização:

alias maintain='set -x; sudo apt-get update && sudo apt-get upgrade && sudo apt autoremove && sudo apt autoclean; set +x'

Estranhamente, nenhum pacote foi atualizado, mas recebi a seguinte mensagem:

The following packages have been kept back:

Havia 3 pacotes com nomes linux, image, cabeçalhos não lembram os nomes exatos.

Depois de verificar aqui eu corro

sudo apt-get install [3 packages names here]

e os pacotes instalados sem erros ou avisos. Pensando que o kernel não pode ser completamente atualizado durante a execução, eu também reiniciei meu laptop. Querendo verificar se a atualização foi concluída, eu corro os seguintes comandos [que encontrei aqui enquanto checava o aviso anterior] no meu terminal:

$ uname -r
4.4.0-21-generic
$ dpkg -l | grep linux-image
ii  linux-image-4.4.0-21-generic 4.4.0-21.37 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-22-generic 4.4.0-22.40 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-24-generic 4.4.0-24.43 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-21-generic 4.4.0-21.37 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-22-generic 4.4.0-22.40 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-24-generic 4.4.0-24.43 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-generic 4.4.0.24.25 amd64 Generic Linux kernel image

Além do fato de que eu tenho três em vez de duas imagens do kernel, a questão é:

Por que eu tenho várias imagens do kernel instaladas? Como meu alias executa autoremove / autoclean [e eu reiniciei mais uma vez e execute novamente o alias para errar do lado seguro] eles não deveriam ser excluídos? Também não deve, após a reinicialização, o Ubuntu estar usando a última versão do kernel?

update1: Resultados de ls / boot:

$ ls /boot
abi-4.4.0-21-generic     config-4.4.0-22-generic      initrd.img-4.4.0-22-generic  memtest86+_multiboot.bin     vmlinuz-4.4.0-21-generic
abi-4.4.0-22-generic     config-4.4.0-24-generic      initrd.img-4.4.0-24-generic  System.map-4.4.0-21-generic  vmlinuz-4.4.0-22-generic
abi-4.4.0-24-generic     grub                         memtest86+.bin               System.map-4.4.0-22-generic  vmlinuz-4.4.0-24-generic
config-4.4.0-21-generic  initrd.img-4.4.0-21-generic  memtest86+.elf               System.map-4.4.0-24-generic

update2: depois de executar sudo update-grub e reinicializar, ainda recebo:

$ uname -r
4.4.0-21-generic

Eu também lembro de ter visto o grub sendo atualizado da saída do terminal quando os novos pacotes do kernel estavam sendo instalados.

update3: Eu tentei inicializar no kernel 4.4.0-24 a partir das opções avançadas de inicialização do grub2 e então executar sudo update-grub novamente. Mas depois de outro reboot uname -r ainda mostra 4.4.0-21: (

update4: Estou pensando em outros ângulos para abordar o problema. Considerei configurar manualmente o grub para carregar no novo kernel, mas isso é uma solução alternativa, não uma correção, já que eu precisaria fazer isso novamente toda vez que eu baixar um novo kernel. Durante esse período, lembrei-me de que usei o grub-customizer para fazer alguns pequenos ajustes (porque eu tenho inicialização dupla com o win7). Eu estou colando as entradas relevantes de /boot/grub/grub.cfg se as pessoas puderem identificar o que está errado e como ele pode ser corrigido. É a entrada de menu do Ubuntu e 2 (de 9) entradas de submenu de opções de inicialização avançadas:

# # BEGIN /etc/grub.d/40_custom_proxy ###
menuentry "Ubuntu 16" --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-4e2b96c0-04a0-4750-bd14-479f684bf3be' {
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,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  4e2b96c0-04a0-4750-bd14-479f684bf3be
else
  search --no-floppy --fs-uuid --set=root 4e2b96c0-04a0-4750-bd14-479f684bf3be
fi
linux   /boot/vmlinuz-4.4.0-21-generic root=UUID=4e2b96c0-04a0-4750-bd14-479f684bf3be ro  quiet splash $vt_handoff
initrd  /boot/initrd.img-4.4.0-21-generic
}
# ## END /etc/grub.d/40_custom_proxy ###

menuentry "Ubuntu, with Linux 4.4.0-21-generic" --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-advanced-4e2b96c0-04a0-4750-bd14-479f684bf3be' {
    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,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  4e2b96c0-04a0-4750-bd14-479f684bf3be
    else
      search --no-floppy --fs-uuid --set=root 4e2b96c0-04a0-4750-bd14-479f684bf3be
    fi
    echo    'Loading Linux 4.4.0-21-generic ...'
    linux   /boot/vmlinuz-4.4.0-21-generic root=UUID=4e2b96c0-04a0-4750-bd14-479f684bf3be ro  quiet splash $vt_handoff
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-4.4.0-21-generic
}

menuentry "Ubuntu, with Linux 4.4.0-24-generic" --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-24-generic-advanced-4e2b96c0-04a0-4750-bd14-479f684bf3be' {
    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,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  4e2b96c0-04a0-4750-bd14-479f684bf3be
    else
      search --no-floppy --fs-uuid --set=root 4e2b96c0-04a0-4750-bd14-479f684bf3be
    fi
    echo    'Loading Linux 4.4.0-24-generic ...'
    linux   /boot/vmlinuz-4.4.0-24-generic root=UUID=4e2b96c0-04a0-4750-bd14-479f684bf3be ro  quiet splash $vt_handoff
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-4.4.0-24-generic
}

Não sei ao certo o quão relevante isso é - e esse arquivo não deve ser alterado. Mas suponho que, seja qual for o problema, pode criar uma pegada nesse arquivo a ser identificado. (Esperançosamente.)

    
por Karsus 11.06.2016 / 20:03

1 resposta

2

Depois de dar uma olhada no /boot/grub/grub.cfg perguntando se eu deveria mudar alguma coisa, eu lembrei que eu tinha usado o grub-customiser quando eu configurei o meu sistema. Eu abri para ver o que eu encontraria lá.

Foram removidas as entradas do Ubuntu e do Windows 7. De alguma forma, a entrada do Ubuntu removida tinha a versão 4.4.0-24 em seus detalhes (talvez update-grub auto atualizou?). Não tenho certeza. Eu removi minha entrada e a restaurei como a primeira opção. Agora o Ubuntu carrega no mais novo kernel instalado:

$ uname -r
4.4.0-24-generic

e espero que tudo funcione bem. (Pelo menos até a próxima atualização do kernel.)

De algumas entradas no grub-customizer, suspeito que, se uma entrada é rotulada como personalizada, ela não é atualizada quando um kernel mais novo é instalado? Não tenho certeza.

De qualquer forma, obrigado a todos que comentaram e me ajudaram a descobrir. Não poderia ter feito sem você.

    
por Karsus 12.06.2016 / 00:16