Boot

無法顯示 grub2 菜單

  • September 21, 2020

我有一台筆記型電腦,我打算雙啟動。它以前引導到 Windows (7),現在在 Linux 安裝後直接引導到 Linux (openSUSE)。我已經編輯/etc/grub.d/40_custom添加了 Windows 鏈載入器條目。到現在為止還挺好。

不幸的是,我根本無法讓 GRUB2 顯示選擇菜單*,*甚至無法為 Linux 安裝選擇安全模式條目。我收到“歡迎使用 grub”消息的瞬間閃現,然後它直接啟動到預設的 Linux 條目。

我嘗試過的事情:

  • 設置GRUB_TIMEOUT為整數值GRUB_HIDDEN_TIMEOUT

    • 0
    • 空白的
    • 註釋掉
  • 設置GRUB_HIDDEN_TIMEOUT_QUIET為兩者truefalse

  • 設置GRUB_TERMINALconsole

  • 刪除quietsplash=silentGRUB_CMDLINE_LINUX_DEFAULT

我每次都在重新生成配置/usr/sbin/grub2-mkconfig

其他資訊:

  • 無論處於何種狀態,在啟動過程中按住 shift 不會調出菜單GRUB_HIDDEN_TIMEOUT
  • 我很確定這台機器沒有使用 UEFI(我沒有/sys/firmware/efi目錄)
  • 在 BIOS 中啟用傳統 USB 支持。

還有什麼我可以嘗試的嗎?這變得非常嚴重,我從來沒有遇到過 grub 遺留問題!

編輯:

grub.cfg與超時相關的部分:

if [ x${boot_once} = xtrue]; then
   set timeout=0  
elif [ x$feature_timeout_style = xy ]; then  
   set timeout_style=menu  
   set timeout=0  
# Fallback normal timeout code in case the timeout_style feature is unavailable
else  
   set timeout=0  
fi

這與 grub 更新腳本顯示的輸出不同,後者有timeout = 10! 直接編輯grub.cfg文件會按預期顯示菜單。

這條線是否存在於您的/etc/default/grub? 如果沒有,請添加它們。

GRUB_TIMEOUT=10
GRUB_TIMEOUT_STYLE=menu

之後執行update-grub以更新/boot/grub/grub.cfg

您可以通過以下方式檢查是否發生了所需的更改:

grep -i timeout /boot/grub/grub.cfg

輸出應包含以下值:

set timeout_style=menu
set timeout=10

grub 手冊

GRUB_TIMEOUT

在菜單顯示幾秒鐘後引導預設條目,除非按下某個鍵。預設值為5。設置為0以立即啟動而不顯示菜單,或設置為**-1以無限期等待。如果GRUB_TIMEOUT_STYLE設置為countdown**或 hidden,則會在顯示菜單之前計算超時。

GRUB_TIMEOUT_STYLE

如果此選項未設置或設置為menu,則 GRUB 將顯示菜單,然後等待GRUB_TIMEOUT設置的超時到期,然後再引導預設條目。按一個鍵會中斷超時。如果此選項設置為countdownhidden,則在顯示菜單之前,GRUB 將等待 GRUB_TIMEOUT設置的超時到期。如果在此期間按下ESC,它將顯示菜單並等待輸入。如果按下與菜單項關聯的熱鍵,它將立即啟動關聯的菜單項。如果超時在其中任何一個發生之前到期,它將引導預設條目。在倒計時在這種情況下,它將顯示剩餘時間的單行指示。

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