如何隐藏我的 GRUB 菜单,并让 shift 或 esc 键在启动时显示隐藏的 GRUB 菜单

hey*_*ema 12 grub2 menu

我正在运行 Ubuntu 16.10,我试图在开机/启动时隐藏我的 GRUB 菜单,并希望菜单仅在我按下ShiftEsc键时出现。

我更改了适当的选项/etc/default/grub,它仍然不会隐藏菜单。

在研究这一点时,我发现 2013 年GRUB 隐藏菜单中的这篇文章不起作用,这表明问题已经存在了一段时间,并提出了/etc/grub.d/30_os-prober我不想做的更改。该代码表明,由于它找到了多个操作系统,因此GRUB_TIMEOUT=10无论如何都会设置。

这是我现在拥有的片段/etc/default/grub......一个带有 10 秒倒计时的菜单......

GRUB_DEFAULT=已保存
GRUB_SAVEDEFAULT=真
GRUB_HIDDEN_TIMEOUT_QUIET=真
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || 回声Debian`
GRUB_CMDLINE_LINUX_DEFAULT="安静的飞溅"

如果我取消注释#GRUB_HIDDEN_TIMEOUT=0,则sudo update-grub坚持我也设置GRUB_TIMEOUT=10GRUB_TIMEOUT=0. 我这样做了,我仍然看到 GRUB 菜单。

在 中terminal,typinginfo -f grub -n 'Simple configuration'描述了各种选项,在信息的最后,它表明某些当前命令已被贬值,并表明更新的替代品更好。

没有任何人知道我怎样才能让我的GRUB菜单隐藏在16.10有它承认ShiftEsc键在开机的时候?

hey*_*ema 8

好的伙计们,这就是答案……在双引导配置中获得隐藏的 GRUB 菜单……两个编辑……一个sudo update-grub……

编辑 #1

要在多引导配置中获得隐藏的 GRUB 菜单,我们首先需要编辑/etc/default/grub. 使用以下命令打开此文件:

sudo editor /etc/default/grub
Run Code Online (Sandbox Code Playgroud)

打开文件后,替换这些行

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10
Run Code Online (Sandbox Code Playgroud)

用这些:

GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT_STYLE=countdown
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=3
Run Code Online (Sandbox Code Playgroud)

这将导致 GRUB 在屏幕上显示 3 秒倒数计时器。通过这样做,用户可以点击Esc键来调出默认菜单。否则,默认操作系统将启动。

如果您希望将默认操作系统设置为上次启动的操作系统,请在上面显示的“GRUB_TIMEOUT=3”下添加以下两行:

GRUB_DEFAULT=saved    # change an existing line to this
GRUB_SAVEDEFAULT=true # add this line
Run Code Online (Sandbox Code Playgroud)

编辑 #2

接下来,需要更新操作系统探测器以禁用 quick_boot 功能。为此,请/etc/grub.d/30_os-prober在您最喜欢的编辑器中打开并更改以下行(17.04 中的第 23 行),将 替换10

quick_boot="1"
Run Code Online (Sandbox Code Playgroud)

完成后,该行应如下所示:

quick_boot="0"
Run Code Online (Sandbox Code Playgroud)

保存文件,然后运行以下命令以重新配置引导加载程序并应用您的更改:

sudo update-grub
Run Code Online (Sandbox Code Playgroud)


sud*_*dus 5

  1. 我想您想尝试通过 提供的“一切” /etc/default/grub。你读过这个链接吗?

    help.ubuntu.com/community/Grub2/Setup#Configuring_GRUB_2

  2. 我建议您尝试从 中删除以下行/boot/grub/grub.cfg

    ...
    set timeout_style=menu
    if [ "${timeout}" = 0 ]; then
      set timeout=10
    fi
    ### END /etc/grub.d/30_os-prober ###
    
    Run Code Online (Sandbox Code Playgroud)

    update-grub是的,我知道,您每次运行时都必须执行此操作,但您可以为其制作一个脚本。