Grub

grub 在 vi rtualbox 中以訪客身份啟動時等待使用者輸入

  • November 19, 2013

我在 Mac OS X virtualbox 主機中有幾個 ubuntu 來賓。當我啟動它們時,大約有一半的時間它們正確啟動並進入登錄螢幕/啟動所有服務。另一半時間,他們坐等我選擇作業系統。當我坐在他們面前時這很好,但我希望虛擬機在機器啟動時自動啟動。

值得注意的是,如果我從來賓作業系統中重新啟動,似乎不會發生同樣的問題。

我試過的:

我試過取消註釋GRUB_HIDDEN_TIMEOUT並執行update-grub,這會使來賓作業系統更頻繁地正確啟動,但不能解決問題。無頭啟動它們也無濟於事。

他們卡住的地方:

我看到的大約一半時間

/etc/default/grub:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

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=""
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

版本:

Grub 1.99-21ubuntu3.9
Ubuntu Server LTS
Virtualbox 4.2.10

為了擴展@nick 的答案,這確實是記錄失敗功能。

但是,/etc/grub.d/00_header您可以將以下行添加到/etc/default/grub

GRUB_RECORDFAIL_TIMEOUT=2

(或者無論您希望超時多長時間)然後執行sudo update-grub

所以,事實證明這是grub 的一個記錄特性。如果您的電腦異常關閉,它不會自動啟動到作業系統。這就是為什麼當我從作業系統內重新啟動時問題從未發生過。

如何禁用

以防萬一該連結失效:

禁用 Grub2 的記錄失敗功能

對於大多數人來說,Grub 2 的這個新特性無疑是一件好事。但是對於那些受到其中一個錯誤困擾或出於其他原因想要禁用它的人:

/etc/grub.d/00_header通過打開文件

sudo nano /etc/grub.d/00_header

尋找

if [ ${recordfail} = 1 ]; then
   set timeout=-1
else
   set timeout=${GRUB_TIMEOUT}
fi

將其更改為

set timeout=5

保存文件並執行

sudo update-grub

引用自:https://unix.stackexchange.com/questions/68618