Linux · 1 7 月, 2026 0

CentOS 7现代化改造:将Linux内核版本从3.10升级至6.6

写在前面的废话

自2024年官方彻底抛弃CentOS 7后,CentOS 7的默认Linux内核版本便永远定格在了3.10。

即使本人是一个“能用就行”主义者,但3.x的内核再怎么说也太老了。就比如BBR拥塞控制算法(2016年发布),支持的最低内核版本都是4.9。

许久之前,升级内核还可以用过yum install这种简单粗暴的方式,然而原先用来安装内核的仓库已经删库跑路。所以本文带你直接下载Linux内核的源码,并用编译源码的方式将内核版本升级至6.6.52。

为什么是6.6?
CentOS 7的glibc 2.17和内核工具链已经十分老旧,能稳定编译的最高内核版本大约是6.6 LTS。
据说6.7~6.9也能编译,但某些功能会自动禁用。而从6.10开始大量功能依赖新工具链,CentOS 7几乎无法完整编译。
同时6.6似乎也是最后一个不依赖Rust的LTS内核。老旧的工具链对Rust并不友好。

事前准备

如果你还没有安装编译所需的工具,且没有更新CentOS官方仓库地址,请先阅读这篇文章 完成仓库更新。

然后通过YUM安装编译工具:

yum groupinstall -y "Development Tools"
yum install -y ncurses-devel openssl-devel elfutils-libelf-devel bc flex bison

还有就是最重要的:为避免悲剧,更换内核前请注意备份系统!

接下来看我操作

  1. 在你觉得合适的目录创建脚本文件compile-kernal.sh,内容如下:
#!/bin/bash
set -e

KVER=${KVER:-6.6.52}
JOBS=${JOBS:-$(nproc)}

echo "[1/4] 下载内核源码..."
cd /usr/src
curl -LO https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-$KVER.tar.xz
tar -xf linux-$KVER.tar.xz
cd linux-$KVER

echo "[2/4] 生成配置..."
cp -v /boot/config-$(uname -r) .config || true
yes "" | make oldconfig

echo "[3/4] 编译内核 + 模块..."
make -j"$JOBS"
make -j"$JOBS" modules

echo "[4/4] 安装内核..."
make modules_install
make install
grub2-mkconfig -o /boot/grub2/grub.cfg

注意:该脚本执行的任务包括了内核安装。如果希望仅编译不安装,请删除脚本的最后4行(“[4/4] 安装内核”部分),并跳过以下步骤3~5。

  1. chmod +x ./compile-kernal.sh为脚本文件添加执行权限,然后root执行compile-kernal.sh

  2. 用以下命令查看内核列表,确定新内核在列表中的位置:

egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
  1. 设置内核启动顺序并重启
# 如果在上一步中新内核显示在列表第一位,那么这里的数字就是0。以此类推:
grub2-set-default 0
reboot
  1. 重启完成后,用uname -a命令确认内核升级完成。

写在最后的废话

有人说,换成更加现代操作系统不行吗?

还真不一定行。一个典型的例子就是阿里云那个最便宜的t6突发实例

CentOS 7在上面稳定运行了将近一坤年。前几天本人将其OS更换为RockyLinux 10。

谁曾想以前从未感觉到,这服务器性能低到令人发指。dnf update级别的命令可以让它直接宕机(就是连后台VNC进去都无法操作的那种),突发实例的CPU积分更是瞬间清零。

最后还是老老实实换回了CentOS 7,依旧能平稳运行。看来这古董系统还要再战半个世纪。