
Ultimamente (pelo menos nas duas últimas vezes que liguei o PC) percebi que o grub leva uma eternidade para inicializar. Cronometrei quase 9 minutos entre as mensagens do BIOS desaparecerem e o log do kernel aparecer 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, 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, tudo parece estar congelado, mas não está.
Eu tenho um software raid1 desde 2009, pelo menos.
O ataque é relatado como saudável. Durante esses minutos, há alguma pequena atividade no disco rígido no primeiro minuto. Os dados SMART do disco rígido estão íntegros. O desligamento no dia anterior foi normal.
Eu tenho todas as versões do Ubuntu instaladas neste computador desde 8.04. Tenho o 12.10 instalado desde outubro. Não há nada de novo neste computador, nem novos discos rígidos, nem 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 ser iniciado.
*Atualização: 27 de março *
Encontrei o problema, mas ainda não sei a causa. O problema era que /boot/grub/grub.cfg tinha 11,6 MB e tinha entradas como esta repetidas muitas vezes com pequenas variações. Grub estava engasgado com 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 em 28 de março
Uma grande parte das entradas do menu é gerada por /etc/grub.d/30_os-prober.
Line 223: ### BEGIN /etc/grub.d/30_os-prober ###
...
Line 175174: ### END /etc/grub.d/30_os-prober ###
grub.cfg possui 175191 linhas, portanto esse script representa 99% dos 11,6 MB do arquivo.
Responder1
Existe uma ferramenta interessante chamada BootChart incluída nos repositórios. Ele também possui um componente de depuração GRUB fornecido. isso permitirá que você crie um perfil de sua bota e, com sorte, descubra o que está consumindo muito tempo.
Responder2
Se você obtiver todas essas entradas, provavelmente há algo fazendo um loop no Grub. Aconteceu algo semelhante comigo quando instalei o Raring em uma partição separada (entradas criadas com escape ruim, como menuentry "Ubuntu"...
). Como você disse que não mudou nada, talvez isso tenha origem em alguma atualização do Grub?
Esse arquivo é gerado automaticamente (quando você instala um novo kernel, por exemplo) pelos scripts presentes no /etc/grub.d
. Se você examinar grub.cfg
verá que existem separadores entre as entradas, especificando qual script a 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). Ao 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 alguma coisa.