Centos7 源码升级内核至5.16.10
# 依赖环境安装
[root@boy ~]# yum -y install gcc gcc-c++ kernel-devel kernel-headers bison flex ncurses-develqt-develhmaccalc zlib-devel binutils-devel elfutils-libelf-devel ncurses ncurses-devel openssl-devel
# 升级GCC版本,由于5.16.10源码对gcc版本有要求了,自动的gcc无法满足编译,安装gcc 8
[root@boy ~]# yum -y install centos-release-scl
[root@boy ~]# yum -y install devtoolset-8-gcc*
[root@boy ~]# scl enable devtoolset-8 bash
# 下载5.16.10 源码包
[root@boy ~]# wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.10.tar.xz -O /root/linux-5.16.10.tar.xz
# 解压源码包
[root@boy ~]# unxz -v linux-5.16.10.tar.xz
linux-5.16.10.tar.xz (1/1)
100 % 121.7 MiB / 1,098.9 MiB = 0.111 46 MiB/s 0:23
[root@boy ~]# tar -xf linux-5.16.10.tar
# 拷贝原有的内核配置文件,后续可在原有基础之上进行内核功能删减
[root@boy ~]# cd linux-5.16.10/
[root@boy linux-5.16.10]# cp /boot/config-$(uname -r) .config
[root@boy linux-5.16.10]# make menuconfig
# 开始编译并创建一个压缩的内核镜像,-j后边的数字表示并发编译,一般等于CPU core 数量
[root@boy linux-5.16.10]# make -j$(nproc)
# 安装内核modules,实际上就是把编译好的module拷贝到/lib/modules/5.16.10
[root@boy linux-5.16.10]# make modules_install
# 安装内核,安装完成后会在/boot目录生成三个文件,initramfs-5.16.10.img、System.map-5.16.10、vmlinuz-5.16.10
[root@boy linux-5.16.10]# make install
# 更新grub配置
[root@boy linux-5.16.10]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@boy linux-5.16.10]# grubby --set-default /boot/vmlinuz-5.16.10 #设置默认从新内核启动
# 重启系统
[root@boy ~]# reboot
# 查看重启后的内核版本
[root@boy ~]# uname -mrs
Linux 5.16.10 x86_64