存在的问题
如下图所示:
每次启动服务器的时候,都需要手动将光标选择到第二条,敲回车,才能正常启动系统。
从图片可以看到,这是一个 GRUB 启动菜单,显示了三个选项:
CentOS Linux (3.10.0-1160.119.1.el7.x86_64) 7 (Core) (第一项)
CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core) (第二项)
CentOS Linux (0-rescue-ca5ae51a1ab446b3b3c13faf5e483b80) 7 (Core) (第三项)
需要选择第二项 才能正常开机。这意味着默认启动的选项是错误的,我们需要修改 GRUB 的配置文件,使其默认选择第二项。
解决步骤
1. 登录系统
首先,通过手动选择第二项来进入系统。如果可以正常进入系统,则继续以下步骤。
2. 查看当前 GRUB 配置
在终端中运行以下命令,查看当前的 GRUB 配置文件:
cat /etc/default/grub
打印内容如下所示:
(base) [root@root ~]# 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 spectre_v2=retpoline nomodeset rhgb quiet vga=0x0351"
GRUB_DISABLE_RECOVERY="true"
重点关注以下几行:
GRUB_DEFAULT=0
:这是设置默认启动项的索引号,从 0 开始计数。GRUB_TIMEOUT=5
:这是 GRUB 菜单的超时时间,单位是秒。如果设置为 0,则直接跳过菜单,使用默认选项。
3. 编辑 GRUB 配置文件
使用文本编辑器(如 nano
或 vim
)打开 /etc/default/grub
文件:
sudo nano /etc/default/grub
修改 GRUB_DEFAULT
根据测试,第二项是正确的启动项,因此需要将 GRUB_DEFAULT
设置为 1
(因为索引是从 0 开始的):
GRUB_DEFAULT=1
确保超时时间足够长
如果希望 GRUB 菜单始终显示,可以将 GRUB_TIMEOUT
设置为一个较大的值(例如 5 秒),或者保留默认值即可。
示例修改后的文件内容:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=1
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline nomodeset rhgb quiet vga=0x0351"
GRUB_DISABLE_RECOVERY="true"
4. 更新 GRUB 配置
保存并退出编辑器后,运行以下命令更新 GRUB 配置:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
对于 CentOS 7,通常使用的是 grub2-mkconfig
,而不是 update-grub
。
但是当我执行这条命令的时候,提示 grep: /boot/grub2/grub.cfg: 没有那个文件或目录
。如下所示:
(base) [root@root ~]# grep -oP '^menuentry.*?"' /boot/grub2/grub.cfg
grep: /boot/grub2/grub.cfg: 没有那个文件或目录
此时使用 find
命令查找 find /boot -name "grub.cfg"
,如下所示:
(base) [root@root ~]# find /boot -name "grub.cfg"
/boot/efi/EFI/centos/grub.cfg
查找结果为 /boot/efi/EFI/centos/grub.cfg"
,那么使用下面的命令进行更新 GRUB 配置
grep -oP '^menuentry.*?"' /boot/efi/EFI/centos/grub.cfg
5. 重启系统
重启服务器以应用更改:
sudo reboot
6. 验证结果
重启后,系统应该会自动选择第二项启动,而不需要手动干预。
✅ 操作步骤
步骤 | 命令 |
---|---|
编辑 GRUB 默认配置 | sudo nano /etc/default/grub |
设置默认为第 2 项 | GRUB_DEFAULT=1 |
更新 GRUB 配置 | sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg |
重启系统 | sudo reboot |