Inicializa o servidor para grub prompt após a reinicialização

4

Ubuntu Server 10.04.4 LTS
Nenhum outro sistema operacional instalado
RAID de hardware (3Ware 9650SE)
Partição única (/ dev / sda2) mais troca (/ dev / sda3)
Versão Grub: GNU GRUB 1.98-1ubuntu13

Desde a aplicação de uma atualização recente do kernel, o servidor sempre inicializa no prompt grub após a reinicialização.
Não há menu de inicialização ou mensagem de erro - apenas um prompt grub > .
Eu posso inicializar o sistema da seguinte maneira:

set root=(hd0,2)
linux /vmlinuz root=/dev/sda2 ro
initrd /initrd.img
boot

Assim que acabar, tentei fazer update-grub , mas o problema não desaparece.
Eu também tentei grub-install --recheck /dev/sda mas também não ajuda.

Por alguma razão, sempre inicializa no prompt grub.

Meu /boot/grub/grub.cfg:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
  set saved_entry=${prev_saved_entry}
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z ${boot_once} ]; then
    saved_entry=${chosen}
    save_env saved_entry
  fi
}

function recordfail {
  set recordfail=1
  if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod ext2
set root='(hd0,2)'
search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  insmod gfxterm
  insmod vbe
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm
  fi
fi
insmod ext2
set root='(hd0,2)'
search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
set locale_dir=($root)/boot/grub/locale
set lang=en
insmod gettext
if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, with Linux 2.6.32-40-server' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    linux   /boot/vmlinuz-2.6.32-40-server root=UUID=1044722d-a8c7-4983-b6a4-f9faa3d4e79f ro   quiet
    initrd  /boot/initrd.img-2.6.32-40-server
}
menuentry 'Ubuntu, with Linux 2.6.32-40-server (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    echo    'Loading Linux 2.6.32-40-server ...'
    linux   /boot/vmlinuz-2.6.32-40-server root=UUID=1044722d-a8c7-4983-b6a4-f9faa3d4e79f ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-2.6.32-40-server
}
menuentry 'Ubuntu, with Linux 2.6.32-33-server' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    linux   /boot/vmlinuz-2.6.32-33-server root=UUID=1044722d-a8c7-4983-b6a4-f9faa3d4e79f ro   quiet
    initrd  /boot/initrd.img-2.6.32-33-server
}
menuentry 'Ubuntu, with Linux 2.6.32-33-server (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    echo    'Loading Linux 2.6.32-33-server ...'
    linux   /boot/vmlinuz-2.6.32-33-server root=UUID=1044722d-a8c7-4983-b6a4-f9faa3d4e79f ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-2.6.32-33-server
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
if [ ${timeout} != -1 ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
### END /etc/grub.d/30_os-prober ###

### 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.
### END /etc/grub.d/40_custom ###

Eu não editei arquivos em /etc/grub.d ou / etc / default / grub.

Li muitos posts relacionados ao grub nos últimos dias e a maioria parece afirmar que executar update-grub corrigirá o problema, mas não funcionou para mim.

Além disso, eu gostaria que isso não acontecesse na próxima atualização do kernel, se possível.

Finalmente; o servidor mora em um data center remoto - eu tenho acesso remoto ao KVM, mas obtê-lo para inicializar um live CD será difícil, então quaisquer soluções que não envolvam isso são preferidas. : -)

    
por Darren Greaves 11.04.2012 / 15:26

3 respostas

5

Eu descobri isso agora.

A solução aqui fez isso para mim: link

Eu mudei meu /etc/grub.d/00_header e editei a seção recordfail para:

if [ ${recordfail} = 1 ]; then
  set timeout=${GRUB_TIMEOUT}
else
  set timeout=${GRUB_TIMEOUT}
fi
EOF

Ran sudo update-grub , reiniciado e iniciado diretamente no Ubuntu. Yipee!

    
por Darren Greaves 12.04.2012 / 14:40
1

De link :

Para o Ubuntu 12.04 LTS, existe uma opção específica que pode ser definida em /etc/default/grub .

Por exemplo, se você quiser um tempo limite de 2 segundos (evitando interrupções para reinicializações autônomas), basta adicionar a seguinte linha em /etc/default/grub :

GRUB_RECORDFAIL_TIMEOUT=2

Lembre-se de executar update-grub depois disso ...

    
por Alastair Irvine 08.06.2014 / 07:33
0

Acabei de atualizar um servidor do Ubuntu 10.04 para o 12.04, e a solução (assim como várias outras espalhadas pela internet) não funcionou para mim. Eu sempre retornei ao menu grub> na reinicialização.

Finalmente, no entanto, consegui fazer as coisas funcionarem. Eu tive que fazer duas coisas:

sudo apt-get install grub2 
sudo grub-install /dev/sda

Eu fiz a instalação do grub2 porque dpkg -l | grep grub não mostrou nada, mas grub2-common - estava faltando os componentes do grub2 que apt-cache search grub retornou. Isso pode ter sido opcional, mas com base em relatórios de bug e soluções alternativas que eu estava vendo, fui em frente e instalei o pacote grub2 disponível a partir dos repositórios atualizados do sistema 12.04.

Para o grub-install , escolhi o disco do qual eu estava carregando (isso pode ser encontrado com fdisk -l ou df , por exemplo). O número da partição não era necessário (por exemplo, escolhi o disco sda em vez de disco + partição sda1 ).

Eu não corri grub-update ; isso funcionou imediatamente na reinicialização.

Para executar os comandos, tive que inicializar no meu sistema, com apenas pequenas variações do exemplo do OP:

Assumindo / dev / sda1 como o alvo:

grub>
root (hd0,1)  # "1" matches the partition number
linux /vmlinuz root=/dev/sda1 ro  #again, modify for the drive/partition 
initrd /initrd.img
boot

O preenchimento automático do menu grub foi útil para essas opções. Eu não acredito que permitirá que você especifique uma partição inexistente com a diretiva root , por exemplo.

    
por belacqua 26.04.2012 / 23:10

Tags