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

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

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

在研究这个时,我发现这个post从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=10设置为GRUB_TIMEOUT=0 。 我这样做,我仍然看到GRUB菜单。

terminal ,输入info -f grub -n 'Simple configuration'描述了各种选项,在信息的最后,它显示了一些当前命令已被折旧,并表明更新的替换更好。

有没有人知道如何让我的GRUB菜单在16.10中隐藏并让它在启动时识别ShiftEsc键?

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

编辑#1

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

 sudo editor /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

接下来,需要更新操作系统探测器以禁用快速启动function。 要执行此操作,请在您喜欢的编辑器中打开/etc/grub.d/30_os-prober ,并通过将0替换为0更改以下行(17.04中的第23行):

 quick_boot="1" 

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

 quick_boot="0" 

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

 sudo update-grub 
  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运行时你都必须这样做,但你可以为它制作一个脚本。

我相信这个问题可能是由于多个操作系统根据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中的隐藏菜单function有一个长期确认的错误。 菜单可能无法隐藏,如本页说明中所指定。 编辑30_os-prober脚本可以解决此问题,但这超出了本页的范围。

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

可能存在与该bug相关的潜在语法问题。 我不是Grub2专家,但是在我的grub文件中,每个命令行都以=“some quoted setting”结束。我记得在编码时,“引号”是传递一个字符串,其中非引号将简单的数值传递给变量。 我不是新的代码技术。 以下是我的一些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" 

我正在研究这个Grubbug :)了解更多信息以及这个Bug这两个都是Grub2相关的2yrs旧。 其中一些可能与切换到Grub2之前的MBR代码有关