#原创分享#CentOS 7 编译安装最新版内核 Linux Kernel 6.5.2
  

ling218cn 47243人觉得有帮助

{{ttag.title}}
本帖最后由 ling218cn 于 2023-9-14 12:51 编辑

实验环境
- CentOS 7.9
- Linux Kernel 6.5.2

实验需求
为我的 CentOS7.9 虚拟机编译安装最新内核版本
CentOS7.9 升级前的内核版本:
[root@localhost ~]# uname -r
3.10.0-1160.95.1.el7.x86_64

CentOS7.9 升级后的内核版本:
[root@localhost ~]# uname -sr
Linux 6.5.2

实验解法

1、安装编译环境
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 \
        rpm-build

2、更新GCC版本
CentOS7 自带的 GCC 是 4.8.5 版本,编译内核会导致报错
以下是安装新的GCC操作:(多GCC版本共存)
yum install scl-utils centos-release-scl devtoolset-8-gcc* -y
scl enable devtoolset-8 bash  # 该操作允许GCC多版本共存

以下是永久替换旧的GCC操作:(只使用GCC新版本)
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc

mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++

3、下载内核源代码并解压内核源代码
从清华大学镜像源下载 Linux Kernel 6.5.2 的源代码包。
注意:一定要执行 `cd linux-6.5.2` 命令,因为接下的操作默认都是这该目录下操作的。
tar -zxvf linux-6.5.2.tar.gz
cd linux-6.5.2

4、配置 config
方法一:执行以下这个命令,会进入一个配置界面,如果看不懂就保持默认配置,Tab键选定 `save` 然后回车,根据提示保存 `.config` 文件。
make menuconfig

方法二:根据现有内核参数去生成新的配置参数文件 `.config`
`3.10.0-1160.95.1.el7.x86_64` 这个文件在你的机器里可能并不相符,可以执行 `ls -l /boot/` 命令查看你的这个文件名称。
cp /boot/config-3.10.0-1160.95.1.el7.x86_64 .config
make oldconfig # 一路回车

5、编译安装内核
`-j 12` 参数是因为我给虚拟机CPU分配了12核心,根据自己的机器情况修改。
`make INSTALL_MOD_STRIP=1 modules_install > /dev/null` 把内核模块的 debug 信息去掉,节约磁盘空间
make -j 12 all
make INSTALL_MOD_STRIP=1 modules_install > /dev/null && make modules_install && make install

6、设置以后默认从新的 Kernel 启动
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg && sudo grub2-set-default 0 && sudo grub2-mkconfig -o /boot/grub2/grub.cfg

7、编译成 rpm 包
编译出的 rpm 包可以在其他的 CeonOS7.9 机器上直接安装升级内核。
如果需要压缩体积,可以将 `make rpm-pkg -j 12` 换成 `make INSTALL_MOD_STRIP=1 rpm-pkg -j 12`
命令执行完成后,会在当前目录的 `~/rpmbuild/RPMS/x86_64/` 下出现三个 rpm 安装包
在其他CentOS7机器上安装这三个 rpm 包,就可以更新内核了。
make rpm-pkg -j 12
make INSTALL_MOD_STRIP=1 rpm-pkg -j 12
yum localinstall kernel* -y

安装这三个 rpm 包后,还需要更新一下启动项。
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg && sudo grub2-set-default 0 && sudo grub2-mkconfig -o /boot/grub2/grub.cfg

8、删除多余内核
使用 `uname -a` 查看当前使用的内核
[root@localhost ~]# uname -a
Linux localhost.localdomain 6.5.2 #1 SMP PREEMPT_DYNAMIC Fri Sep  8 13:10:46 CST 2023 x86_64 x86_64 x86_64 GNU/Linux

使用 `rpm -qa|grep kernel` 查看通过 `rpm` 安装的内核
[root@localhost ~]# rpm -qa | grep kernel
kernel-tools-libs-3.10.0-1160.95.1.el7.x86_64
kernel-3.10.0-1160.95.1.el7.x86_64
kernel-tools-3.10.0-1160.95.1.el7.x86_64
kernel-debug-devel-3.10.0-1160.95.1.el7.x86_64
kernel-headers-3.10.0-1160.95.1.el7.x86_64
kernel-3.10.0-1160.el7.x86_64

使用 `yum remove [多余内核]` 删除多余内核,执行多次删除多余的 kernel
[root@localhost ~]# yum remove kernel-tools-libs-3.10.0-1160.95.1.el7.x86_64
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package kernel-tools-libs.x86_64 0:3.10.0-1160.95.1.el7 will be erased
--> Processing Dependency: kernel-tools-libs = 3.10.0-1160.95.1.el7 for package: kernel-tools-3.10.0-1160.95.1.el7.x86_64
--> Processing Dependency: libcpupower.so.0()(64bit) for package: kernel-tools-3.10.0-1160.95.1.el7.x86_64
--> Running transaction check
---> Package kernel-tools.x86_64 0:3.10.0-1160.95.1.el7 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
Package                         Arch                 Version                              Repository              Size
========================================================================================================================
Removing:
kernel-tools-libs               x86_64               3.10.0-1160.95.1.el7                 @updates                18 k
Removing for dependencies:
kernel-tools                    x86_64               3.10.0-1160.95.1.el7                 @updates               337 k

Transaction Summary
========================================================================================================================
Remove  1 Package (+1 Dependent package)

Installed size: 355 k
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : kernel-tools-3.10.0-1160.95.1.el7.x86_64                                                             1/2
  Erasing    : kernel-tools-libs-3.10.0-1160.95.1.el7.x86_64                                                        2/2
  Verifying  : kernel-tools-libs-3.10.0-1160.95.1.el7.x86_64                                                        1/2
  Verifying  : kernel-tools-3.10.0-1160.95.1.el7.x86_64                                                             2/2

Removed:
  kernel-tools-libs.x86_64 0:3.10.0-1160.95.1.el7

Dependency Removed:
  kernel-tools.x86_64 0:3.10.0-1160.95.1.el7

Complete!


使用 `grub2-mkconfig -o /boot/grub2/grub.cfg` 更新引导配置

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.5.2
Found initrd image: /boot/initramfs-6.5.2.img
Found linux image: /boot/vmlinuz-0-rescue-0197527dc1e0e34ab25e04d6402a7388
Found initrd image: /boot/initramfs-0-rescue-0197527dc1e0e34ab25e04d6402a7388.img
done

打赏鼓励作者,期待更多好文!

打赏
24人已打赏

王蒙召 发表于 2023-9-11 10:42
  
超级详细的升级步骤,值得拥有。
技术小白 发表于 2023-9-11 10:52
  
超级详细的升级步骤,值得拥有
Tough_future 发表于 2023-9-11 10:56
  

超级详细的升级步骤,值得拥有。
何茂源 发表于 2023-9-11 11:03
  
感谢分享有助于工资和学习!
暗夜星空 发表于 2023-9-11 11:38
  
多谢分享
奔走的公牛 发表于 2023-9-11 12:10
  
感谢分享有助于工资和学习!
小霞米 发表于 2023-9-11 13:52
  
感谢大哥分享案例,好好学习天天向上
蔺嘉宾 发表于 2023-9-11 13:52
  
感谢大哥分享案例,好好学习天天向上
焱燚 发表于 2023-9-11 13:57
  
感谢大哥分享案例,好好学习天天向上
发表新帖
热门标签
全部标签>
每日一问
每周精选
技术盲盒
干货满满
技术笔记
2024年技术争霸赛
产品连连看
技术咨询
标准化排查
2023技术争霸赛专题
GIF动图学习
技术晨报
安装部署配置
新版本体验
秒懂零信任
功能体验
自助服务平台操作指引
文档捉虫活动
信服课堂视频
答题自测
通用技术
每日一记
玩转零信任
技术圆桌
在线直播
问题分析处理
SDP百科
畅聊IT
专家问答
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
流量管理
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
齐鲁TV
华北区交付直播

本版版主

13
1
6

发帖

粉丝

关注

28
6
0

发帖

粉丝

关注

本版热帖

本版达人