如何在双系统启动时跳过Grub菜单?

我已经安装了Ubuntu和Windows 7,并通过Grub2进行双启动。
99/100次我会选择启动Ubuntu。
我想加快启动Ubuntu的时间,而实际上Grub2提示是耗时最长的部分。
所以,我想禁用这个提示。
如果可能的话,我希望能够在启动时按住Shift键或类似的方式来显示它。
但是如果需要的话,我也不介意在Ubuntu中编辑配置文件或类似的操作来重新显示它。
那么我该如何做呢?
我的/etc/default/grub文件:
#如果你更改了这个文件,请在更新之后运行'update-grub'以更新 #/boot/grub/grub.cfg。 #有关此文件中选项的完整文档,请参阅: # info -f grub -n '简单配置'
GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> / dev / null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX=""
#取消注释以启用BadRAM过滤,根据需要进行修改 #它适用于Linux(无需补丁)和从GRUB获取内存映射信息的任何内核(GNU Mach,FreeBSD内核...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
#取消注释以禁用图形终端(仅限grub-pc) #GRUB_TERMINAL=console #在图形终端上使用的分辨率 #请注意,您只能使用图形卡支持的模式通过VBE #您可以使用“vbeinfo”命令在实际GRUB中查看它们 #GRUB_GFXMODE=640x480
#取消注释如果您不希望GRUB将“root = UUID = xxx”参数传递给Linux #GRUB_DISABLE_LINUX_UUID=true #取消注释以禁用恢复模式菜单项的生成 #GRUB_DISABLE_RECOVERY="true"
#取消注释以在grub启动时获得一个提示音 #GRUB_INIT_TUNE="480 440 1"
1个回答

编辑/etc/default/grub文件,将其内容修改为:
GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=0

保留其他设置不变。如果你想要允许按下Shift键1秒钟(有些电脑在键盘初始化和操作系统启动之间给你的时间非常有限),将其设置为这个值。
GRUB_HIDDEN_TIMEOUT=1
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=0

或者如果你喜欢看菜单一秒钟:
GRUB_HIDDEN_TIMEOUT=
GRUB_TIMEOUT=1

如果您几乎总是启动 Linux,您可能更喜欢完全跳过引导菜单(本答案中的第一个选项)并且不需要按下 Shift 键。相反,当您想要启动 Windows 时,请启动 Linux 并运行以下命令,以指定下一次重启(仅限下一次重启)默认为 Windows:

grub-reboot Windows

您需要更改/etc/default/grub
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=

运行grub-set-default 0以确保默认启动Ubuntu。
有关更多信息,请参阅Ubuntu社区文档中的Grub2设置
完成后,运行sudo update-grub以保存您的更改。

在VirtualBox上的ubuntu-server上,采取这些步骤的唯一缺点是每次启动服务器时现在必须登录,而在进行此更改之前,我能够直接跳过提示(等待grub后)。总的来说,在启动时我浪费了时间而不是节省了时间。我认为这种更改覆盖了VirtualBox或默认的ubuntu-server安装提供的某些内容。 - Chris Moschini
@ChrisMoschini 这个更改与任何形式的自动登录无关。自动登录纯粹是Linux的一个功能,与VirtualBox或Ubuntu无关。(而且为什么你会在虚拟机中安装双启动系统?) - Gilles 'SO- stop being evil'
这只是VirtualBox上Ubuntu服务器的默认配置 - 它会安装grub,然后每次启动时都会花费时间询问您是否希望将VM上唯一的操作系统设置为所需的操作系统。 - Chris Moschini
在进行这些更改后,有没有一种方式可以进入故障安全(恢复)模式(完全跳过grub提示)?假设我的会话无法打开或操作系统无法正常启动,是否有一种方法可以重新启动进入故障安全模式? - Clément
@Clément grub-set-default 1(假设救援引导是文件中的第二个条目,请在/etc/grub/grub.cfg中查看,编号从0开始) - Gilles 'SO- stop being evil'
1@Gilles 如果系统无法启动,你会在哪里运行这个? - Clément
@Clément 从你进行这些更改的地方来看,你可能是从救援媒体启动并进入系统的chroot环境。 - Gilles 'SO- stop being evil'
不,那不是我做的。事实上,我没有做任何改变。只是在进行这篇帖子推荐的更改之前,我想确保它不会破坏grub通常提供的救援模式的访问权限。 - Clément
所以如果我理解得正确的话,进行这些更改是非常冒险的:如果你这样做了,而后面出现了无关问题,你需要一份救援媒体来恢复。这样对吗? - Clément
@Clément 在你的第一条评论中,你写道“在进行这些更改之后”...我不明白你担心什么风险。在这个回答中,我并没有描述任何更改访问救援模式的方式。如果你想在进行我在这个回答中描述的更改后访问救援模式,你仍然可以做到(当然前提是你有物理访问权限),你只需要在启动过程中适时按下Shift键即可。 - Gilles 'SO- stop being evil'
@Gilles:抱歉对话时间有点长。我可能误解了你的回答,但如果我理解正确的话,使用你建议的第一组设置几乎没有时间按下Shift键并访问grub菜单。是这样吗?如果是这样的话,我会担心应用这些更改,因为这些更改将使我无法轻松地进入救援模式,如果操作系统出现故障的话。 - Clément
@Clément 是的,按Shift键的时间变短了,但仍然是可能的。 - Gilles 'SO- stop being evil'
3这对我的Ubuntu 20.04没有任何影响。这个答案还有效吗? - Torsten Bronger
3@TorstenBronger 自从19.10版本以来,似乎你需要使用GRUB_TIMEOUT_STYLE=hidden而不是GRUB_HIDDEN_TIMEOUT=0。我认为其他部分的答案仍然适用。但是我目前没有最新版本可供检查。 - Gilles 'SO- stop being evil'
请参考此链接:https://ubuntuhandbook.org/index.php/2020/06/hide-grub-boot-menu-ubuntu-20-04-lts/,@TorstenBronger。 - Aman Sharma