启动时直接进入 grub 提示符

启动时直接进入 grub 提示符

我很迷茫。我在笔记本电脑上全新安装了 Ubuntu 10.04。第一次重启没问题。我运行了所有推荐的升级,现在每次启动时都只出现

grub>_

提示。没有错误消息,只有提示,顶部有一个小横幅,上面写着 grub 的版本,并告诉我我进行了最少的 bash 样式编辑。我试过:

1)通过以下方式重新安装 grub

sudo grub-install sda

(只有一个磁盘,只有两个分区,一个主分区,一个用于交换)

2)改变

GRUB_HIDDEN_TIMEOUT=10
GRUB_TIMEOUT=30
GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=90"
GRUB_CMDLINE_LINUX="rootdelay=90"

在 /etc/default/grub 中。没有运气。我使用以下命令启动:

grub> set root=(hd0,1)
grub> probe (hd0,1) -u
c00fadde-f7e8-45e7-a4da-0235605f756
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

然后一切似乎都很好。如果我尝试从 grub 提示符

configfile /boot/grub/grub.cfg 

屏幕清除并且我得到另一个 grub> 提示符。

那么,认真想想,问题可能出在哪里呢?

编辑:

/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,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
  fi
fi
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
else
  set timeout=30
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-21-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    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 {
    recordfail
    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
  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 ###

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
done

/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 System.map-2.6.32-21-generic
-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

答案1

所以我有 Ubuntu 9.04,也许它会足够接近以便进行比较。

中的行/boot/grub/menu.lst

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

此文件中是否有指向图像的行?它们指向正确的图像吗?

答案2

根据初始数据,最合理的答案是:

您的/boot/grub/grub.cfg已损坏。它是由 命令生成的update-grub,因此请先尝试运行此命令。请注意,update-grub每次修改 时都必须重新运行/etc/default/grub,如文件顶部的注释所示。update-grub每次安装、升级或删除内核时也必须重新运行,但 Ubuntu 软件包会为您处理这个问题。

如果运行update-grub不能解决问题,请编辑您的问题以添加:的内容;终端上/boot/grub/grub.cfg的完整输出;的输出。update-grubls -l /boot

编辑:我尝试了类似配置的帖子grub.cfg,并且成功了。所以这不是问题。


非常疯狂的镜头:脚本中可能存在不可打印的字符grub.cfg(从/etc/default/grub脚本复制而来)?以下命令应该不会输出任何内容:

<cheshirekow.grub.cfg tr '\t' ' ' | LC_ALL=C grep '[^ -~]' | cat -A

相关内容