Centos7升级kernel-lt5.4内核
- 背景
- 为什么要更新Centos7的内核到4.4以上
- kernel-lt与kernel-ml的区别
- Centos7通过rpm包升级`kernel-lt5.4`内核
- 升级到`kernel-ml6.6.9内核el7`
- 将GRUB启动菜单中的第一个启动项设置为默认启动项
- 方法1: 修改GRUB全局配置文件
- 方法2: 使用grub2-set-default立即生效GRUB更改
- 查看GRUB的默认启动内核
- 结果验证
背景
2025年4月1日,博主发现ELRepo源仓库的el7的内核仓库已被清空,yum在线更新内核已不可用.
正确更新Centos7内核方法如下:
从这个git仓库下载长期内核版本5.4的rpm包进行安装即可.
https://github.com/omaidb/centos7_kernel_rpm.git
为什么要更新Centos7的内核到4.4以上
在k8s所有节点上执行
k8s在内核3.10下有bug,一定要更新到4.4以上
参考: https://cloud.tencent.com/developer/article/1737907
kernel-lt与kernel-ml的区别
参考: https://shawn0915.github.io/redhat/2018/02/04/how-to-upgrade-centos-kernel.html
| 内核名称 | 全拼 | 解释 | 由哪个软件仓库提供 |
|---|---|---|---|
| kernel-lt | lt是英文【long term support】的缩写 | 长期支持版本 | elrepo-kernel |
| kernel-ml | ml是英文【mainline stable】的缩写 | 最新的稳定主线版本 | elrepo-kernel |
Centos7通过rpm包升级kernel-lt5.4内核
el7内核rpm包下载地址: https://github.com/omaidb/centos7_kernel_rpm.git
kernel-lt5.4内核el7下载地址: http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS
参考: https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=235891
mkdir-prpm&&cdrpm# 下载Centos7的内核安装包---历史存档wget-chttps://media.githubusercontent.com/media/omaidb/centos7_kernel_rpm/refs/heads/main/Centos7_kernel_lt_rpm/kernel-lt-5.4.278-1.el7.elrepo.x86_64.rpmwget-chttps://media.githubusercontent.com/media/omaidb/centos7_kernel_rpm/refs/heads/main/Centos7_kernel_lt_rpm/kernel-lt-devel-5.4.278-1.el7.elrepo.x86_64.rpmwget-chttps://media.githubusercontent.com/media/omaidb/centos7_kernel_rpm/refs/heads/main/Centos7_kernel_lt_rpm/kernel-lt-headers-5.4.278-1.el7.elrepo.x86_64.rpm- 安装这3个rpm包
| 包名 | 作用 | 是否常用 |
|---|---|---|
kernel-lt-headers | 提供内核头文件,用于编译用户空间程序 | 否(一般作为依赖) |
kernel-lt-devel | 提供开发所需头文件和静态库,用于编译模块/驱动 | 是 |
kernel-lt | 完整的 Linux 内核镜像 | 是 |
# 安装内核的rpm包rpm-ivh*.rpm# 如果报错则忽略依赖强制安装rpm-ivh*.rpm--nodeps--force升级到kernel-ml6.6.9内核el7
kernel-ml6.6.9内核el7下载地址
wget-chttp://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-headers-6.6.9-1.el7.elrepo.x86_64.rpmwget-chttp://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-devel-6.6.9-1.el7.elrepo.x86_64.rpmwget-chttp://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-6.6.9-1.el7.elrepo.x86_64.rpm安装内核包
rpm-Uvh*.rpm--nodeps--force将GRUB启动菜单中的第一个启动项设置为默认启动项
# 1. 确认当前内核版本和系统架构uname-rcat/etc/redhat-releaseuname-m# 2. 查看已安装的内核相关包,了解现有组件rpm-qa|grep-E"^kernel|^kernel-"# 3. 检查引导方式,是传统的BIOS还是UEFIls/sys/firmware/efi2>/dev/null&&echo"UEFI Boot"||echo"Legacy BIOS Boot"# 4. 查看关键工具链是否齐全(离线安装时极可能缺失)rpm-qa|grep-E"^gcc|^make|^elfutils|^binutils"# 显示GRUB启动内核的索引号grep^menuentry /etc/grub2.cfg|cut-d\'-f2|nl-v0# 或(efi机器)grep^menuentry /etc/grub2-efi.cfg|cut-d\'-f2|nl-v0方法1: 修改GRUB全局配置文件
# 修改GRUB配置vim/etc/default/grub将GRUB_DEFAULT=saved改为GRUB_DEFAULT=0
| 参数 | 解释 |
|---|---|
| GRUB_DEFAULT=saved | GRUB默认启动用户上一次选择的启动项 |
| GRUB_DEFAULT=0 | 设置GRUB默认启动最新内核 |
更新 GRUB 配置
# 更新 GRUB 配置grub2-mkconfig-o/etc/grub2.cfg# 或grub2-mkconfig-o/boot/grub2/grub.cfg方法2: 使用grub2-set-default立即生效GRUB更改
# 设置GRUB默认启动最新内核grub2-set-default0修改的是/boot/grub2/grubenv环境文件,权重没有
查看GRUB的默认启动内核
# 查看下次启动内核版本cat/boot/grub2/grubenv|grepsaved_entry# 或# 查看GRUB默认启动的内核grub2-editenv list结果验证
# 重启系统reboot# 查看内核版本好uname-a