我有一个运行 CentOS 7 的硬件系统。我想向默认 CentOS 内核添加一些补丁,因为我需要支持一些自定义硬件,但我还想跟踪上游内核版本并在上面应用我的补丁。
我发现CentOS 内核 Git 仓库,它似乎包含了构建所需的几乎所有文件。这些文件是 RHEL 内核 RPM 文件(.spec 和相关文件),已应用 CentOS 去品牌化。
我的计划是在这个存储库的克隆版上维护一个并行分支,其中包含我针对硬件的补丁,然后c7
每当我希望生成新的内核 RPM 时,就可以将其与分支合并。这基本上就是c7-i686
CentOS 存储库上的分支所做的。
但是,到目前为止我还无法直接使用这个 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?