CentOS7.9升级3.10内核至5.4
在 CentOS 使用过程中,难免需要升级内核,但有时候因为源码编译依赖问题,不一定所有程序都支持最新内核版本,所以以下将介绍三种升级内核方式。
关于内核种类:
kernel-ml 中的ml是英文【 mainline stable 】的缩写,elrepo-kernel中罗列出来的是最新的稳定主线版本。
kernel-lt 中的lt是英文【 long term support 】的缩写,elrepo-kernel中罗列出来的长期支持版本。
YUM
检查内核版本
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//
[elrepo]
name=elrepo
baseurl=/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/ | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'
[root@node1 ~]# cat /etc/ | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'
awk: warning: escape sequence `\'' treated as plain `''
0 : CentOS Linux (5.4.278-1..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 历史版:
/elrepo-archive-archive/kernel/el7/x86_64/RPMS/
下载文件
wget /elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1..x86_64.rpm
wget /elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1..x86_64.rpm
wget /elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1..x86_64.rpm
安装内核
rpm -ivh kernel-lt-4.4.215-1..x86_64.rpm
rpm -ivh kernel-lt-devel-4.4.215-1..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..x86_64
kernel-lt-5.4.226-1..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..x86_64
设置启动内核
查看启动顺序
cat /etc/ | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'
[root@node1 ~]# cat /etc/ | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'
awk: warning: escape sequence `\'' treated as plain `''
0 : CentOS Linux (5.4.226-1..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
获取内核源码
清华大学镜像站:/kernel/
其他源码安装包下载地址:/pub/linux/kernel/
这两个格式都可以的,压缩率更高,文件更小。
在线下载:
wget /pub/linux/kernel//linux-5.4.
解压内核代码
将其解压后进入源码目录:
tar -xvJf linux-5.4.
为确保内核树绝对干净,进入内核目录并执行 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/
CentOS Linux (4.17.11-1..x86_64) 7 (Core)
CentOS Linux (4.9.9-1..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