摘要:本文主要介绍CentOS7.9的内核版本离线更新,涉及CentOS内置版本的更新及RHEL系主流新版本内核更新2部分。我们知道RHEL/CentOS预置的内核版本是随大版本冻结的,7.x系列都是3.10.0版,虽然一直有内核安全更新,但新版本Linux内核的新增功能并没有更新。如果要用新版本内核里的新功能,就需要将CentOS预置的内核替换为新版本Linux内核:即由elrepo社区为RHEL及其衍生版编译的主流新版本Linux内核。
一、环境及目标
现环境为:CentOS Linux release 7.9.2009 (Core) 3.10.0-1160.105.1.el7.x86_64
[root@learn ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@learn ~]# uname -r
3.10.0-1160.105.1.el7.x86_64[root@learn ~]# rpm -qa | grep kernel-devel-$(uname -r)
kernel-devel-3.10.0-1160.105.1.el7.x86_64
[root@learn ~]# rpm -qa | grep kernel-headers-$(uname -r)
kernel-headers-3.10.0-1160.105.1.el7.x86_64
目标1:将内置版本升级为 3.10.0-1160.119.1.el7.x86_64
目标2:将内置版本升级为 kernel-ml-6.9.10-1.el7.x86_64.rpm
二、升级到目标1
下载安装包:
方式1:服务器不能联网。
可到阿里云或华为云等镜像站下载相应的 kernel 包,手动上传到服务器。
centos-vault-7.9.2009-updates-x86_64-Packages安装包下载_开源镜像站-阿里云
https://mirrors.huaweicloud.com/centos-vault/7.9.2009/updates/x86_64/Packages/
方式2:服务器可联网
在服务器上直接下载相关 kernel 包
[root@learn kernel]# wget https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/x86_64/Packages/kernel-3.10.0-1160.119.1.el7.x86_64.rpm
[root@learn kernel]# wget https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/x86_64/Packages/kernel-headers-3.10.0-1160.119.1.el7.x86_64.rpm
[root@learn kernel]#wget https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/x86_64/Packages/kernel-devel-3.10.0-1160.119.1.el7.x86_64.rpm
[root@learn kernel]# ll
-rw-r--r--. 1 root root 54192408 6月 6 2024 kernel-3.10.0-1160.119.1.el7.x86_64.rpm
-rw-r--r--. 1 root root 18897436 6月 6 2024 kernel-devel-3.10.0-1160.119.1.el7.x86_64.rpm
-rw-r--r--. 1 root root 9525376 6月 6 2024 kernel-headers-3.10.0-1160.119.1.el7.x86_64.rpm
开始升级内核:
在安装 kernel-headers 时提示:
准备中... ################################# [100%]
file /usr/include/linux/version.h from install of kernel-headers-3.10.0-1160.119.1.el7.x86_64 conflicts with file from package kernel-headers-3.10.0-1160.105.1.el7.x86_64
所以在安装 kernel-header 前应先卸载现有的 kernel-headers。
[root@learn kernel]# rpm -e kernel-headers-3.10.0-1160.105.1.el7.x86_64 --nodeps
设置默认内核:
可使用以下命令查看系统已安装内核。可以看到新安装内核序号为 0.
[root@learn kernel]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (3.10.0-1160.119.1.el7.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.105.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-546e61149d9f4b089d8aef65f3f895b8) 7 (Core)
设置默认内核
[root@learn kernel]# grub2-set-default 0
更新GRUB配置以使系统在启动时使用新内核
[root@learn kernel]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.119.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.105.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.105.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-546e61149d9f4b089d8aef65f3f895b8
Found initrd image: /boot/initramfs-0-rescue-546e61149d9f4b089d8aef65f3f895b8.img
done
重启:
重启完成后查看系统内核,已更新为 3.10.0-1160.119.1.el7.x86_64。
[root@learn ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@learn ~]# uname -r
3.10.0-1160.119.1.el7.x86_64
[root@learn ~]# rpm -qa | grep kernel-headers-$(uname -r)
kernel-headers-3.10.0-1160.119.1.el7.x86_64
[root@learn ~]# rpm -qa | grep kernel-devel-$(uname -r)
kernel-devel-3.10.0-1160.119.1.el7.x86_64
删除旧内核版本相关包(谨慎可选) :
可选择将旧内核相关的内核包卸载。一般会保留2个旧内核版本。
三、升级到目标2
下载安装包:
下载安装包的方式与上面相同,只是在阿里云及华为云 elrepo镜像 中暂时没有找到相关安装包,可在: Index of /kernel/el7 中下载。
[root@learn kernel]# wget https://dl.lamp.sh/kernel/el7/kernel-ml-6.9.10-1.el7.x86_64.rpm
[root@learn kernel]# wget https://dl.lamp.sh/kernel/el7/kernel-ml-devel-6.9.10-1.el7.x86_64.rpm
[root@learn kernel]# wget https://dl.lamp.sh/kernel/el7/kernel-ml-headers-6.9.10-1.el7.x86_64.rpm
[root@learn kernel]# ll kernel-ml*
-rw-r--r--. 1 root root 71876368 7月 19 2024 kernel-ml-6.9.10-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 16218684 7月 19 2024 kernel-ml-devel-6.9.10-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 1823216 7月 19 2024 kernel-ml-headers-6.9.10-1.el7.x86_64.rpm
升级内核:
设置默认内核:
重启:
重启完成后查看系统内核,已更新为 6.9.10-1.el7.x86_64。
可以看到内核已完成更新。
删除旧内核版本相关包(谨慎可选) :
四、锁定内核更新
使用 yum-plugin-versionlock 锁定内核版本
需先安装 yum-plugin-versionlock 。
[root@learn ~]# yum install -y yum-plugin-versionlock
[root@learn ~]# rpm -qa | grep yum-plugin-versionlock
yum-plugin-versionlock-1.1.31-54.el7_8.noarch
添加需要锁定的内核版本,并查看内核锁定列表。
[root@learn ~]# yum versionlock kernel*
[root@learn ~]# yum versionlock add kernel-ml-6.9.10-1.el7.x86_64
[root@learn ~]# yum versionlock list
已加载插件:fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager, versionlockThis system is not registered with an entitlement server. You can use subscription-manager to register.
0:kernel-3.10.0-1160.119.1.el7.*
0:kernel-ml-6.9.10-1.el7.*
versionlock list done
使用 versionlock 锁定内核方式实际上是编辑 /etc/yum/pluginconf.d/versionlock.list 文件。也可直接编辑此配置文件。
[root@learn ~]# cat /etc/yum/pluginconf.d/versionlock.list
# Added locks on Thu Jun 5 14:18:30 2025
0:kernel-3.10.0-1160.119.1.el7.*# Added locks on Thu Jun 5 14:23:12 2025
0:kernel-ml-6.9.10-1.el7.*