使用 RPM 和补丁构建 CentOS 内核(但缺少 SRPM 中的文件)

使用 RPM 和补丁构建 CentOS 内核(但缺少 SRPM 中的文件)

我有一个运行 CentOS 7 的硬件系统。我想向默认 CentOS 内核添加一些补丁,因为我需要支持一些自定义硬件,但我还想跟踪上游内核版本并在上面应用我的补丁。

我发现CentOS 内核 Git 仓库,它似乎包含了构建所需的几乎所有文件。这些文件是 RHEL 内核 RPM 文件(.spec 和相关文件),已应用 CentOS 去品牌化。

我的计划是在这个存储库的克隆版上维护一个并行分支,其中包含我针对硬件的补丁,然后c7每当我希望生成新的内核 RPM 时,就可以将其与分支合并。这基本上就是c7-i686CentOS 存储库上的分支所做的。

但是,到目前为止我还无法直接使用这个 Git repo 来创建内核 RPM,因为它似乎缺少一些文件。

例如,尝试生成 SRPM 会出现以下错误:

$ rpmbuild -bs SPECS/kernel.spec

RPM build errors:                                                                                      
    Bad file: /home/user/rpmbuild/SOURCES/kernel-abi-whitelists-327.tar.bz2: No such file or directory
    Bad file: /home/user/rpmbuild/SOURCES/centos-kpatch.x509: No such file or directory               
    Bad file: /home/user/rpmbuild/SOURCES/centos-ldup.x509: No such file or directory                 
    Bad file: /home/user/rpmbuild/SOURCES/centos.cer: No such file or directory                       

这些文件在 CentOS 发行版中可用顺铂

这些文件列在.kernel.metadata Git 存储库中的文件,以及看起来像某种哈希的数字(但我不确定它是校验和还是像 Git 提交那样的识别哈希):

39566b205b3d6870a6224a07b9757807bc2ff407 SOURCES/kernel-abi-whitelists-327.tar.bz2
55fb67d010de128c721b8b4ef224af02e49e7514 SOURCES/linux-3.10.0-327.18.2.el7.tar.xz
95b9b811c7b0a6c98b2eafc4e7d6d24f2cb63289 SOURCES/rheldup3.x509
d90885108d225a234a5a9d054fc80893a5bd54d0 SOURCES/rhelkpatch1.x509
5a7d05a8298cf38d43689470e8e43230d8add0f9 SOURCES/centos-kpatch.x509
c61172887746663d3bdd9acaa263cbfacf99e8b3 SOURCES/centos-ldup.x509
6e9105eb51e55a46761838f289a917611cad8091 SOURCES/centos.cer

但是,这些不是 CentOS 内核 Git 存储库中的提交或对象(对于 tarball,我也不指望它们是)。搜索这些哈希似乎也没有发现任何特别有启发性的结果:主要是带有插入它们的补丁的邮件列表帖子。

我的问题是:

  • 这些文件来自哪里,如何.kernel.metadata使用来找到它们?
  • 在“正常” CentOS 构建过程的哪个阶段会注入这些文件来创建 S/RPM?

相关内容