无法显示 grub2 菜单

无法显示 grub2 菜单

我有一台笔记本电脑,我打算双启动。它之前引导至 Windows (7),现在安装 Linux 后直接引导至 Linux (openSUSE)。我已编辑/etc/grub.d/40_custom添加 Windows chainloader 条目。到目前为止,一切都很好。

不幸的是我无法让 GRUB2 显示选择菜单根本不,甚至可以选择 Linux 安装的安全模式条目。我瞬间看到“欢迎使用 grub”消息,然后它直接启动到默认的 Linux 条目。

我尝试过的事情:

  • 设置GRUB_TIMEOUT为整数值GRUB_HIDDEN_TIMEOUT
    • 0
    • 空白的
    • 注释掉了
  • 设置GRUB_HIDDEN_TIMEOUT_QUIETtruefalse
  • 设置GRUB_TERMINALconsole
  • 删除quietsplash=silent来自GRUB_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文件直接按预期显示菜单。

答案1

您的中是否存在此行/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被设定为倒数或者 ,超时是在菜单显示之前计算的。

GRUB_TIMEOUT_STYLE

如果此选项未设置或设置为菜单,然后 GRUB 将显示菜单,然后等待由GRUB_TIMEOUT在启动默认条目之前过期。按某个键会中断超时。如果该选项设置为倒数或者,然后,在显示菜单之前,GRUB 将等待由 GRUB_TIMEOUT直到到期为止。如果ESC键此时按下 键,将显示菜单并等待输入。如果按下与菜单项关联的热键,它将立即启动关联的菜单项。如果在这两种情况发生之前超时到期,它将启动默认条目。在里面倒数在这种情况下,它将显示一行剩余时间指示。

答案2

正如您所描述的,您对配置源的更改grub似乎没有效果。您声明grub2-mkconfig每次编辑后都运行。但是,如果您查看手册页,您会注意到

-o, --output=FILE

将生成的配置输出到 FILE [default= stdout]

正如您所看到的,grub2-mkconfig(最近简单地grub-mkconfig)不写入实际的配置文件,它只将内容打印到控制台。要使更改生效,请使用

grub-mkconfig -o /boot/grub2/grub.cfg

或者

grub-mkonfig > /boot/grub2/grub.cfg

相关内容