Ubuntu

無頭 Ubuntu 伺服器機器有時卡在 GRUB 菜單

  • September 25, 2014

我在半嵌入式環境的單板機上安裝了 Ubuntu 10.10 Server;沒有鍵盤或螢幕,只需 SSH 訪問它。

因此,當它偶爾啟動並卡在 GRUB 菜單上,等待擊鍵選擇第一個選項時,這真的很令人沮喪。

如何將 GRUB 配置為在任何情況下都不等待擊鍵?

更新 #1:沒有 menu.lst,因為這是 GRUB 2。但我確實有一個 /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 配置更新腳本:

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

引用自:https://serverfault.com/questions/243343