CentOS7.9升级3.10内核至5.4

运维小王 2024-08-22 16:07:23 阅读 53

CentOS7.9升级3.10内核至5.4

在 CentOS 使用过程中,难免需要升级内核,但有时候因为源码编译依赖问题,不一定所有程序都支持最新内核版本,所以以下将介绍三种升级内核方式。

关于内核种类:

kernel-ml 中的ml是英文【 mainline stable 】的缩写,elrepo-kernel中罗列出来的是最新的稳定主线版本。

kernel-lt 中的lt是英文【 long term support 】的缩写,elrepo-kernel中罗列出来的长期支持版本。

YUM

检查内核版本

<code>uname -r

[root@node1 ~]# uname -r

3.10.0-1160.119.1.el7.x86_64

显示为3.10,查看关于内核的包

rpm -qa |grep kernel

[root@node1 ~]# rpm -qa |grep kernel

kernel-3.10.0-1160.119.1.el7.x86_64

kernel-3.10.0-1160.el7.x86_64

kernel-tools-libs-3.10.0-1160.119.1.el7.x86_64

kernel-tools-3.10.0-1160.119.1.el7.x86_64

添加阿里源

cat <<EOF > /etc/yum.repos.d/elrepo.repo

[elrepo]

name=elrepo

baseurl=https://mirrors.aliyun.com/elrepo/archive/kernel/el7/x86_64

gpgcheck=0

enabled=1

EOF

重建yum缓存

yum clean all && yum makecache

查看yum仓库中的内核包

yum list --showduplicate kernel*

安装内核

yum install -y kernel-lt kernel-lt-devel

查看启动内核

cat /etc/grub2.cfg | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'

[root@node1 ~]# cat /etc/grub2.cfg | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'

awk: warning: escape sequence `\'' treated as plain `''

0 : CentOS Linux (5.4.278-1.el7.elrepo.x86_64) 7 (Core)

1 : CentOS Linux (3.10.0-1160.119.1.el7.x86_64) 7 (Core)

2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)

3 : CentOS Linux (0-rescue-89ca0c0544ae4eabb7417e2850f8025d) 7 (Core)

设置启动内核

grub2-set-default 0

重启,查看是否生效

reboot

uname -r

RPM

检查内核版本

uname -r

查找版本

因 ELRepo 源都是最新版本,所以旧版本内核只能手动下载。

查找 kernel rpm 历史版:

http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/

下载文件

wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm

wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm

wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm

安装内核

rpm -ivh kernel-lt-4.4.215-1.el7.elrepo.x86_64.rpm

rpm -ivh kernel-lt-devel-4.4.215-1.el7.elrepo.x86_64.rpm

# 或者一键安装所有

rpm -Uvh *.rpm

查看启动内核

[root@node1 ~]# rpm -qa | grep kernel

kernel-3.10.0-1160.119.1.el7.x86_64

kernel-3.10.0-1160.el7.x86_64

kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64

kernel-lt-5.4.226-1.el7.elrepo.x86_64

kernel-tools-libs-3.10.0-1160.119.1.el7.x86_64

kernel-tools-3.10.0-1160.119.1.el7.x86_64

kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64

设置启动内核

查看启动顺序

cat /etc/grub2.cfg | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'

[root@node1 ~]# cat /etc/grub2.cfg | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'

awk: warning: escape sequence `\'' treated as plain `''

0 : CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)

1 : CentOS Linux (3.10.0-1160.119.1.el7.x86_64) 7 (Core)

2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)

3 : CentOS Linux (0-rescue-89ca0c0544ae4eabb7417e2850f8025d) 7 (Core)

设置启动顺序

grub2-set-default 0

重启生效

reboot

源码安装

安装核心软件包

yum install -y gcc make git ctags ncurses-devel openssl-devel

yum install -y bison flex elfutils-libelf-devel bc

创建内核编译目录

使用 home 下的 kernelbuild 目录

mkdir ~/kernelbuild

获取内核源码

清华大学镜像站:https://mirror.tuna.tsinghua.edu.cn/kernel/

其他源码安装包下载地址:https://mirrors.edge.kernel.org/pub/linux/kernel/

linux-4.xx.xx.tar.xz

linux-4.xx.xx.tar.gz

这两个格式都可以的,tar.xz压缩率更高,文件更小。

在线下载:

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.266.tar.xz

解压内核代码

将其解压后进入源码目录:

tar -xvJf linux-5.4.266.tar.xz

为确保内核树绝对干净,进入内核目录并执行 make mrproper 命令:

cd linux-5.4.266

make clean && make mrproper

内核配置

复制当前的内核配置文件

config-3.10.0-1160.el7.x86_64是我当前环境的内核配置文件,根据实际情况修改

cp /boot/config-3.10.0-1160.el7.x86_64 .config

高级配置

y 是启用, n 是禁用, m 是需要时启用.

make menuconfig # 老的 ncurses 界面,被 nconfig 取代

make nconfig # 新的命令行 ncurses 界面

编译和安装

编译内核

如果你是四核的机器,x可以是8

make -j x

安装内核

编译完内核后安装:Warning: 从这里开始,需要 root 权限执行命令,否则会失败.

make modules_install install

查看启动内核

[root@localhost ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg

CentOS Linux (4.17.11-1.el7.elrepo.x86_64) 7 (Core)

CentOS Linux (4.9.9-1.el7.elrepo.x86_64) 7 (Core)

CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)

CentOS Linux (0-rescue-b91f945269084aa98e8257311ee713c5) 7 (Core)

设置启动内核

grub2-set-default 0

重启生效

reboot



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。