我怎样才能强制 Ubuntu 在卡住的启动菜单上启动?

我怎样才能强制 Ubuntu 在卡住的启动菜单上启动?

我有 Ubuntu Server 11.04,但它是无头的(没有显示器)。我希望能够访问它的唯一方法是通过 SSH 远程访问。但是,有时,比如在断电后,当服务器重新启动时,它会卡在 Grub 启动菜单上,并且不会倒计时。它会挂在那里等我选择第一个启动项。这意味着我必须去那里插入显示器和键盘。

但我无法远程执行此操作。如何强制它继续启动到启动项 1(默认),无论断电还是其他情况?

答案1

从 Ubuntu 12.04 开始,一个更直接但尚未记录的解决方案是使用/etc/default/grub覆盖記錄失敗暂停:

GRUB_TIMEOUT=10
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT

然后运行sudo update-grub以应用更改。


事实上,这种选择完全没有记录,这太糟糕了。

实际上,对的支持GRUB_RECORDFAIL_TIMEOUT是在 12.04 周期中期添加的,从版本开始1.99-21ubuntu3.3

  grub2 (1.99-21ubuntu3.3) precise-proposed; urgency=low

[ Ben Howard ]
* Parameterization of recordfail setting. This allows users to define the
  default time out of GRUB when recordfail has been set. The curren
  setting causes hangs on headless and appliances where access to the
  console is limited or prohibited.  (LP: #669481)  [1]

-- Louis Bouchard <[email protected]>  Tue, 21 Aug 2012 10:51:58 +0200

更多详细信息来自 LaunchPad

答案2

这个问题的答案可以在 grub 文件中找到 /etc/grub.d/00_header

make_timeout ()
{
    cat << EOF
if [ "\${recordfail}" = 1 ]; then
  set timeout=-1
else
  set timeout=${2}
fi
EOF
}

将超时值设置为 -1 将停止倒计时。将该值更改为大于 0 的值,即set timeout=10

该文件的这一部分看起来如下

make_timeout ()
{
    cat << EOF
if [ "\${recordfail}" = 1 ]; then
  set timeout=10
else
  set timeout=${2}
fi
EOF
}

然后运行

sudo update-grub2

相关内容