博客园  :: 首页  :: 管理

先说一下本文的初始环境

OS版本: Red Hat Enterprise Linux release 8.1 (Ootpa)

内核版本:4.18.0-425.10.1.el8_7.x86_64

 

在运维中,有时一个报错,可能表面原因可能简单,但有时要找到根本原因,需要让问题重现还是有点难的

先说一下笔者这次遇到的问题的根本原因,及让问题重现的方法

默认情况下,是不建议直接 /boot/grub2/grubenv  

如果手动修改了,再通过如下命令,升级内核时,kernel-相关的包是会被更新

[root@QQ-5201351 ~]# yum update kernel-* -y

最后也会显示完成,但中间的过程会看到报错信息:grub2-editenv: error: environment block too small.

然后查看当前的默认内核输出,依然是旧的版本,这也意味着重启OS后、还是应用旧版本的内核

[root@QQ-5201351 ~]# grubby --default-kernel
/boot/vmlinuz-4.18.0-147.el8.x86_64
[root@QQ-5201351 ~]# 

如果问题已经出现了,该如何解决呢,笔者整理了一下处理方法,步骤如下

1、备份/boot/grub2/grubenv文件,再通过如下命令重新生成/boot/grub2/grubenv

mv /boot/grub2/grubenv /boot/grub2/grubenv.bak.20230219
grub2-mkconfig -o /boot/grub2/grub.cfg

2、最后再重新安装一下新版本的kernel-core就可以了

yum reinstall kernel-core-4.18.0-425.10.1.el8_7.x86_64

然后就可以通过 grubby --default-kernel 命令看到已经配置已经将最新的内核版本设置为下次启动时的选项,查看/boot/grub2/grubenv 文件也会被更新

另外最后,还总结一下,最好不要直接修改/boot/grub2/grubenv

如果修改某些选项,应该是修改/etc/default/grub,再通过grub2-mkconfig –o /boot/grub2/grub.cfg 命令,就可以将修改更新到/boot/grub2/grubenv这个文件了

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17134924.html