启动时随机显示 GRUB

启动时随机显示 GRUB

我已将 GRUB 设置为完全隐藏。但是,它有时会在启动时随机显示。这可能是什么原因造成的?

etc/default/grub 的内容

GRUB_DEFAULT="0"
GRUB_TIMEOUT_STYLE="hidden"
GRUB_TIMEOUT="0"
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0"
GRUB_CMDLINE_LINUX=""
GRUB_HIDDEN_TIMEOUT="0"
GRUB_DISABLE_OS_PROBER="true"

Ubuntu 18.04 是唯一安装的操作系统。我正在使用 UEFI 启动,并禁用安全启动。

答案1

你有

GRUB_TIMEOUT_STYLE="hidden"

/etc/default/grub你也有线

GRUB_HIDDEN_TIMEOUT="0"

/etc/default/grub

使用第一个命令您告诉 Grub 隐藏菜单,使用第二个命令您告诉 Grub 在 0 秒后显示菜单。

你应该删除该行

 GRUB_HIDDEN_TIMEOUT="0"

然后/etc/default/grub运行sudo update-grub

这是GRUB 手册

‘GRUB_HIDDEN_TIMEOUT’

等待这么多秒后再显示菜单。如果在此期间按下 ESC,则显示菜单并根据“GRUB_TIMEOUT”等待输入。如果按下与菜单项关联的热键,则立即启动关联的菜单项。如果在上述任一情况发生之前超时到期,则在启动默认项之前显示菜单,时间为“GRUB_TIMEOUT”中指定的秒数。

如果您设置了“GRUB_HIDDEN_TIMEOUT”,您还应该设置“GRUB_TIMEOUT=0”,这样除非按下 ESC,否则根本不会显示菜单。

默认情况下未设置此选项,并且不推荐使用,而建议使用不太容易混淆的“GRUB_TIMEOUT_STYLE=countdown”或“GRUB_TIMEOUT_STYLE=hidden”。


另一种可能性是 Grub 的内置recordfail函数。每当选择菜单项(手动或自动)时,Grub 都会设置变量recordfail=1并将其保存在 中/boot/grub/grubenv

在启动过程中,如果启动成功,systemd 将取消设置该变量;如果启动失败,该变量将保持不变/boot/grub/grubenv

每次 Grub 启动时,Grub 都会读取/boot/grub/grubenv并检查是否recordfail设置为1。这样 Grub 就会知道上次启动是否成功。如果上次启动不成功,Grub 会覆盖您的设置,/etc/default/grub显示启动菜单 30 秒。

/boot/grub/grubenv您可以使用检查内容

cat /boot/grub/grubenv

答案2

当系统或程序未正常关闭后 Grub 进入恢复模式时,似乎会出现问题。

为了防止 Grub 在这些情况下显示,请将这一行添加到 /etc/default/grub 中

GRUB_RECORDFAIL_TIMEOUT="3"

将超时值设置为任意值。我将其设置为 3,以便在系统发生故障时仍可以选择访问组。将值设置为 0 将完全阻止 Grub 显示。

完成更改后,运行此命令以应用它们:sudo update-grub

相关内容