Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am very lost. I did a fresh install of Ubuntu 10.04 on a laptop. First reboot was fine. I ran all the recommended upgrades, and now every time I start I get just a


prompt. No error message, just the prompt, and a little banner at the top saying grub's version and telling me that I have minimal bash style editing. I've tried:

1) Re-installing grub via

sudo grub-install sda

(There is only one disk with only two partitions, one primary, and one for swap)

2) Changed


in /etc/default/grub. No luck. I can boot with the following:

grub> set root=(hd0,1)
grub> probe (hd0,1) -u
grub> linux /boot/vmlinuz-2.6.32-21-generic root=UUID=c00fadde-f7e8-45e7-a4da-0235605f756 rootdelay=90
grub> initrd /boot/initrd.img-2.6.32-21-generic
grub> boot

And then everything seems to be fine from there. From the grub prompt if I try

configfile /boot/grub/grub.cfg 

The screen clears and I get another grub> prompt.

So, seriously, what could the problem be?


Full text of /boot/grub/grub.cfg

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

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

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,1)'
search --no-floppy --fs-uuid --set c00fadde-f7e8-45e7-a4da-0235c605f756
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
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set c00fadde-f7e8-45e7-a4da-0235c605f756
set locale_dir=($root)/boot/grub/locale
set lang=en
insmod gettext
if [ ${recordfail} = 1 ]; then
  set timeout=-1
  set timeout=30
### 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-21-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    insmod ext2
    set root='(hd0,1)'
    search --no-floppy --fs-uuid --set c00fadde-f7e8-45e7-a4da-0235c605f756
    linux   /boot/vmlinuz-2.6.32-21-generic root=UUID=c00fadde-f7e8-45e7-a4da-0235c605f756 ro rootdelay=90  rootdelay=90
    initrd  /boot/initrd.img-2.6.32-21-generic
menuentry 'Ubuntu, with Linux 2.6.32-21-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    insmod ext2
    set root='(hd0,1)'
    search --no-floppy --fs-uuid --set c00fadde-f7e8-45e7-a4da-0235c605f756
    echo    'Loading Linux 2.6.32-21-generic ...'
    linux   /boot/vmlinuz-2.6.32-21-generic root=UUID=c00fadde-f7e8-45e7-a4da-0235c605f756 ro single rootdelay=90
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-2.6.32-21-generic
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
    insmod ext2
    set root='(hd0,1)'
    search --no-floppy --fs-uuid --set c00fadde-f7e8-45e7-a4da-0235c605f756
    linux16 /boot/memtest86+.bin
menuentry "Memory test (memtest86+, serial console 115200)" {
    insmod ext2
    set root='(hd0,1)'
    search --no-floppy --fs-uuid --set c00fadde-f7e8-45e7-a4da-0235c605f756
    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 sleep --verbose --interruptible 10 ; then
    set timeout=0
### 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 ###

output of update-grub

Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-21-generic
Found initrd image: /boot/initrd.img-2.6.32-21-generic
Found memtest86+ image: /boot/memtest86+.bin

contents of /boot

total 14280
-rw-r--r-- 1 root root  640617 2010-04-16 09:01 abi-2.6.32-21-generic
-rw-r--r-- 1 root root  115847 2010-04-16 09:01 config-2.6.32-21-generic
drwxr-xr-x 3 root root    4096 2010-09-08 02:42 grub
-rw-r--r-- 1 root root 7968754 2010-09-02 01:49 initrd.img-2.6.32-21-generic
-rw-r--r-- 1 root root  160280 2010-03-23 05:37 memtest86+.bin
-rw-r--r-- 1 root root 1687378 2010-04-16 09:01
-rw-r--r-- 1 root root    1196 2010-04-16 09:03 vmcoreinfo-2.6.32-21-generic
-rw-r--r-- 1 root root 4029792 2010-04-16 09:01 vmlinuz-2.6.32-21-generic
share|improve this question

closed as too localized by Sathya Nov 24 '11 at 12:09

This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

Related?… – Johan Sep 7 '10 at 5:24
I've tested your grub.cfg in a virtual machine that's a lot like your setup (single drive with only Ubuntu 10.04 i386, default partitioning). I only replaced the root filesystem UUID and the kernel version. It worked. So that's not the problem. – Gilles Sep 8 '10 at 18:05
Well, I think I fixed it. I upped the GRUB_TIMEOUT even more so that it's not 90. I've rebooted twice and it booted as expected... so I guess that's all it was. – cheshirekow Sep 10 '10 at 3:09

So I have Ubuntu 9.04, perhaps that will be close enough to compare.

The lines in /boot/grub/menu.lst are

title           Ubuntu 9.04, kernel 2.6.28-16-server

uuid            a0ebaed5-072b-4591-9967-bcf4b5f9a507

kernel          /boot/vmlinuz-2.6.28-16-server root=UUID=a0ebaed5-072b-4591-9967-bcf4b5f9a507 ro quiet splash

initrd          /boot/initrd.img-2.6.28-16-server

Do you have lines in this file to point to the image? Do they point to the correct image?

share|improve this answer
That answer is about Grub1, but cheshirekow is trying to configure Grub2. – Gilles Sep 7 '10 at 6:39
Yes, I do. The lines seem fine. I even tried manually editing /boot/grub/grub.cfg to get rid of all the scripty stuff and manually enter the stuff I know is correct, but that did not work either. I could have messed up the format though so maybe that's not the best information. Note I have since run update-grub so my changes were over written. – cheshirekow Sep 8 '10 at 6:44
@Gilles, also yes... you're right, the commands are different in grub2 – cheshirekow Sep 8 '10 at 6:45

Most plausible answer considering the initial data:

Your /boot/grub/grub.cfg is damaged. It is generated by the update-grub command, so first try running this command. Note that you must rerun update-grub every time you modify /etc/default/grub, as indicated by a comment at the top of the file. You must rerun update-grub every time you install, upgrade or remove a kernel as well, but the Ubuntu packages will take care of that for you.

If running update-grub doesn't solve the problem, edit your question to add: the contents of /boot/grub/grub.cfg; the full output of update-grub on the terminal; the output of ls -l /boot.

EDIT: I tried the posted grub.cfg on a similar configuration, and it worked. So that's not the problem.

Very wild shot: could there be a nonprintable character in grub.cfg (copied from /etc/default/grub by the scripts)? The following command should output nothing:

<cheshirekow.grub.cfg tr '\t' ' ' | LC_ALL=C grep '[^ -~]' | cat -A
share|improve this answer
I tried that, several times. I will update my question – cheshirekow Sep 8 '10 at 6:32
Well, thanks for trying the config. I guess it's good to know that's not the problem. I tried running that command, though I don't know exactly what it's doing (I know... dangerous) but in any case cheshirekow.grub.cfg was not found (obviously) I'm guessing that's what you used for your test so I tried /boot/grub/grub.cfg and it printed out the whole thing. Maybe it's a weird line ending thing then or something? The tr command replaces tabs with spaces right? And then we're grepping weird characters? what's the LC_ALL thing? – cheshirekow Sep 10 '10 at 2:53
@cheshirekow: grep is told to look for a line containing a non-printable character. I goofed with LC_ALL=C: I meant to apply it to grep (because the character range ` -~` doesn't work in all locales). The extra tr call indeed translates tabs to spaces, I included it because specifying a tab on the grep command line is hard to do in a copy-pastable way. If the command did in fact print out every line, it could be a consequence of your locale. If the command with the LC_ALL=C applied to grep prints out every line, the problem is indeed non-grub-supported line endings in grub.cfg. – Gilles Sep 10 '10 at 7:37

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