在支持 UEFI 双启动的电脑上,由于电脑 BIOS 有启动管理器(Boot Manager)功能,完全可以由它管理操作系统的启动选单。但是,有的操作系统(比如 Ubuntu 等 Linux 发行版)还自带有 GRUB 启动管理器,这样从 BIOS 的启动管理器选择启动此系统后,还要再显示一次 GRUB 启动选单,它们在功能上重复不说,还浪费时间。本文就介绍一下如何禁用 GRUB 启动菜单。
方法如下:
在支持 UEFI 启动模式的电脑上,其 BIOS 有启动管理器(Boot Manager)功能,可以在开机时按下启动选择键(注意事项1),系统首先进入启动管理器(Boot Manager),用方向键选择要启动的操作系统,回车即可启动它。
如上一步骤图,选择启动了 Ubuntu,但是 Ubuntu 自带 GRUB 启动管理器,还会显示一个启动选单。选单中包括了 Ubuntu 自身的维护模式(注意事项2),以及电脑上安装的 Windows 操作系统。在双系统环境下,GRUB 的启动选择菜单是强制显示的,目的是为了确保在当前启动不正常时,还能正常启动到其他内核或其他操作系统。
进入 Ubuntu 桌面,按下 Ctrl + Alt + t 调出终端,键入以下命令:
sudo gedit /etc/default/grub
意思是以管理员(root)的权限启动文本编辑器,编辑 /etc/default/grub 这个文件。
在 /etc/default/ 文件夹下的这个 grub 文件,控制着 GRUB 的行为方式,包括默认启动哪个系统、整个菜单的显示时间等。
注意这里需要输入管理员密码。
gedit 文本编辑器将打开/etc/default/grub 这个文件。
可以看到,默认启动的操作系统为第 0 项(GRUB_DEFAULT=0,在本经验的电脑上是 Ubuntu),GRUB 的启动菜单默认显示 10 秒钟(GRUB_TIMEOUT=10)。
将 GRUB_TIMEOUT=10 这一行中的值,由“10”改为“0”,意思是设置 GRUB 菜单的倒计时为“0”秒,也就是不显示 GRUB 菜单。
但是,由于前述“双系统”的因素存在,只改此处仍然不能实现禁用 GRUB 菜单的目的。还得修改其他内容。
在 /etc/default/grub 文件的末尾添加一行:
GRUB_DISABLE_OS_PROBER=true
意思是禁用 GRUB 探测电脑上安装的其他操作系统的能力。
这样,GRUB 将不再探测 Windows 等其他操作系统的存在,结合上一步骤中菜单显示倒计时为“0”,就能实现关闭 GRUB 显示菜单的目的了。
还差最后一步。回到终端,键入以下命令:
sudo update-grub
此命令更新 GRUB 启动菜单的内容,并写入 GRUB 的启动脚本——至此,上述操作才正式生效。可以从命令的反馈信息中看到,已经没有关于其他操作系统的条目了。
重新启动,开机按下 F10,选择 Ubuntu 启动,GRUB 的启动选单消失了。
上述操作禁用了 GRUB 的启动菜单,同时也禁用了进入 Ubuntu 维护模式、以启动其他内核的能力。这在当前内核无法启动、需要启动其他正常内核时,是灾难性的。
为了避免这种灾难性的后果,可以采取折衷的方案——缩短 GRUB 菜单的显示时间:重复上述步骤,在 /etc/default/grub 文件末尾添加的 GRUB_DISABLE_OS_PROBER=true 行前面键入一个“#”号,注释掉该行;然后修改 GRUB_TIMEOUT 的值为一个较小的数值(比如“1”或“5”),再执行 sudo update-grub。
在这种情况下,GRUB 启动菜单仍然显示,但是显示时间缩短。
注意:本文使用的电脑上,开机选择操作系统列表的按键为 F10。不同的电脑可能使用不同的按键,可参考电脑的使用说明书。GRUB 的维护模式可以启动到其他版本的内核,这在当前内核出现故障时,是非常重要的系统修复途径。