zl程序教程

您现在的位置是:首页 >  系统

当前栏目

如何升级linux内核(centos7.9升级内核3.10版本到5.4版本)

Linux内核 如何 版本 升级 5.4 3.10
2023-09-11 14:21:18 时间

前言

环境: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

说明

由于需要安装jumpserver,而jumpserver官网显示需要4.0以上的内核,所以需要升级内核:

[root@jump ~]# uname -r						#查看内核版本
3.10.0-1160.71.1.el7.x86_64
 
[root@jump ~]# rpm -qa | grep kernel		#有很多内核的包
kernel-3.10.0-1160.el7.x86_64
kernel-3.10.0-1160.71.1.el7.x86_64
kernel-devel-3.10.0-1160.71.1.el7.x86_64
kernel-headers-3.10.0-1160.71.1.el7.x86_64
kernel-tools-libs-3.10.0-1160.71.1.el7.x86_64
kernel-tools-3.10.0-1160.71.1.el7.x86_64

升级内核版本

1、方法一、下载官网的稳定版本内核: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.19.14.tar.xz进行编译安装,由于内核编译安装不像平时的 ./confgue&& make && make install 那么简单,所以本次不讲这种编译安装方式。

2、方法二,使用yum 更新内核:
大多数 Linux 发行版提供自行维护的内核,可以通过 yum 或 rpm 等包管理系统升级。
ELRepo是一个为Linux提供驱动程序和内核映像的存储库,本篇内核升级方案就是采用ELRepo提供的内核通道。
ELRepo官网:http://elrepo.org/tiki/tiki-index.php

Import the public key:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org	#导入公钥

To install ELRepo for RHEL-7, SL-7 or CentOS-7:
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm	#下载并安装elrepo仓库

yum install yum-plugin-fastestmirror						#官网提示安装的,那就安装

https://elrepo.org/linux/kernel/el7/x86_64/RPMS/		#这里能离线下载到内核的rpm包,如果你的linux不联网,则可以离线下载安装包

#查看elrepo源里有什么版本的内核,可以看到有长期支持的版本5.4.216和稳定的主线版本6.0.0
# lt = long time     长期支持内核,采用长期支持版本(kernel-lt),更加稳定一些
# ml=mainline        稳定主线内核
[root@jump ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Available Packages
kernel-lt.x86_64                      5.4.216-1.el7.elrepo        elrepo-kernel
kernel-lt-devel.x86_64                5.4.216-1.el7.elrepo        elrepo-kernel
kernel-lt-doc.noarch                  5.4.216-1.el7.elrepo        elrepo-kernel
kernel-lt-headers.x86_64              5.4.216-1.el7.elrepo        elrepo-kernel
kernel-lt-tools.x86_64                5.4.216-1.el7.elrepo        elrepo-kernel
kernel-lt-tools-libs.x86_64           5.4.216-1.el7.elrepo        elrepo-kernel
kernel-lt-tools-libs-devel.x86_64     5.4.216-1.el7.elrepo        elrepo-kernel
kernel-ml.x86_64                      6.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-devel.x86_64                6.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-doc.noarch                  6.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-headers.x86_64              6.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools.x86_64                6.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools-libs.x86_64           6.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools-libs-devel.x86_64     6.0.0-1.el7.elrepo          elrepo-kernel
perf.x86_64                           5.19.12-1.el7.elrepo        elrepo-kernel
python-perf.x86_64                    5.19.12-1.el7.elrepo        elrepo-kernel
[root@jump ~]# 

yum --enablerepo=elrepo-kernel install kernel-lt	#安装长期稳定版本,稳定可靠,版本为4.4.238

#查看内核是否载入到grub2
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.4.216-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.71.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-20220727115107055496013495205931) 7 (Core)

刚刚安装的内核即0 : CentOS Linux (5.4.216-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初始化页面的第一个内核将作为默认内核,保存退出

#生成 grub 配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg		#生成grub 配置文件

#重启linux系统
init 6reboot

#重启完成,查看现在linux内核,已经变成5.4.216了
[root@jump ~]# uname -r
5.4.216-1.el7.elrepo.x86_64
[root@jump ~]# 

#查看系统中的全部内核,现在旧的内核还在
[root@jump ~]# rpm -qa | grep kernel
kernel-3.10.0-1160.el7.x86_64
kernel-lt-5.4.216-1.el7.elrepo.x86_64
kernel-3.10.0-1160.71.1.el7.x86_64
kernel-devel-3.10.0-1160.71.1.el7.x86_64
kernel-headers-3.10.0-1160.71.1.el7.x86_64
kernel-tools-libs-3.10.0-1160.71.1.el7.x86_64
kernel-tools-3.10.0-1160.71.1.el7.x86_64
[root@jump ~]# 

#可以选择移除全部旧内核版本的相关包(自行决定是否卸载)
#补充一句,Linux是支持多版本内核共存的,无非是系统启动的时候应用哪个版本内核而已
yum remove kernel-3.10.0-1160* 
yum remove kernel-devel-3.10.0-1160.71.1.el7.x86_64 kernel-headers-3.10.0-1160.71.1.el7.x86_64 \
 kernel-tools-libs-3.10.0-1160.71.1.el7.x86_64 kernel-tools-3.10.0-1160.71.1.el7.x86_64  

#发现卸载3.10.0-1160版本内核的时候把这些依赖给卸载了,所以现在重新安装这些依赖
yum install  gcc   gcc-c++ glibc-devel  glibc-headers

#重新安装5.4.216版本的这些包
yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt-doc kernel-lt-headers \
 kernel-lt-tools kernel-lt-tools-libs kernel-lt-tools-libs-devel

#查看现在的内核,都是5.4.216-1版本的了
[root@jump ~]# rpm -qa | grep kern
kernel-lt-tools-libs-5.4.216-1.el7.elrepo.x86_64
kernel-lt-tools-libs-devel-5.4.216-1.el7.elrepo.x86_64
kernel-lt-5.4.216-1.el7.elrepo.x86_64
kernel-lt-tools-5.4.216-1.el7.elrepo.x86_64
kernel-lt-doc-5.4.216-1.el7.elrepo.noarch
kernel-lt-headers-5.4.216-1.el7.elrepo.x86_64
kernel-lt-devel-5.4.216-1.el7.elrepo.x86_64
[root@jump ~]# 


#重启linux
init 6

一切正常,Linux内核升级完成。