O que o GRUB está fazendo enquanto leva 9 minutos para iniciar a inicialização do kernel?

2

Ultimamente (pelo menos nas duas últimas vezes em que liguei o PC) notei que o grub demora uma eternidade para ser iniciado. Eu contei quase 9 minutos entre as mensagens do BIOS e o log do kernel aparece na tela.

A questão é como posso saber o que o grub está fazendo ou esperando? Como posso verificar se o grub está ok?

Há alguns dias, eu removi a tela inicial, para ver o log de texto em cada inicialização. Na maioria das vezes, é rápido e normal. Durante esses 9 minutos o monitor recebe sinal, mas é apenas uma tela preta. NumLock não responde, a coisa toda parece estar congelada, mas não é.

Eu tenho / em um software raid1 desde 2009, pelo menos.

O ataque é relatado como saudável. Durante esses minutos, há uma pequena atividade no disco rígido no primeiro minuto. Os dados do disco rígido SMART são saudáveis. O desligamento no dia anterior foi normal.

Eu tive todas as versões do Ubuntu instaladas neste computador desde 8.04. Eu tenho 12.10 instalado desde outubro. Não há nada de novo neste computador, sem novos discos rígidos, sem alterações nas configurações do BIOS.

Não há log do grub AFAIK e o log do kernel não é interessante porque diz que o kernel inicializou em 28 segundos [kernel PhenomX4: [28.825313] vboxpci: IOMMU não encontrado (não registrado)] então os 9 minutos são antes do kernel iniciar .

* Atualização: 27 de março *

Encontrei o problema, mas ainda não sei a causa. O problema era que o /boot/grub/grub.cfg tinha 11.6 MB e tinha entradas como essa repetidas muitas vezes com pequenas variações. O Grub estava sufocando em um arquivo tão grande para criar seu menu.

menuentry 'Ubuntu 12.10 (12.10) (en /dev/sda1) (en /dev/sda1) (en /dev/sdb1) (en /dev/sda1) (en /dev/sda1) (en /dev/sda1) (en /dev/sda1) (en /dev/sda1) (en /dev/sda1) (en /dev/sda1) (en /dev/sda1) (en /dev/sda1) (en /dev/sda1) (en /dev/sda1) (en /dev/sda1) (en /dev/sda1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/vmlinuz--73e06880-5f46-4493-aaef-23fa4ad138f6' {
    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'  73e06880-5f46-4493-aaef-23fa4ad138f6
    else
      search --no-floppy --fs-uuid --set=root 73e06880-5f46-4493-aaef-23fa4ad138f6
    fi
    linux /vmlinuz root=/dev/sda1
    initrd /initrd.img
}

Ainda não sabe por que esse arquivo cresceu tanto?

Atualização 28 de março

Uma grande parte das entradas do menu é gerada pelo /etc/grub.d/30_os-prober.

Line 223: ### BEGIN /etc/grub.d/30_os-prober ###
...
Line 175174: ### END /etc/grub.d/30_os-prober ###

o grub.cfg tem 175191 linhas, de modo que o script representa 99% dos 11,6 MB no arquivo.

    
por Ignorante 24.03.2013 / 15:23

2 respostas

5

Existe uma boa ferramenta chamada BootChart incluída nos repositórios. Ele também possui um componente de depuração do GRUB fornecido. eles permitirão que você crie um perfil da sua inicialização e, com sorte, descubra o que está consumindo a maior parte do tempo.

    
por Nerdfest 24.03.2013 / 16:21
0

Se você obtiver todas as entradas, provavelmente há algo fazendo um loop no Grub. Aconteceu uma coisa semelhante quando instalei Raring em uma partição separada (más entradas criadas como menuentry "Ubuntu"... ). Como você disse que não mudou nada talvez isso tenha origem em alguma atualização no Grub?

Esse arquivo é gerado automaticamente (quando você instala um novo kernel, por exemplo) pelos scripts presentes em /etc/grub.d . Se você examinar grub.cfg , verá que há separadores entre as entradas, especificando qual script o gerou. Exemplo:

### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "Ubuntu Raring (on /dev/sda2)" --class gnu-linux --class gnu --class os {
    (...)
}

menuentry 'Steam' --class ubuntu --class gnu-linux {
        (...)
}
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

Portanto, tente identificar qual script está criando essas entradas (e atualize sua resposta com o nome do script). Quando você chegar lá, você pode usar sudo grub-mkconfig ou executar esse script usando, por exemplo:

sh -v /etc/grub.d/file

para tentar identificar o que está acontecendo.

Esta não é uma solução, mas espero que possa ajudar em algo.

    
por Salem 28.03.2013 / 00:07