方案一
直接基于 RPM 在线升级(简单,速度快)
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y
# (选项一)升级最新版内核
yum --enablerepo=elrepo-kernel install kernel-ml -y
# (选项二)升级到指定版本
## 访问 https://linux.cc.iitk.ac.in/mirror/centos/elrepo/kernel/el7/x86_64/RPMS/ 查看支持版本列表
## 下载并安装(例如 6.5.2 版本)
wget https://linux.cc.iitk.ac.in/mirror/centos/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-6.5.2-1.el7.elrepo.x86_64.rpm
yum localinstall kernel-ml-6.5.2-1.el7.elrepo.x86_64.rpm
reboot
官方链接:
- https://elrepo.org/wiki/doku.php?id=start
- https://elrepo.org/wiki/doku.php?id=kernel-ml
方案二
基于源码编译 RPM 安装包(适合源码定制场景)
# 准备编译环境
yum groupinstall "Development Tools" -y && \
yum install -y \
openssl-devel \
rpm-build \
redhat-rpm-config \
asciidoc \
hmaccalc \
perl-ExtUtils-Embed \
pesign \
xmlto \
audit-libs-devel \
binutils-devel \
elfutils-devel \
elfutils-libelf-devel \
ncurses-devel \
newt-devel \
numactl-devel \
pciutils-devel \
python-devel \
zlib-devel
# 更新 gcc 版本
yum install centos-release-scl devtoolset-8-gcc* -y
scl enable devtoolset-8 bash
# 下载指定版本源码
wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/linux-6.5.2.tar.gz
tar -zxvf linux-6.5.2.tar.gz
cd linux-6.5.2
# 设置编译选项,可以直接拷贝当前机器的配置(文件名可能不同,通过 ls /boot 自己找下)
cp /boot/config-3.10.0-1160.el7.x86_64 .config
## 在如下 make menuconfig 命令弹出的界面
### (可选)选择 General setup -> Local version -> 输入自己内核的定制名字,例如 -china,
### 如果不想改任何内容,直接保存退出
make menuconfig
# 执行编译
make INSTALL_MOD_STRIP=1 binrpm-pkg -j 8
## 编译结束会看到编译好的 RPM 包输出路径,例如 /root/rpmbuild/RPMS/x86_64
# 安装编译生成的 rpm 安装包(同时可拷贝到其它机器用于内核升级)
cd /root/rpmbuild/RPMS/x86_64
yum localinstall *
reboot
验证升级后的内核版本
uname -r
6.5.2-china
各版本源代码下载地址:https://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/
设置默认内核版本
升级新内核后,需要在启动时选择才能使用,比较麻烦。
可以通过如下方法设置默认选中升级后的内核版本:
# 查看可以使用的内核
cat /boot/grub2/grub.cfg | grep -v rescue | grep ^menuentry
# 设置默认内核,例如 CentOS Linux (6.5.2-china) 7 (Core)
grub2-set-default 'CentOS Linux (6.5.2-china) 7 (Core)'
# 查看当前启动内核版本
grub2-editenv list
reboot
内核核心文件列表
- /boot/config-6.5.2-china 一个文本文件,存储内核编译配置
- /boot/vmlinuz-6.5.2-china 内核映像文件,包含操作系统内核代码和数据,内核本体
- /boot/System.map-6.5.2-china 包含内核符号和地址信息的文本文件,主要用于内核开发、调试和系统管理
- /boot/initramfs-6.5.2-china.img 内存中的临时根文件系统,用于在 Linux 系统启动过程中提供必要的工具和驱动程序,以便在实际的根文件系统挂载之前进行系统初始化
- /usr/lib/modules/6.5.2-china 一个文件夹,保存与内核配套的模块,可以使用 modprobe 加载内核模块