阿威十八式 发表于 2024-4-27 07:17
  
打卡学习,感谢大佬分享!
guhui 发表于 2024-5-28 09:33
  
非常好的实践教程,谢谢分享
武汉智云韩俊波 发表于 2024-6-4 10:15
  
非常好的实践教程,谢谢分享
火影忍者 发表于 2024-9-20 09:31
  
感谢分享,学习一下~
#原创分享#CentOS 7 编译安装最新版内核 Linux Kernel 6.5.2
  

ling218cn 106013人觉得有帮助

{{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

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

打赏
25人已打赏

发表新帖
热门标签
全部标签>
西北区每日一问
技术盲盒
安全效果
【 社区to talk】
技术笔记
干货满满
每日一问
信服课堂视频
GIF动图学习
新版本体验
技术咨询
2023技术争霸赛专题
功能体验
产品连连看
安装部署配置
通用技术
秒懂零信任
技术晨报
自助服务平台操作指引
原创分享
标准化排查
排障笔记本
玩转零信任
排障那些事
SDP百科
深信服技术支持平台
POC测试案例
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
高手请过招
升级&主动服务
高频问题集锦
社区新周刊
全能先锋系列
云化安全能力

本版版主

13
1
6

发帖

粉丝

关注

28
7
0

发帖

粉丝

关注

本版热帖

本版达人