如何在 CentOS 系统中编译 src.rpm 源码包?

操作系统
运行环境
  • CentOS/RHEL 8
问题描述

如何在 CentOS 系统中编译 src.rpm 源码包。

解决方案

前提准备

编译 src.rpm 有前提条件,否则会导致编译无法进行或编译失败。

  1. 配置包含 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
  1. 执行命令yum clean all && yum makecache

  2. 使用 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
  1. 安装源码包需要普通用户来执行,执行如下命令。
# groupadd mockbuild
# useradd -g mockbuild mockbuild

安装源码包

本文以 4.18.0-348.el8 版本为例,用户可以根据自己的的需求在 CentOS 内核源码中下载相应的内核版本。

# rpm -i kernel-4.18.0-348.el8.src.rpm 
  1. 安装完成后,会在当前目录生成 rpmbuild 的文件夹。
  2. 解压并准备源文件。
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel.spec

编译源码

  1. 进入目录。
cd ~/rpmbuild/BUILD/kernel-4.18.0-348.el8/linux-4.18.0-348.el8.x86_64
  1. 生成.config文件。
# make menuconfig
  1. 进入一个 UI 界面,参数不需要修改。方向键切换到 save 直接保存,然后切换到 exit 退出,如图所示。

alt

  1. 修改 .config,由于 make 执行结束后会出现 pem 相关错误,因此需要将配置项CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"中的certs/rhel.pem 删除,并保存退出,如图所示。

alt

  1. 开始编译,依次执行。这些步骤可能会耗费较长时间,请耐心等待。
make
make modules
make modules_install
make install
  1. 重启实例使用uname -a验证是否编译成功。

如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论