在 CentOS 7 中,查看 GRUB2 实际安装版本,建议执行 grub2-editenv --version 或 grub2-mkconfig --version,通常会输出类似 2.02-102.el7 的版本字符串;如果想更准确确认已安装的引导程序包版本,推荐使用 rpm -q grub2-common,可直接显示 RPM 包版本;对于 UEFI 启动环境,还需要同时检查 shim-x64 与 grub2-efi-x64 的版本是否兼容。

怎么查 GRUB2 的实际安装版本
CentOS 7 默认使用的是 GRUB2,而不是早期的 GRUB Legacy。很多人会去查看 /boot/grub2/grub.cfg,但这个文件本身并不包含 GRUB2 的具体版本号,它只是自动生成的引导配置文件;真正需要确认的,是 grub2-tools 软件包提供的二进制工具版本。
执行:grub2-editenv --version
或grub2-mkconfig --version
这两个命令通常会输出类似 2.02-102.el7 的内容,其中 2.02 表示上游 GRUB2 主版本,el7 说明该软件包是为 CentOS 7 / RHEL 7 构建的,前面的修订数字则对应 RPM 的内部发布版本。
需要注意的是:grub2-install --version 在某些精简安装镜像中可能不存在或未安装,因此优先使用前面两个命令来查看 GRUB2 版本更稳妥。
为什么 rpm -q grub2-common 比 lsb_release 更可靠
通过 lsb_release -a 或 cat /etc/os-release 查看到的,只是当前操作系统发行版的版本号,例如 7.9.2009。但 GRUB2 的更新频率与 CentOS 系统版本并不是完全同步的,它可能在系统生命周期内被单独升级多次。也就是说,即使同样是 CentOS 7.9,某台服务器上的 GRUB2 可能仍是 2.02-74,也可能已经更新到带安全修复的 2.02-102。
因此,查看 GRUB2 具体版本必须以 RPM 包信息为准:
rpm -q grub2-common—— 主包,包含核心模块与脚本文件rpm -q grub2-tools—— 包含grub2-mkconfig、grub2-editenv等常用管理工具rpm -q grub2-pc—— 适用于 x86_64 BIOS 引导环境(如果是 UEFI,请查看grub2-efi-x64)
输出通常类似 grub2-common-2.02-102.el7.noarch,版本号紧跟在包名之后,识别起来非常直观。
从 /boot/grub2/i386-pc 目录反推实际引导代码版本
GRUB2 的核心镜像文件(core.img)以及各类模块(*.mod)通常位于 /boot/grub2/i386-pc/(BIOS 模式)或 /boot/efi/EFI/centos/(UEFI 模式)目录中。严格来说,这些文件本身一般不会直接显示清晰的版本字符串,但它们的修改时间往往会随着 RPM 升级而变化,因此可以作为判断 GRUB2 是否更新过的辅助依据。
stat /boot/grub2/i386-pc/core.img | grep Modify
再对比 rpm -q --last grub2-common 输出的时间戳,就能进一步确认 GRUB2 是否确实发生过更新。
这里有一个常见误区:如果管理员手动复制过旧版 core.img,或者使用第三方工具重写了 MBR,那么 RPM 记录的版本与磁盘中实际生效的引导代码可能不一致。在这种情况下,grub2-editenv --version 返回的通常更接近当前运行环境实际加载的模块版本,比单纯查询 rpm 更有参考价值。
UEFI 系统要额外确认 shim 和 grub2-efi 是否匹配
如果服务器使用的是启用 Secure Boot 的 UEFI 启动方式,那么实际的链式加载顺序通常是:shim.efi → MokManager → grubx64.efi
因此,除了查询 grub2-efi-x64 的版本之外,还应重点确认以下内容:
rpm -q shim-x64—— Microsoft 签名的启动加载器,版本需要与当前 GRUB2 保持兼容ls /boot/efi/EFI/centos/shim.efi /boot/efi/EFI/centos/grubx64.efi—— 确认这两个文件都存在,并且生成时间接近file /boot/efi/EFI/centos/grubx64.efi | grep "PE32+"—— 确保它是 64 位 EFI 可执行文件,避免误用 BIOS 版本文件
如果 shim 版本过旧(例如 shim-15-3.el7),而 grub2-efi-x64 已升级到较新的版本(如 2.02-102),那么在 Secure Boot 场景下就可能出现拒绝加载的问题,表现为开机黑屏或卡在厂商 logo 界面。
GRUB2 版本排查中最容易被忽略的一点是:它不像 Linux 内核那样更新后通常立即通过重启切换生效,而是依赖 grub2-mkconfig 重新生成配置,同时还可能需要写入 MBR 或 EFI 系统分区。也就是说,查到的版本号只是第一步,还应结合 grub2-install 是否执行过,以及 grub2-mkconfig -o /boot/grub2/grub.cfg 是否成功运行,才能更准确判断当前系统实际使用的引导程序版本。
