CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定
我们使用ELRepo做内核升级,这是用于Enterprise Linux软件包的RPM存储库。ELRepo支持Red Hat Enterprise Linux(RHEL)及其衍生版本(Scientific Linux,CentOS等)。
ELRepo项目专注于与硬件相关的软件包,以增强您使用Enterprise Linux的体验。这包括文件系统驱动程序,图形驱动程序,网络驱动程序,声音驱动程序,网络摄像头和视频驱动程序。
安装yum源
导入公钥:
[root@localhost yum.repos.d]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
服务器没有联网的情况下,可以把公钥文件下载下来,传到服务器上执行
[root@localhost yum.repos.d]# rpm --import RPM-GPG-KEY-elrepo.org
[root@localhost yum.repos.d]# cat /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)
mQGiBEm+/6QRBAC5mbtqOFSQ0FkTLIMdIoqxtraIeUqwbPp3IBYQ/u/EREjyEf1D
qFyBEXII0dD8JDT85vRZ81jhB7nFWa0VbUfY0xfghkbnokiNBVNpiQcvszw3UYDF
aLAaOC8Z98vmlsQaBBTQG6704ZXLr7FJyG3GP5WE6egXIQQbrMcdmCoRBwCg/dwC
HLWjuemoDc5SX7hKHbB4zZ8D/jP+oMbqz+bDn8OZ2UuaGdxr+mHW8tzTdPjnEU8e
hUt1ws8eBqn/gMfKvUBa8xFSILe8Ty99u+VjFbcRsdf0H6dRre9AdDVUz5oxzoPw
gamA8mhPQvFh3wt9smtRUh5IoM2LiM1s5pGMLuYuvSnVUPArEnSfW6K5I6v7OarU
3WfrBACDEGGcaWKjfdkRtmKIQrzu6AnldVC1ISLVAoqxHnKNFTk1BgO0PSZDpfJI
x8fMCnGlusoL6F5+LYEk4K4B0zvlj1ur3JocjxpuBLccl94JTo/+I9ZbS8ptUqLw
LBUkgIQJzzIH4G5NZsQ3FpzSWGRFVa7etqTv9BfUMUmJxhEoobQ/ZWxyZXBvLm9y
ZyAoUlBNIFNpZ25pbmcgS2V5IGZvciBlbHJlcG8ub3JnKSA8c2VjdXJlQGVscmVw
by5vcmc+iGAEExECACAFAkm+/6QCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK
CRAwm8MFuq2uUlgWAKCGWOpyodbzxS7Xy/0X9m9qVnHq+ACfUHrQzYAtFRpT07Sg
giosE+mvAKu5Ag0ESb7/pxAIALgT0q0HhwugE717a7N+gAtCbFu8pCXOZcrAnJpG
cMA9VWmsODZStPTxXYM2ggCMSzUnNis8pPZOPIP5C+t2IYtVjLshM4C9UiY7u5ET
jErWCxWmF+2QLO50K56E4qxj0wufZt9P+Ih0USUM5L2oyrQG51uj/2v3Qq3igc8Z
NTtmEOfis3losusQbAfZtTBmNQ0570kkhMxiyavgAUxLenXHYrkDJFuL7XdBCmna
kykTn2dzU81rIDZ+QPxII4V/eZ5xGiRY/EDUIAysEV2m0NNZgWi/twUnZICm7zYp
VRviJrBnFTvNEPMhiGRnJgQp/Krv4WIHQ67N8lQg3q5RJX8AAwUH/0UBjBgbsuWR
dB+ZYWjKPBy+bJY/6HefPUuLrt3QDNINMW8kY7VzWRMWyGc4IlPJDW0nwOn/vT5H
Dgc3YmA3tm7cKj5wpFijzff61Db8eq+CUKGscKxDBGzHq6oirM5U7DQLmipCs5Eb
efwHIjE3aOUSnoQmniEnBWI2hm/rftmY9oJSi8xgns4wAokDPiMcucADtbV3fznx
ppuowtBi8bcGB1vJZjTySQcSKWv+IVp5ej06uZ9501BEm6HxUZkuAGPecP65kcQu
5bg7B7LQeI5AWyujqvfuWgAF34xhl9QU/sDWxM3wUog+bw7y8pyWCqnJhp70yx8o
SqzhFygT62eISQQYEQIACQUCSb7/pwIbDAAKCRAwm8MFuq2uUq8PAKC1+E2pSwiS
oHXkKYPYDwApsP1mVACfRe1YnggLYQtG9LMeweVQQC77rK8=
=qyRr
-----END PGP PUBLIC KEY BLOCK-----
安装ELRepo Yum源
- 系统版本 RHEL-8 or CentOS-8 请安装
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
- 系统版本 RHEL-7, SL-7 or CentOS-7 请安装
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
安装Linux内核
查找可供安装的内核版本
[root@localhost yum.repos.d]# yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
已安装的软件包
kernel.x86_64 3.10.0-1160.el7 @anaconda
kernel-headers.x86_64 3.10.0-1160.15.2.el7 @updates
kernel-lt.x86_64 5.4.109-1.el7.elrepo @elrepo-kernel
kernel-tools.x86_64 3.10.0-1160.el7 @anaconda
kernel-tools-libs.x86_64 3.10.0-1160.el7 @anaconda
可安装的软件包
kernel-lt.x86_64 5.4.110-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 5.4.110-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 5.4.110-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 5.4.110-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 5.4.110-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 5.4.110-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 5.4.110-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 5.11.12-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 5.11.12-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 5.11.12-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 5.11.12-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 5.11.12-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 5.11.12-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 5.11.12-1.el7.elrepo elrepo-kernel
这里的kernel-lt,kernel-ml解释一下
- kernel-ml 中的ml是英文【mainline stable】的缩写,elrepo-kernel中罗列出来的是最新的稳定主线版本。
- kernel-lt 中的lt是英文【long term support】的缩写,elrepo-kernel中罗列出来的长期支持版本。
不联网离线的情况下,找一台能上网上服务器,或者本地安装虚拟机下载离线安装包
下载地址:https://elrepo.org/linux/kernel/
[root@localhost ~]# wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.110-1.el7.elrepo.x86_64.rpm
--2021-04-09 18:56:54-- https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.110-1.el7.elrepo.x86_64.rpm
正在解析主机 elrepo.org (elrepo.org)... 69.195.83.87
正在连接 elrepo.org (elrepo.org)|69.195.83.87|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:52405420 (50M)
正在保存至: “kernel-lt-5.4.110-1.el7.elrepo.x86_64.rpm”
100%[=====================================================================================================================================================>] 52,405,420 4.87MB/s 用时 31s
2021-04-09 18:57:25 (1.63 MB/s) - 已保存 “kernel-lt-5.4.110-1.el7.elrepo.x86_64.rpm” [52405420/52405420])
[root@localhost ~]#
安装内核
[root@localhost yum.repos.d]# yum --enablerepo=elrepo-kernel install -y kernel-lt
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* elrepo: mirrors.neusoft.edu.cn
* elrepo-kernel: mirrors.neusoft.edu.cn
file:///yumrepo/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /yumrepo/repodata/repomd.xml"
正在尝试其它镜像。
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-lt.x86_64.0.5.4.110-1.el7.elrepo 将被 安装
--> 解决依赖关系完成
依赖关系解决
===============================================================================================================================================================================================
Package 架构 版本 源 大小
===============================================================================================================================================================================================
正在安装:
kernel-lt x86_64 5.4.110-1.el7.elrepo elrepo-kernel 50 M
事务概要
===============================================================================================================================================================================================
安装 1 软件包
总下载量:50 M
安装大小:227 M
Downloading packages:
kernel-lt-5.4.110-1.el7.elrepo.x86_64.rpm | 50 MB 00:00:44
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
正在安装 : kernel-lt-5.4.110-1.el7.elrepo.x86_64 1/1
验证中 : kernel-lt-5.4.110-1.el7.elrepo.x86_64 1/1
已安装:
kernel-lt.x86_64 0:5.4.110-1.el7.elrepo
完毕!
[root@localhost yum.repos.d]#
上面下载好了安装包,也可以离线安装
[root@localhost ~]# yum localinstall kernel-lt-5.4.110-1.el7.elrepo.x86_64.rpm
已加载插件:fastestmirror, product-id, search-disabled-repos
正在检查 kernel-lt-5.4.110-1.el7.elrepo.x86_64.rpm: kernel-lt-5.4.110-1.el7.elrepo.x86_64
kernel-lt-5.4.110-1.el7.elrepo.x86_64.rpm 将被安装
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-lt.x86_64.0.5.4.110-1.el7.elrepo 将被 安装
--> 解决依赖关系完成
依赖关系解决
===============================================================================================================================================================================================
Package 架构 版本 源 大小
===============================================================================================================================================================================================
正在安装:
kernel-lt x86_64 5.4.110-1.el7.elrepo /kernel-lt-5.4.110-1.el7.elrepo.x86_64 227 M
事务概要
===============================================================================================================================================================================================
安装 1 软件包
总计:227 M
安装大小:227 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : kernel-lt-5.4.110-1.el7.elrepo.x86_64 1/1
验证中 : kernel-lt-5.4.110-1.el7.elrepo.x86_64 1/1
已安装:
kernel-lt.x86_64 0:5.4.110-1.el7.elrepo
完毕!
检查内核是否已安装
[root@localhost ~]# grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2
CentOS Linux (5.4.110-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (5.4.109-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-002e2c6979394d74a83b99811a2280c1) 7 (Core)
参考上面配置 kernel-lt-5.4.110-1 已经成功安装
设置系统内核默认启动项
查看系统内核默认启动项
[root@localhost ~]# grub2-editenv list
saved_entry=CentOS Linux (5.4.109-1.el7.elrepo.x86_64) 7 (Core)
修改系统内核启动项
[root@localhost ~]# grub2-set-default 'CentOS Linux (5.4.110-1.el7.elrepo.x86_64) 7 (Core)'
[root@localhost ~]# grub2-editenv list
saved_entry=CentOS Linux (5.4.110-1.el7.elrepo.x86_64) 7 (Core)
参考上面输出内容 此时,操作系统使用的内核已升级为5.4.110-1.el7.elrepo.x86_64
最后一步,需要将内核工具包一并升级
删除旧版本工具包
[root@localhost ~]# yum remove kernel-tools-libs
已加载插件:fastestmirror
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-tools-libs.x86_64.0.3.10.0-1160.el7 将被 删除
--> 正在处理依赖关系 kernel-tools-libs = 3.10.0-1160.el7,它被软件包 kernel-tools-3.10.0-1160.el7.x86_64 需要
--> 正在处理依赖关系 libcpupower.so.0()(64bit),它被软件包 kernel-tools-3.10.0-1160.el7.x86_64 需要
--> 正在检查事务
---> 软件包 kernel-tools.x86_64.0.3.10.0-1160.el7 将被 删除
--> 解决依赖关系完成
依赖关系解决
===============================================================================================================================================================================================
Package 架构 版本 源 大小
===============================================================================================================================================================================================
正在删除:
kernel-tools-libs x86_64 3.10.0-1160.el7 @anaconda 18 k
为依赖而移除:
kernel-tools x86_64 3.10.0-1160.el7 @anaconda 337 k
事务概要
===============================================================================================================================================================================================
移除 1 软件包 (+1 依赖软件包)
安装大小:355 k
是否继续?[y/N]:y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在删除 : kernel-tools-3.10.0-1160.el7.x86_64 1/2
正在删除 : kernel-tools-libs-3.10.0-1160.el7.x86_64 2/2
验证中 : kernel-tools-3.10.0-1160.el7.x86_64 1/2
验证中 : kernel-tools-libs-3.10.0-1160.el7.x86_64 2/2
删除:
kernel-tools-libs.x86_64 0:3.10.0-1160.el7
作为依赖被删除:
kernel-tools.x86_64 0:3.10.0-1160.el7
完毕!
[root@localhost ~]#
安装新版本工具包
[root@localhost ~]# yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-tools
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* elrepo-kernel: mirror-hk.koddos.net
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-lt-tools.x86_64.0.5.4.110-1.el7.elrepo 将被 安装
--> 正在处理依赖关系 kernel-lt-tools-libs = 5.4.110-1.el7.elrepo,它被软件包 kernel-lt-tools-5.4.110-1.el7.elrepo.x86_64 需要
--> 正在处理依赖关系 libcpupower.so.0()(64bit),它被软件包 kernel-lt-tools-5.4.110-1.el7.elrepo.x86_64 需要
--> 正在检查事务
---> 软件包 kernel-lt-tools-libs.x86_64.0.5.4.110-1.el7.elrepo 将被 安装
--> 解决依赖关系完成
依赖关系解决
===============================================================================================================================================================================================
Package 架构 版本 源 大小
===============================================================================================================================================================================================
正在安装:
kernel-lt-tools x86_64 5.4.110-1.el7.elrepo elrepo-kernel 202 k
为依赖而安装:
kernel-lt-tools-libs x86_64 5.4.110-1.el7.elrepo elrepo-kernel 91 k
事务概要
===============================================================================================================================================================================================
安装 1 软件包 (+1 依赖软件包)
总下载量:293 k
安装大小:486 k
Downloading packages:
(1/2): kernel-lt-tools-5.4.110-1.el7.elrepo.x86_64.rpm | 202 kB 00:00:00
(2/2): kernel-lt-tools-libs-5.4.110-1.el7.elrepo.x86_64.rpm | 91 kB 00:00:00
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计 312 kB/s | 293 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : kernel-lt-tools-libs-5.4.110-1.el7.elrepo.x86_64 1/2
正在安装 : kernel-lt-tools-5.4.110-1.el7.elrepo.x86_64 2/2
验证中 : kernel-lt-tools-5.4.110-1.el7.elrepo.x86_64 1/2
验证中 : kernel-lt-tools-libs-5.4.110-1.el7.elrepo.x86_64 2/2
已安装:
kernel-lt-tools.x86_64 0:5.4.110-1.el7.elrepo
作为依赖被安装:
kernel-lt-tools-libs.x86_64 0:5.4.110-1.el7.elrepo
完毕!
重启,选择新版本内核进入系统
查看内核版本
[root@localhost ~]# grub2-editenv list
saved_entry=CentOS Linux (5.4.110-1.el7.elrepo.x86_64) 7 (Core)
已上就是升级内核版本过程,觉得有用就给个赞吧
本人博客 欢迎来访!