如何隐藏GRUB菜单,并在启动时让shift或esc键显示隐藏的GRUB菜单
我正在运行Ubuntu 16.10,我正试图在开机/启动时隐藏我的GRUB菜单,并希望菜单只有在我按下Shift或Esc键时才会出现。
我更改了/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中隐藏并让它在启动时识别Shift或Esc键?
好的伙计,这就是答案……在双启动配置中获取隐藏的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
-
我想你想通过
/etc/default/grub
尝试“一切”。 你读过这个链接了吗?help.ubuntu.com/community/Grub2/Setup#Configuring_GRUB_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代码有关