如何升级linux内核(centos7.9升级内核3.10版本到5.4版本)
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 6 或 reboot
#重启完成,查看现在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内核升级完成。
相关文章
- Linux内核升级、GRUB2引导故障处理与密码破解
- Linux 有问必答:如何删除 Ubuntu 上不再使用的旧内核
- Linux 有问必答: 如何在红帽系linux中编译Ixgbe驱动
- 你知道 Linux 内核是如何构建的吗?
- Linux 有问必答:如何知道进程运行在哪个 CPU 内核上?
- 如何设置linux挂载nfs为根文件系统启动内核?
- linux下如何从FIT镜像(*.itb)中分离出内核、根文件系统和设备树?
- linux内核中如何访问寄存器?
- 如何单独编译Linux内核源码中的驱动为可加载模块?
- openwrt如何打开linux内核的CONFIG_DEVMEM选项?
- linux内核中的regmap是如何初始化的?
- linux内核是如何支持深度睡眠(deep sleep)方式的?
- linux内核中的MFD子系统
- openwrt下如何只编译linux内核
- 如何打开linux内核中dev_dbg的开关
- 理解Linux内核
- Linux 内核管理类
- Linux 内核 ksets 之上的操作
- Linux 内核usb_bulk_msg 接口
- 《构建高可用Linux服务器 第3版》—— 3.7 小结
- linux 内核抢占
- 《Linux内核修炼之道》——分析内核源码如何入手?(下)
- Linux学习笔记(12)linux文件目录与用户管理
- 【Linux】linux下用python获取底层硬件信息接口