4

Ubuntu Server 10.04.4 LTS
No other operating systems installed
Hardware RAID (3Ware 9650SE)
Single partition (/dev/sda2) plus swap (/dev/sda3)
Grub version: GNU GRUB 1.98-1ubuntu13

Since applying a recent kernel update the server always boots to the grub prompt after a reboot.
There's no boot menu or error message - just a grub > prompt.
I can boot the system as follows:

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

Once it's up, I've tried doing update-grub but the problem doesn't go away.
I've also tried grub-install --recheck /dev/sda but it also doesn't help.

For some reason it always boots to the grub prompt.

My /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 ###

I've not knowingly edited files in /etc/grub.d or /etc/default/grub.

I've read lots of grub related posts these last few days and most seem to claim running update-grub will fix the problem but it hasn't worked for me.

Also, I'd like this not to happen next kernel update if possible.

Finally; the server lives in a remote data centre - I have remote KVM access but getting it to boot off a live CD will be difficult so any solutions that don't involve that are preferred. :-)

3 Answers 3

5

I've figured this one out now.

The solution here did it for me: https://serverfault.com/questions/243343/headless-ubuntu-server-machine-sometimes-stuck-at-grub-menu

I changed my /etc/grub.d/00_header and edited the recordfail section to:

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

Ran sudo update-grub, rebooted and it booted straight into Ubuntu. Yipee!

1

From https://serverfault.com/a/482020/158759:

For Ubuntu 12.04 LTS there is a specific option that can be set in /etc/default/grub.

For example, if you want to have a 2 seconds timeout (thus avoiding hangs for unattended reboots) just add the following line in /etc/default/grub:

GRUB_RECORDFAIL_TIMEOUT=2

Remember to run update-grub after that...

0

I just upgraded a server from Ubuntu 10.04 to 12.04, and the solution (as well as several others sprinkled around the internets) didn't work for me at all. I was always returned to the grub> menu on reboot.

Finally, however, I've gotten things working. I had to do two things:

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

I did the install of grub2 because dpkg -l | grep grub did not show anything but grub2-common -- it was missing the grub2 components that apt-cache search grub returned. This might have been optional, but based on bug reports and workarounds I was seeing, I went ahead an installed the grub2 package available from the updated 12.04 system repositories.

For the grub-install, I chose the disk I was loading from (this can be found with fdisk -l or df, for example). The partition number was not needed (i.e., I chose the disk sda instead of disk+partition sda1).

I didn't run grub-update ; this worked immediately on reboot.

In order to run the commands, I did have to boot into my system, with only slight variations from the OP's example:

Assuming /dev/sda1 as the target:

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

The grub menu autocomplete was helpful for these options. I don't believe it will let you specify a non-existent partition with the root directive, for example.

4
  • This could be useful - any other issues with upgrading to 12.04? Apr 27, 2012 at 8:56
  • @DarrenGreaves No other issues. After getting grub set, everything else -- my custom LDAP, PAM, etc. -- works without modifications.
    – belacqua
    Apr 27, 2012 at 22:25
  • Shouldn't it be set root=(hd0,1) in grub2?
    – T. Verron
    May 23, 2012 at 7:00
  • @T.Verron Based on other docs, I understand why you ask, but it worked as printed in my example (12.04/grub2).
    – belacqua
    May 23, 2012 at 14:54

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .