Por que o GrUB não consegue encontrar um kernel que já foi encontrado?

3

Após a atualização para o 15.04, eu preciso ter cabeçalhos de kernel correspondentes ao kernel em execução (para outro pacote).

O kernel do upgrade instalado 3.19.0-17. Apenas no caso, eu também instalei linux-headers-generic . Então, eu corri sudo update-grub e reiniciei. No entanto, o sistema inicializou no kernel 3.16.0-31 (como confirmado por uname -r ).

Depois de muita escavação, descobri que o GrUB reconhece o kernel 3.19 em update-grub e até o preenche em /boot/grub/menu.lst . No entanto, na inicialização, o GrUB reconhece apenas até o kernel 3.16 no menu de inicialização . Como faço para corrigir isso, para que o GrUB possa inicializar em 3.19?

Aqui estão algumas saídas do meu sistema atual.

sudo update-grub sempre produz a seguinte saída:

$ 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

Abrindo /boot/grub/menu.lst depois de executar update-grub , a primeira opção é:

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

Mas, mantendo Shift durante a inicialização, não há opção para escolher 3.19 (embora eu possa escolher qualquer um dos outros). Após a inicialização, uname -r confirma que foi inicializado em 3.16:

$ uname -r
3.16.0-31-generic

Saída cortada de um dpkg -l , mostrando que o kernel 3.19 está realmente instalado:

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

Eu também tentei remover / reinstalar o grub e os cabeçalhos, e algumas outras coisas que não tiveram consequências.

    
por imallett 15.05.2015 / 07:12

1 resposta

3

A versão mais antiga do GRUB (0.9.7) provavelmente usou menu.lst para determinar o que exibir, enquanto a versão mais recente do GRUB (GRUB 2) usa grub.cfg . Parece que você tem algum mix de GRUB e GRUB 2 instalado.

Usar update-grub do pacote grub atualizará o arquivo menu.lst , o que efetivamente não fará nada se o gerenciador de inicialização for o GRUB 2, que é o que está acontecendo aqui. Em vez disso, você deve instalar grub2-common (que deve desinstalar o pacote grub ). Então, ao executar update-grub (ou update-grub2 ; ambos fazem a mesma coisa), o arquivo grub.cfg é atualizado em vez disso.

Responda com base em esta resposta .

    
por saiarcot895 15.05.2015 / 23:38