我无法在启动过程中显示grub菜单。

在尝试(并失败)在11.10中安装更好的ATI驱动程序后,我不知何故在启动时丢失了我的grub菜单。屏幕确实变成了熟悉的紫色,但是没有引导选项列表,只是一个空白的纯色屏幕,然后很快消失并正常启动默认条目。
如何恢复引导加载程序?我尝试过使用sudo update-grub命令以及在startupmanager应用程序中尝试了各种不同的分辨率和颜色深度,但都没有成功(640x480、1024x768、1600x1200、16位、8位、10秒延迟、7秒延迟、2秒延迟...)
编辑:我已经尝试按住Shift键启动,但似乎没有改变行为。我在终端中收到“GRUB Loading”消息,但是通常出现grub菜单的地方,我得到了一个纯色的空白洋红屏幕一段时间。
以下是/etc/default/grub文件的内容。
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=" vga=798 splash"

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

你是指它启动到lightdm还是启动到桌面,还是说你无法启动到lightdm?你能否发布一下文件/etc/default/grub的内容? - fossfreedom
你试过在Ubuntu加载前按住Shift键吗? - Bruno Pereira
它启动到lightdm。 - wim
如果您将GRUB_CMDLINE_LINUX更改为""并运行update-grub,会发生什么? - fossfreedom
@fossfreedom刚刚尝试了一下,似乎根本没有改变行为。 - wim
更改/etc/default/grub文件后,您需要重新启动并按住Shift键,直到grub菜单出现。 - user261615
可能是重复的问题:如何在启动时进入GRUB菜单? - bain
@bain 我认为另一个问题应该被标记为这个问题的重复。这个问题有更好的答案。 - Alaa Ali
8个回答

我在我的笔记本电脑上遇到了同样的问题,出现了洋红色的空白屏幕。以下是对我有效的解决方法。我进行了以下更改:

GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true

给:
GRUB_HIDDEN_TIMEOUT=10
GRUB_HIDDEN_TIMEOUT_QUIET=false

而且由于我没有CRT,所以我做了改变:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

给:
GRUB_CMDLINE_LINUX_DEFAULT=""

然后运行update-grub。重新启动后,我可以通过按住Shift键来打开菜单。

+1但我使用的是12.04版本,并不需要修改GRUB_CMDLINE_LINUX_DEFAULT就能正常运行。我猜这只与显卡驱动问题有关,而不需要显示grub菜单。 - laurent

只在需要时显示菜单

从看到BIOS加载屏幕开始按住SHIFT键。GRUB菜单应该会出现。

始终显示菜单

以root身份运行Gedit(gksu gedit),并打开文件/etc/default/grub。里面应该有类似这样的内容:

GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true

改成这样:
GRUB_HIDDEN_TIMEOUT=10
GRUB_HIDDEN_TIMEOUT_QUIET=false

保存它,从终端运行sudo update-grub,然后重新启动。GRUB菜单应该会显示出来。

3我尝试了你的建议,但问题没有改变 - 我仍然得到一个纯粹的洋红色屏幕,没有文字。 - wim
1+1 - 但在我的12.04上,我需要修改grub(永久解决方案),而且只有在按住Shift键时,grub菜单才会出现。仅仅按下Shift键并不能显示grub菜单。 - laurent

以上的建议都对我没用。所以我尝试了“注释掉”这两个条目。也就是说,我把它们改成了
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true

给:
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true

我现在在启动时会看到10秒钟的GRUB菜单界面。
GRUB_HIDDEN_TIMEOUT控制是否显示菜单。默认行为是,如果只有一个操作系统存在,则隐藏菜单。如果只有Ubuntu用户希望显示菜单,请在此行开头加上#符号以禁用隐藏菜单功能。更多信息,请参阅Grub 2 Ubuntu帮助页面

2谢谢,那是真正的答案:请注释掉隐藏的代码行,否则它将无法按预期工作:强制菜单显示。 - sorin
1那甚至对我也没用:( 现在我只是讨厌Grub。 - yPhil

我在Ubuntu 11.10中遇到了类似的问题。对我来说,只是一个显示“grub loading”的黑屏。
但是我找到了一个解决方法。我可以通过取消注释/etc/default/grub中的这一行来激活控制台模式,从而显示菜单:
GRUB_TERMINAL=console

祝你好运!

改变之后
GRUB_HIDDEN_TIMEOUT=10
GRUB_HIDDEN_TIMEOUT_QUIET=false

取消注释该行
#GRUB_GFXMODE=640x480

一旦完成,运行sudo update-grub并更新Grub。然后重新启动计算机,问题将会解决。我已经修复了它。我在使用CRT显示器时遇到了这个问题。尝试一下吧,祝你好运。

所有的问题都一样。 即使在注释掉隐藏行并取消注释GRUB_TERMINAL=console之后。
我还添加了GRUB_TIMEOUT_STYLE=menu,但没有效果。
但是在阅读这里的RTFM之后: https://help.ubuntu.com/community/Grub2#Boot_Display_Behavior (滚动到-->"GRUB vs GRUB2")
它说:
2. 在启动过程中按住(右)SHIFT键以显示菜单。在某些情况下,按ESC键也可以显示菜单。
在BIOS提示(我的情况下是F2)之后,按一次ESC键对我起了作用!

以上都对我没用。在与显示GRUB的机器上比较了一下/etc/default/grub后,我取消了以下注释:
GRUB_TERMINAL=serial    
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --stop=1"

然后运行sudo update-grubreboot,GRUB菜单将显示。
其他行是:
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

希望这对你有所帮助。

检查一下BIOS中是否取消了“遗留USB”选项。我之前取消了它来测试USB的IRQ,然后忘记了。结果导致我无法访问grub菜单(尽管F2仍然可以用来访问BIOS)。