教你升级Centos内核(自编译方式)

前言:为什么要升级内核

内核是操作系统的核心,它的主要任务是管理硬件资源和提供系统服务。内核的更新通常有以下几个原因:

  • 性能提升:新的内核可能会提供更好的性能,包括更快的启动时间、更快的文件系统访问和更快的网络传输速度等。
  • 安全性提升:新的内核通常修复了已知的漏洞和安全问题,提高了系统的安全性和稳定性。
  • 新的硬件支持:新的内核可能支持更多的硬件设备和技术。
  • 新的功能支持:新的内核通常会提供新的功能和改进,例如更好的文件系统支持、更好的虚拟化支持等。

准备工作

安装SCL扩展源

yum -y install centos-release-scl

更换阿里源

echo > /etc/yum.repos.d/CentOS-SCLo-scl.repo
cat > /etc/yum.repos.d/CentOS-SCLo-scl.repo <<-EOF
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=http://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://mirrors.aliyun.com/centos/7/sclo/x86_64/sclo/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
EOF
yum clean all && yum makecache && yum update -y

安装编译依赖

yum install -y gcc make git ctags ncurses-devel openssl-devel
yum install -y bison flex elfutils-libelf-devel bc
yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils

启用SCL环境

scl enable devtoolset-11 bash
echo "source /opt/rh/devtoolset-11/enable" >>/etc/profile

编译过程

获取Kernel源码

可以访问https://mirrors.aliyun.com/linux-kernel/获取最新版本的Kernel

yum install -y wget && wget https://mirror.tuna.tsinghua.edu.cn/kernel/v6.x/linux-6.9.9.tar.xz && tar -xvJf linux-6.9.9.tar.xz && rm -rf linux-6.9.9.tar.xz && cd linux-6.9.9

查看当前Linux内核版本

uname -rs

20241114164447553-image

确保内核树足够干净

make clean && make mrproper

复制配置文件

如果你/boot目录下有两个config-xxxx的文件,选择版本比较大的,即可!

假设我的配置文件是/boot/config-3.10.0-1160.119.1.el7.x86_64 

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

高级配置

y 是启用, n 是禁用, m 是需要时启用.
make menuconfig: 老的 ncurses 界面,被 nconfig 取代
make nconfig: 新的命令行 ncurses 界面

即使你不配置任何东西,你也需要进入保存一下!

进入后按ESC,选择save

20241114170401412-image

编译并安装内核

编译安装大概需要30-40分钟,请耐心等待!

make -j$(nproc)  && make modules_install install

20241114170519511-image

20241114173156738-image

如果卡在 INSTALL /boot 耐心等待即可

设置启动项

如果新内核有问题,可以通过更改启动顺序改回原来内核

# 查看grub启动顺序
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
# 设置启动顺序
grub2-set-default 0
# 重启生效
reboot

20241114173454454-image

卸载内核

查看内核版本

uname -rs

20241114173628493-image

查看所有内核

rpm -qa | grep kernel

20241114173741467-image

删除内核

请在确定系统无其他问题情况下执行
yum remove -y kernel-*
reboot

20241114174119813-image

清理环境:

rm -rf ~/linux*

Ok!下课!(本文编写耗时3小时)

参考:

CentOS 7升级内核的三种方式(yum/rpm/源码) - Noleaf - 博客园

Centos7下升级gcc/g++版本(简单 + 避坑)_devtoolset-11-gcc-CSDN博客


广告:

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 共3条

请登录后发表评论