前言
环境:centos7.9 kernel版本:3.10.0-1160.71.1.el7.x86_64 kernel内核的官网:https://www.kernel.org/ 一个linux社区的仓库源,ELRepo官网:http://elrepo.org/tiki/tiki-index.php
说明
因为安装k8s的需要,需要更高版本的内核,以便让docker和k8s更加的稳定,所以需要把centos7.9的内核从3.10升级到5.4版本。
#查看内核版本
[root@k8s-node-61 ~]# uname -r
3.10.0-1160.114.2.el7.x86_64
#有很多内核的包
[root@k8s-node-61 ~]# rpm -qa|grep kernel
kernel-3.10.0-1160.114.2.el7.x86_64
kernel-3.10.0-1160.el7.x86_64
kernel-tools-3.10.0-1160.114.2.el7.x86_64
kernel-tools-libs-3.10.0-1160.114.2.el7.x86_64
联网升级内核版本
使用yum 更新内核: 大多数 Linux 发行版提供自行维护的内核,可以通过 yum 或 rpm 等包管理系统升级。 ELRepo是一个为Linux提供驱动程序和内核映像的存储库,本篇内核升级方案就是采用ELRepo提供的内核通道。 ELRepo官网:http://elrepo.org/tiki/tiki-index.php
导入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
下载并安装elrepo仓库
[root@k8s-node-61 ~]# yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
已加载插件:fastestmirror
elrepo-release-7.el7.elrepo.noarch.rpm | 8.7 kB 00:00:00
正在检查 /var/tmp/yum-root-R_vadl/elrepo-release-7.el7.elrepo.noarch.rpm: elrepo-release-7.0-6.el7.elrepo.noarch
/var/tmp/yum-root-R_vadl/elrepo-release-7.el7.elrepo.noarch.rpm 将被安装
正在解决依赖关系
--> 正在检查事务
---> 软件包 elrepo-release.noarch.0.7.0-6.el7.elrepo 将被 安装
--> 解决依赖关系完成
依赖关系解决
====================================================================================================================================
Package 架构 版本 源 大小
====================================================================================================================================
正在安装:
elrepo-release noarch 7.0-6.el7.elrepo /elrepo-release-7.el7.elrepo.noarch 5.0 k
事务概要
====================================================================================================================================
安装 1 软件包
总计:5.0 k
安装大小:5.0 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : elrepo-release-7.0-6.el7.elrepo.noarch 1/1
验证中 : elrepo-release-7.0-6.el7.elrepo.noarch 1/1
已安装:
elrepo-release.noarch 0:7.0-6.el7.elrepo
完毕!
官网提示安装的,那就安装
[root@k8s-node-61 ~]# yum install -y yum-plugin-fastestmirror
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* elrepo: hkg.mirror.rackspace.com
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
elrepo | 3.0 kB 00:00:00
elrepo/primary_db | 401 kB 00:00:00
软件包 yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch 已安装并且是最新版本
无须任何处理
[root@k8s-node-61 ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* elrepo-kernel: mirror.rackspace.com
elrepo-kernel | 3.0 kB 00:00:00
elrepo-kernel/primary_db | 2.2 MB 00:00:08
可安装的软件包
kernel-lt.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
perf.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
python-perf.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
这里能离线下载到内核的rpm包,如果你的linux不联网,则可以离线下载安装包 https://elrepo.org/linux/kernel/el7/x86_64/RPMS/
查看elrepo源里可用内核版本,可以看到有长期支持的版本5.4.277和稳定的主线版本7.0.0
-
lt = long time 长期支持内核,采用长期支持版本(kernel-lt),更加稳定一些
-
ml=mainline 稳定主线内核
root@k8s-node-61 ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* elrepo-kernel: mirror.rackspace.com
elrepo-kernel | 3.0 kB 00:00:00
elrepo-kernel/primary_db | 2.2 MB 00:00:08
可安装的软件包
kernel-lt.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 6.9.3-1.el7.elrepo elrepo-kernel
perf.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
python-perf.x86_64 5.4.277-1.el7.elrepo elrepo-kernel
安装长期稳定版本,稳定可靠,版本为5.4.277
[root@k8s-node-61 ~]# yum --enablerepo=elrepo-kernel install kernel-lt-5.4.277-1.el7.elrepo.x86_64
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* elrepo: hkg.mirror.rackspace.com
* elrepo-kernel: hkg.mirror.rackspace.com
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-lt.x86_64.0.5.4.277-1.el7.elrepo 将被 安装
--> 解决依赖关系完成
依赖关系解决
====================================================================================================================================
Package 架构 版本 源 大小
====================================================================================================================================
正在安装:
kernel-lt x86_64 5.4.277-1.el7.elrepo elrepo-kernel 50 M
事务概要
====================================================================================================================================
安装 1 软件包
总下载量:50 M
安装大小:230 M
Is this ok [y/d/N]: y
Downloading packages:
kernel-lt-5.4.277-1.el7.elrepo.x86_64.rpm | 50 MB 00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : kernel-lt-5.4.277-1.el7.elrepo.x86_64 1/1
验证中 : kernel-lt-5.4.277-1.el7.elrepo.x86_64 1/1
已安装:
kernel-lt.x86_64 0:5.4.277-1.el7.elrepo
完毕!
#安装5.4.277版本的这些依赖包
安装之前需要卸载低版本内核的kernel-tools和kernel-headers,不然会报冲突
[root@k8s-node-61 ~]# yum remove -y kernel-tools* kernel-headers*
已加载插件:fastestmirror
参数 kernel-headers* 没有匹配
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-tools.x86_64.0.3.10.0-1160.114.2.el7 将被 删除
---> 软件包 kernel-tools-libs.x86_64.0.3.10.0-1160.114.2.el7 将被 删除
--> 解决依赖关系完成
依赖关系解决
====================================================================================================================================
Package 架构 版本 源 大小
====================================================================================================================================
正在删除:
kernel-tools x86_64 3.10.0-1160.114.2.el7 @updates 337 k
kernel-tools-libs x86_64 3.10.0-1160.114.2.el7 @updates 18 k
事务概要
====================================================================================================================================
移除 2 软件包
安装大小:355 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在删除 : kernel-tools-3.10.0-1160.114.2.el7.x86_64 1/2
正在删除 : kernel-tools-libs-3.10.0-1160.114.2.el7.x86_64 2/2
验证中 : kernel-tools-libs-3.10.0-1160.114.2.el7.x86_64 1/2
验证中 : kernel-tools-3.10.0-1160.114.2.el7.x86_64 2/2
删除:
kernel-tools.x86_64 0:3.10.0-1160.114.2.el7 kernel-tools-libs.x86_64 0:3.10.0-1160.114.2.el7
完毕!
[root@k8s-node-61 ~]# yum --enablerepo=elrepo-kernel install kernel-lt-devel-5.4.277-1.el7.elrepo.x86_64 \
> kernel-lt-doc-5.4.277-1.el7.elrepo.noarch \
> kernel-lt-headers-5.4.277-1.el7.elrepo.x86_64 \
> kernel-lt-tools-5.4.277-1.el7.elrepo.x86_64 \
> kernel-lt-tools-libs-5.4.277-1.el7.elrepo.x86_64 \
> kernel-lt-tools-libs-devel-5.4.277-1.el7.elrepo.x86_64 -y
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* elrepo: hkg.mirror.rackspace.com
* elrepo-kernel: hkg.mirror.rackspace.com
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-lt-devel.x86_64.0.5.4.277-1.el7.elrepo 将被 安装
---> 软件包 kernel-lt-doc.noarch.0.5.4.277-1.el7.elrepo 将被 安装
--> 正在处理依赖关系 perl(Data::Dumper),它被软件包 kernel-lt-doc-5.4.277-1.el7.elrepo.noarch 需要
---> 软件包 kernel-lt-headers.x86_64.0.5.4.277-1.el7.elrepo 将被 安装
---> 软件包 kernel-lt-tools.x86_64.0.5.4.277-1.el7.elrepo 将被 安装
---> 软件包 kernel-lt-tools-libs.x86_64.0.5.4.277-1.el7.elrepo 将被 安装
---> 软件包 kernel-lt-tools-libs-devel.x86_64.0.5.4.277-1.el7.elrepo 将被 安装
--> 正在检查事务
---> 软件包 perl-Data-Dumper.x86_64.0.2.145-3.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
====================================================================================================================================
Package 架构 版本 源 大小
====================================================================================================================================
正在安装:
kernel-lt-devel x86_64 5.4.277-1.el7.elrepo elrepo-kernel 13 M
kernel-lt-doc noarch 5.4.277-1.el7.elrepo elrepo-kernel 8.2 M
kernel-lt-headers x86_64 5.4.277-1.el7.elrepo elrepo-kernel 1.3 M
kernel-lt-tools x86_64 5.4.277-1.el7.elrepo elrepo-kernel 230 k
kernel-lt-tools-libs x86_64 5.4.277-1.el7.elrepo elrepo-kernel 119 k
kernel-lt-tools-libs-devel x86_64 5.4.277-1.el7.elrepo elrepo-kernel 97 k
为依赖而安装:
perl-Data-Dumper x86_64 2.145-3.el7 base 47 k
事务概要
====================================================================================================================================
安装 6 软件包 (+1 依赖软件包)
总下载量:23 M
安装大小:84 M
Downloading packages:
(1/7): kernel-lt-doc-5.4.277-1.el7.elrepo.noarch.rpm | 8.2 MB 00:00:01
(2/7): kernel-lt-devel-5.4.277-1.el7.elrepo.x86_64.rpm | 13 MB 00:00:01
(3/7): kernel-lt-headers-5.4.277-1.el7.elrepo.x86_64.rpm | 1.3 MB 00:00:00
(4/7): kernel-lt-tools-5.4.277-1.el7.elrepo.x86_64.rpm | 230 kB 00:00:00
(5/7): kernel-lt-tools-libs-5.4.277-1.el7.elrepo.x86_64.rpm | 119 kB 00:00:00
(6/7): kernel-lt-tools-libs-devel-5.4.277-1.el7.elrepo.x86_64.rpm | 97 kB 00:00:00
(7/7): perl-Data-Dumper-2.145-3.el7.x86_64.rpm | 47 kB 00:00:00
------------------------------------------------------------------------------------------------------------------------------------
总计 12 MB/s | 23 MB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : kernel-lt-tools-libs-5.4.277-1.el7.elrepo.x86_64 1/7
正在安装 : kernel-lt-tools-5.4.277-1.el7.elrepo.x86_64 2/7
正在安装 : perl-Data-Dumper-2.145-3.el7.x86_64 3/7
正在安装 : kernel-lt-doc-5.4.277-1.el7.elrepo.noarch 4/7
正在安装 : kernel-lt-tools-libs-devel-5.4.277-1.el7.elrepo.x86_64 5/7
正在安装 : kernel-lt-headers-5.4.277-1.el7.elrepo.x86_64 6/7
正在安装 : kernel-lt-devel-5.4.277-1.el7.elrepo.x86_64 7/7
验证中 : kernel-lt-tools-libs-5.4.277-1.el7.elrepo.x86_64 1/7
验证中 : kernel-lt-tools-libs-devel-5.4.277-1.el7.elrepo.x86_64 2/7
验证中 : kernel-lt-devel-5.4.277-1.el7.elrepo.x86_64 3/7
验证中 : perl-Data-Dumper-2.145-3.el7.x86_64 4/7
验证中 : kernel-lt-tools-5.4.277-1.el7.elrepo.x86_64 5/7
验证中 : kernel-lt-doc-5.4.277-1.el7.elrepo.noarch 6/7
验证中 : kernel-lt-headers-5.4.277-1.el7.elrepo.x86_64 7/7
已安装:
kernel-lt-devel.x86_64 0:5.4.277-1.el7.elrepo kernel-lt-doc.noarch 0:5.4.277-1.el7.elrepo
kernel-lt-headers.x86_64 0:5.4.277-1.el7.elrepo kernel-lt-tools.x86_64 0:5.4.277-1.el7.elrepo
kernel-lt-tools-libs.x86_64 0:5.4.277-1.el7.elrepo kernel-lt-tools-libs-devel.x86_64 0:5.4.277-1.el7.elrepo
作为依赖被安装:
perl-Data-Dumper.x86_64 0:2.145-3.el7
完毕!
查看内核是否载入到grub2
/etc/grub2.cfg文件是/boot/grub2/grub.cfg文件的软链接,grub.cfg文件是grub引导加载器的配置文件
注意:如果服务器使用efi模式启动,那么可能没有/boot/grub2/grub.cfg文件,其对应的配置文件可能是/boot/efi/EFI/centos/grub.cfg
[root@k8s-node-63 ~]# awk -F ' ' '$1=="menuentry " {print i++ " : " $2$3$4}' /boot/efi/EFI/centos/grub.cfg
0 : 'CentOSLinux(5.4.277-1.el7.elrepo.x86_64)
1 : 'CentOSLinux(3.10.0-1160.114.2.el7.x86_64)
2 : 'CentOSLinux(3.10.0-1160.el7.x86_64)
3 : 'CentOSLinux(0-rescue-12a7d83936a3437680716aca984029aa)
刚刚安装的内核即0 : CentOS Linux (5.4.257-1.el7.elrepo.x86_64) 7 (Core)
我们需要把grub默认设置为0
可以通过 grub2-set-default 0命令设置或编辑 vim /etc/default/grub 文件来设置
vim /etc/default/grub GRUB_DEFAULT=0 #这句改为GRUB_DEFAULT=0 意思是GRUB初始化页面的第一个内核将作为默认内核,保存退出
检查默认内核是不是5.4
grubby --default-kernel
[root@k8s-node-63 ~]# grubby --default-kernel
/boot/vmlinuz-5.4.277-1.el7.elrepo.x86_64
生成 grub 配置文件
[root@k8s-node-63 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.277-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.4.277-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.114.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.114.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-12a7d83936a3437680716aca984029aa
Found initrd image: /boot/initramfs-0-rescue-12a7d83936a3437680716aca984029aa.img
done
重启linux系统
reboot
重启完成,查看现在linux内核,已经变成5.4.257了
[root@k8s-node-61 ~]# uname -r
5.4.277-1.el7.elrepo.x86_64
查看系统中的全部内核,现在旧的3.10内核还在
[root@k8s-node-61 ~]# rpm -qa |grep kernel
kernel-3.10.0-1160.114.2.el7.x86_64
kernel-lt-5.4.277-1.el7.elrepo.x86_64
kernel-lt-doc-5.4.277-1.el7.elrepo.noarch
kernel-3.10.0-1160.el7.x86_64
kernel-lt-tools-libs-5.4.277-1.el7.elrepo.x86_64
kernel-lt-tools-libs-devel-5.4.277-1.el7.elrepo.x86_64
kernel-lt-devel-5.4.277-1.el7.elrepo.x86_64
kernel-lt-tools-5.4.277-1.el7.elrepo.x86_64
kernel-lt-headers-5.4.277-1.el7.elrepo.x86_64
可以选择移除全部旧内核版本的相关包(自行决定是否卸载)
补充一句,Linux是支持多版本内核共存的,无非是系统启动的时候应用哪个版本内核而已
[root@k8s-node-61 ~]# yum remove kernel-3.10.0-1160* -y
已加载插件:fastestmirror
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel.x86_64.0.3.10.0-1160.el7 将被 删除
---> 软件包 kernel.x86_64.0.3.10.0-1160.114.2.el7 将被 删除
--> 解决依赖关系完成
依赖关系解决
====================================================================================================================================
Package 架构 版本 源 大小
====================================================================================================================================
正在删除:
kernel x86_64 3.10.0-1160.el7 @anaconda 64 M
kernel x86_64 3.10.0-1160.114.2.el7 @updates 66 M
事务概要
====================================================================================================================================
移除 2 软件包
安装大小:130 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在删除 : kernel.x86_64 1/2
正在删除 : kernel.x86_64 2/2
验证中 : kernel-3.10.0-1160.el7.x86_64 1/2
验证中 : kernel-3.10.0-1160.114.2.el7.x86_64 2/2
删除:
kernel.x86_64 0:3.10.0-1160.el7 kernel.x86_64 0:3.10.0-1160.114.2.el7
完毕!
[root@k8s-node-61 ~]# rpm -qa |grep kernel
kernel-lt-5.4.277-1.el7.elrepo.x86_64
kernel-lt-doc-5.4.277-1.el7.elrepo.noarch
kernel-lt-tools-libs-5.4.277-1.el7.elrepo.x86_64
kernel-lt-tools-libs-devel-5.4.277-1.el7.elrepo.x86_64
kernel-lt-devel-5.4.277-1.el7.elrepo.x86_64
kernel-lt-tools-5.4.277-1.el7.elrepo.x86_64
kernel-lt-headers-5.4.277-1.el7.elrepo.x86_64
查看grub2已经没有3.10的内核了
[root@k8s-node-61 ~]# awk -F ' ' '$1=="menuentry" {print i++ " : " $2$3$4}' /boot/efi/EFI/centos/grub.cfg
0 : 'CentOSLinux(5.4.277-1.el7.elrepo.x86_64)
1 : 'CentOSLinux(0-rescue-12a7d83936a3437680716aca984029aa)
发现卸载3.10.0-1160版本内核的时候把这些依赖给卸载了,所以现在重新安装这些依赖
yum install gcc gcc-c++ glibc-devel glibc-headers -y
查看现在的内核,都是5.4.257-1版本的了
[root@jump ~]# rpm -qa | grep kern
kernel-lt-tools-5.4.257-1.el7.elrepo.x86_64
kernel-lt-devel-5.4.257-1.el7.elrepo.x86_64
kernel-lt-tools-libs-5.4.257-1.el7.elrepo.x86_64
kernel-lt-tools-libs-devel-5.4.257-1.el7.elrepo.x86_64
kernel-lt-headers-5.4.257-1.el7.elrepo.x86_64
kernel-lt-5.4.257-1.el7.elrepo.x86_64
kernel-lt-doc-5.4.257-1.el7.elrepo.noarch
再次重启linux(可不用重启)
reboot
一切正常,Linux内核升级完成。