我正在运行 Ubuntu 16.10,并且试图在开机/启动时隐藏我的 GRUB 菜单,并希望只有当我按下Shift或Esc键时才会出现菜单。
我更改了适当的选项/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=10
为GRUB_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 行),方法是将 替换1
为0
:
quick_boot="1"
完成后,该行应如下所示:
quick_boot="0"
保存文件,然后运行以下命令重新配置引导加载程序并应用您的更改:
sudo update-grub
答案2
我猜你想尝试通过 提供的“一切”
/etc/default/grub
。你读过这个链接吗?我建议您尝试从中删除以下几行
/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 代码有关