摘自 Setting Up grub2 on CentOS 7 | CentOS Wiki

最近安装了 CentOS 7 + Windows 10 的双系统,开机进入 grub2 的启动菜单。由于平时用 Windows 居多,可以接受在开机时手动选择 CentOS,所以需要修改默认启动项为Windows Boot Manager,并缩短等待时间为 3 秒(默认为 5 秒),下面简单介绍修改方法。

1. 修改 grub2 等待时间

grub2 等待时间/etc/default/grub中的GRUB_TIMEOUT控制,首先查看该文件内容:

> cat /etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

2. 重新生成 grub2.cfg

修改为GRUB_TIMOUT=3后,为使其生效,需要重新生成/boot/efi/EFI/centos/grub2.cfg

> grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

非 UEFI 设备(Legacy)需将上述文件路径替换为/boot/grub2/grub.cfg

3. 查看所有启动项

> awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2-efi.cfg

0 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
1 : CentOS Linux (0-rescue-3af74b34419f4869a2952d4467e303f8) 7 (Core)
2 : Windows Boot Manager (on /dev/sda2)

非 UEFI 设备(Legacy)需将上述文件路径替换为/etc/grub.cfg

或使用下列命令:

> grep "^menuentry" /boot/efi/EFI/centos/grub.cfg | cut -d "'" -f2

CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-3af74b34419f4869a2952d4467e303f8) 7 (Core)
Windows Boot Manager (on /dev/sda2)

非 UEFI 设备(Legacy)需将上述文件路径替换为/boot/grub2/grub.cfg

4. 修改默认启动项

默认启动项/etc/default/grub中的GRUB_DEFAULT控制。

如果GRUB_DEFAULT=saved,则该参数将存储在/boot/grub2/grubenv中。可使用grub2-editenv list查看:

> grub2-editenv list
saved_entry=CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)

通过grub2-set-default命令修改默认启动项。由之前的输出可知,Windows Boot Manager的启动序号为2

> grub2-set-default 2
> grub2-editenv list
saved_entry=2

重启即可生效,修改完成

参考文章

  1. 在 CentOS 7 上设置 grub2 | CentOS Wiki
  2. Setting Up grub2 on CentOS 7 | CentOS Wiki
  3. Linux GRUB2 配置简介 | Linux 中国
  4. CentOS 7 系统引导程序 Grub2 的配置 | 文卓的笔记