我正在运行 Ubuntu 12.04。
我无论如何也无法让 grub 菜单(带有选项)消失。
我希望它自动启动到第一个选项。我编辑了/etc/默认/grub使其看起来如下所示:
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=""
之后,我跑了sudo 更新 grub然后我意识到我有 grub 2,所以我运行sudo 更新-grub2(两者都让它看起来像是他们创造了grub配置文件文件成功。
我重启电脑,然后它又回到 grub 菜单,然后就一直停留在那里,直到我做出选择。如果断电,这种情况就不理想了…… :-)
我也尝试使用重新安装 grubsudo grub-install /dev/sda- 也没有成功
答案1
正如其他答案指出的那样,你可能是一个受害者記錄失敗情况。/boot/grub/grub.cfg
手动编辑应该是不可能的,因为它是自动生成的。另一个建议是编辑,/etc/grub.d/00_header
但它可能会提示用户干预更新。
最简单的解决方案是定义未记录的 GRUB_RECORDFAIL_TIMEOUT
中的变量/etc/default/grub
。例如:
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT
编辑
看这个答案更多细节。
答案2
使用:
grub-editenv create
这将清除 grub 环境文件,下次启动时就可以正常启动了。
答案3
更改GRUB_TIMEOUT=10
为零
这是我的配置文件:
GRUB_DEFAULT="Ubuntu, with Linux 3.2.0-30-generic-pae"
#GRUB_HIDDEN_TIMEOUT=10
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""
首先,输入要直接启动的操作系统的名称。我的是 Ubuntu。因此,您可以像在GRUB_DEFAULT="Ubuntu, with Linux x.x.x-xx-generic-pae"
然后我用了 1 秒钟来GRUB_TIMEOUT=
给我 1 秒钟的时间,然后再选择默认操作系统(如果我需要启动到另一个操作系统,例如 Xubuntu)
如果GRUB_CMDLINE_LINUX_DEFAULT=""
你删除quite splash
它,它将在启动过程中显示文本而不是 Ubuntu 徽标(我喜欢这样 :P )
还有另一种解决方案:
有一个程序叫启动修复这有助于使用 GUI 进行配置。
从图片中可以看到,有一个名为的框Unhide boot menu
。只需取消选中该框并按 appy。您可以通过单击高级选项箭头来访问它。
安装启动修复
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
然后boot-reapir
从终端或破折号运行。
第三种解决方案:
您可以使用一款名为 grub-customizer 的易用 GUI 应用程序来让您的工作更轻松。顾名思义,您可以用它做很多事情,而不仅仅是重新排序 Grub 菜单条目。
您可以通过以下方式安装:
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer
从菜单中可以看到有show menu
选项。取消选中并查看它是否有效
答案4
我的 Ubuntu 总是有 30 秒的超时时间,无论我是否设置该值。以下是我发现recordfail 是缺失值。
1.验证实际的 grub 脚本/boot/grub/grub.cfg
在我看来,验证 Grub 功能的最佳方式是打开。它是使用 中的模板和 中的设置/boot/grub/grub.cfg
自动生成的脚本。grub-mkconfig
/etc/grub.d
/etc/default/grub
在第 109 行左右,你会看到类似这样的内容:
108 if [ "${recordfail}" = 1 ] ; then
109 set timeout=30 # Note here this value
110 else
111 if [ x$feature_timeout_style = xy ] ; then
112 set timeout_style=hidden
113 set timeout=3
114 # Fallback hidden-timeout code in case the timeout_style feature is
115 # unavailable.
116 elif sleep --interruptible 3 ; then
117 set timeout=0
118 fi
119 fi
就我而言,借助生成的脚本,我发现该recordfail
变量未设置。
2. 如果recordfail
变量未设置,则设置它
在您最喜欢的文本编辑器(例如 vim)中打开/etc/default/grub
,然后将变量设置GRUB_RECORDFAIL_TIMEOUT
为给定值,例如 5 秒。
你的配置文件看起来应该像这样:
GRUB_DEFAULT=0
GRUB_TIMEOUT=3
GRUB_TIMEOUT_STYLE=hidden
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_RECORDFAIL_TIMEOUT=5
3.更新运行配置update-grub
最后一步,更新配置以使用 运行update-grub
。现在,GRUB2 将使用设置的超时。此命令将重新生成文件/boot/grub.cfg
。
4.验证生成的脚本结果
再次打开/boot/grub.cfg
并检查第 109 行附近的结果:
108 if [ "${recordfail}" = 1 ] ; then
109 set timeout=5 # Note here this value
110 else
111 if [ x$feature_timeout_style = xy ] ; then
112 set timeout_style=hidden
113 set timeout=3
114 # Fallback hidden-timeout code in case the timeout_style feature is
115 # unavailable.
116 elif sleep --interruptible 3 ; then
117 set timeout=0
118 fi
119 fi
请注意,第 109 行的值现在是 5,而不是之前的 30。