我有一台笔记本电脑,我打算双启动。它之前引导至 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_QUIET
为true
和false
- 设置
GRUB_TERMINAL
为console
- 删除
quiet
和splash=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