运行环境
- CentOS/RHEL 8
问题描述
如何在 CentOS 系统中编译 src.rpm 源码包。
解决方案
前提准备
编译 src.rpm 有前提条件,否则会导致编译无法进行或编译失败。
- 配置包含 PowerTools 的 yum 源。
vim /etc/yum.repos.d/CentOS-Linux-PowerTools.repo
# 将下列内容粘贴至`CentOS-Linux-PowerTools.repo`文件中并保存。
[powertools]
name=CentOS Linux $releasever - PowerTools
baseurl=http://mirrors.ivolces.com/centos/8.5.2111/PowerTools/$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
-
执行命令
yum clean all && yum makecache
。 -
使用 root 用户安装以下安装包。
# yum install asciidoc audit-libs-devel bash bc binutils binutils-devel bison diffutils elfutils -y
# yum install elfutils-devel elfutils-libelf-devel findutils flex gawk gcc gettext gzip hmaccalc hostname java-devel
# yum install m4 make module-init-tools ncurses-devel net-tools newt-devel numactl-devel openssl -y
# yum install patch pciutils-devel perl perl-ExtUtils-Embed pesign python3-devel python3-docutils redhat-rpm-config -y
# yum install rpm-build sh-utils tar xmlto xz zlib-devel -y
# yum remove kernel-plus-headers -y
# yum install clang dwarves git kabi-dw libbabeltrace-devel libbpf-devel libcap-devel libcap-ng-devel libmnl-devel llvm openssl-devel perl-generators audit-libs-devel -y
- 安装源码包需要普通用户来执行,执行如下命令。
# groupadd mockbuild
# useradd -g mockbuild mockbuild
安装源码包
本文以 4.18.0-348.el8 版本为例,用户可以根据自己的的需求在 CentOS 内核源码中下载相应的内核版本。
# rpm -i kernel-4.18.0-348.el8.src.rpm
- 安装完成后,会在当前目录生成 rpmbuild 的文件夹。
- 解压并准备源文件。
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel.spec
编译源码
- 进入目录。
cd ~/rpmbuild/BUILD/kernel-4.18.0-348.el8/linux-4.18.0-348.el8.x86_64
- 生成
.config
文件。
# make menuconfig
- 进入一个 UI 界面,参数不需要修改。方向键切换到 save 直接保存,然后切换到 exit 退出,如图所示。
- 修改
.config
,由于 make 执行结束后会出现 pem 相关错误,因此需要将配置项CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"中的certs/rhel.pem 删除,并保存退出,如图所示。
- 开始编译,依次执行。这些步骤可能会耗费较长时间,请耐心等待。
make
make modules
make modules_install
make install
- 重启实例使用
uname -a
验证是否编译成功。
如果您有其他问题,欢迎您联系火山引擎技术支持服务