问题描述
我在semi-embedded环境中的single-board计算机上安装了Ubuntu 10.10服务器;没有键盘或屏幕,只需SSH访问即可。
因此,当它偶尔启动并卡在GRUB菜单上,等待按键选择第一个选项时,确实令人沮丧。
如何将GRUB配置为在任何情况下均不等待按键?
更新#1:没有menu.lst,因为它是GRUB2。但是我确实有一个/etc /default /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"
GRUB_CMDLINE_LINUX=""
更新#2:我想通了。在不成功的引导之后的引导中,GRUB将禁用其自身的超时。由于显示菜单会使引导失败,因此这是不可避免的循环。通过编辑/etc/grub.d/00_header文件并更改make_timeout函数,可以禁用此行为:
make_timeout ()
{
echo "set timeout=0"
}
现在退出并使用grub配置更新程序脚本re-run:
sudo update-grub2
对我而言,这种行为将是Ubuntu Server的默认行为,Ubuntu Server是用于控制台访问的计算机的产品,这对我来说没有任何意义。
最佳回答
对于Ubuntu 12.04 LTS,可以在/etc/default/grub
中设置一个特定选项。
例如,如果您希望有2秒钟的超时(从而避免因无人值守的重启而死机),只需在/etc/default/grub
中添加以下行:
GRUB_RECORDFAIL_TIMEOUT=2
记得在那之后运行update-grub
…
次佳回答
这是Ubuntu 10.10的说明,与以前的版本略有不同。在文件/etc/grub.d/00_header中,注释掉先前启动失败的愚蠢检查:
##if [ \${recordfail} = 1 ]; then
## set timeout=-1
##else
set timeout=${2}
##fi
然后更新:
sudo update-grub
请注意,如果还有第二个装有Linux的驱动器,则grub2会找到它,并在启动时询问您要哪个驱动器。在运行”update-grub”之前,请卸下所有多余的驱动器。
另请参见https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/797544
第三种回答
我在Ubuntu Server 9.10上遇到了这种令人不快的设计监督。您的修复极大地帮助了我。我只想指出,9.10所需的修复程序有所不同,因为同一文件中没有“ make_timeout()”函数。
对于Ubuntu 9.10,转到同一文件的末尾(00_header)并更改以下内容:
if [ \${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=${GRUB_TIMEOUT}
fi
EOF
至
if [ \${recordfail} = 1 ]; then
set timeout=${GRUB_TIMEOUT}
else
set timeout=${GRUB_TIMEOUT}
fi
EOF
和以前一样,然后运行:
sudo update-grub2