当前位置: 首页>>技术教程>>正文


无头的Ubuntu服务器计算机有时卡在GRUB菜单中

, , , ,

问题描述

我在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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9556.html,未经允许,请勿转载。