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

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

我正在运行 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=true
GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="安静的启动"

如果我取消注释#GRUB_HIDDEN_TIMEOUT=0,则sudo update-grub系统会要求我也将其设置GRUB_TIMEOUT=10GRUB_TIMEOUT=0。我这样做了,但仍然可以看到 GRUB 菜单。

在 中terminal,输入info -f grub -n 'Simple configuration'描述了各种选项,并且在信息的最后,它显示一些当前命令已被弃用,并建议更新的替代品更好。

有人知道在 16.10 中如何隐藏 GRUB 菜单吗它在启动时能识别Shift或键入吗?Esc

答案1

好的伙计们,答案是...在双启动配置中获取隐藏的 GRUB 菜单...两处编辑...和一个sudo update-grub...

编辑#1

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

sudo -H gedit /etc/default/grub

打开文件后,替换以下几行

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

用这些:

GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT_STYLE=countdown
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=3

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

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

GRUB_DEFAULT=saved    # change an existing line to this
GRUB_SAVEDEFAULT=true # add this line

编辑#2

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

quick_boot="1"

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

quick_boot="0"

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

sudo update-grub

答案2

  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 ###
    

    update-grub是的,我知道,每次运行时您都必须这样做,但您可以为其编写一个脚本。

答案3

根据以下摘录,我相信这个问题可能是由于多个操作系统造成的 Grub2 维基

如果未检测到其他操作系统,GRUB 2 将直接启动到默认操作系统,并且不会显示任何菜单。如果检测到其他操作系统,GRUB 2 菜单将要展示。

如果在 /etc/default/grub 中设置了 GRUB_DEFAULT=saved,则可以通过运行 sudo grub-set-default 来保存操作系统。如果在 /etc/default/grub 中也设置了 GRUB_SAVEDEFAULT=true,也可以保存操作系统。在这种情况下,默认操作系统将保留,直到从 GRUB 2 菜单中手动选择新操作系统或执行 grub-set-default 命令。

Grub2 Wiki 还指出: 注意:GRUB 1.97 至 GRUB 1.99 中的隐藏菜单功能存在一个长期确认的错误。菜单可能无法按照本页描述中所述隐藏。虽然编辑 30_os-prober 脚本可以修复此问题,但这超出了本页的讨论范围。

解决方法是,您可以设置GRUB_TIMEOUT="1",这样您只能看到菜单 1 秒钟。如果我需要切换到另一个操作系统,我只需在那一秒钟内按下向下箭头键,菜单就会出现,直到我做出选择。

该错误可能与语法问题有关。我不是 Grub2 专家,但在我的 grub 文件中,每个命令行都以="一些引用的设置"我记得在我编程的日子里,“引号”用来传递字符串,而非引号则向变量传递简单的数值。我不记得向上采用新的代码技术。例如这是我的一些 grub 输出:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT="Ubuntu"
#GRUB_HIDDEN_TIMEOUT="0"
GRUB_HIDDEN_TIMEOUT_QUIET="true"
GRUB_TIMEOUT="1"
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

我正在调查此事格鲁布格 :) 了解更多信息以及这个错误这两个都与 Grub2 有关2岁。其中一些可能与移交给 Grub2 之前的 MBR 代码有关

相关内容