关于Linux升级内核时报错-grub2-editenv: error: environment block too small.
先说一下本文的初始环境
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
相关文章
- 改了配置,却不想重启,怎么整?
- 从6行到92行:If-Else是贫瘠的多态性
- 程序员限定快乐:看看别人的代码快乐一下
- 提到算法就头大,12个算法设计项目给你练练脑
- 程序运行后性能总会下降?你应该先了解编程语言的内存布局与管理
- 谈谈前后端分离及认证选择
- 云原生如何助力微服务?
- 移动前端开发和Web前端开发的区别是什么?
- 谷歌Flutter开发框架现已支持Windows平台应用程序的开发
- 一步到位,服务器监控就是这么简单
- GET和POST两种基本请求方法的区别
- Webhooks与API的区别在哪里?
- ServiceMesh的关键:边车模式(sidecar);又要开车了
- 开发者现可在Windows平台上构建和运行Swift代码
- Edge for Linux开发者预览将至 WSL子系统可运行带GUI的Linux应用程序
- 20行代码实现,使用Tarjan算法求解强连通分量
- 谷歌内部孵化Tables工具:提高追踪项目工作的效率
- 动图演示:手撸堆栈的两种实现方法!
- 一次代码优化实践,用了模板方法+策略+工厂方法模式
- 技术人员思维和认知升级