在 CentOS 6 上从 RHEL 6 MRG 源编译实时内核

在 CentOS 6 上从 RHEL 6 MRG 源编译实时内核

我正在尝试编译 kernel-rt-2.6.33.9-rt31.75.el6rt.src.rpmRHEL6 MRG 源 RPM在 Centos 6 x86_64 系统上。

这是我第一次这样做,所以我研究了如何正确地做到这一点。根据我的发现,我做到了:

rpm -ihv kernel-rt-2.6.33.9-rt31.75.el6rt.src.rpm 
cd ~/rpmbuild/SPECS
nano kernel-rt.spec 
rpmbuild -bb kernel-rt.spec 2> build-err.log | tee build-out.log

在 kernel-rt.spec 中,我禁用了我不需要的变体的编译 - 即仅编译 rt 和固件。还定义不构建调试信息。

编译完成后,我得到了~/rpmbuild/RPMS/x86_64/两个文件:

kernel-rt-2.6.33.9-rt31.75.el6rt.x86_64.rpm
kernel-rt-devel-2.6.33.9-rt31.75.el6rt.x86_64.rpm

但是当我尝试安装内核时,出现错误消息:$ sudo rpm -ihv kernel-rt-2.6.33.9-rt31.75.el6rt.x86_64.rpm 错误:依赖项失败:kernel-rt-2.6.33.9-rt31.75.el6rt.x86_64 需要 kernel-rt-firmware >= 2.6.33.9-rt31.75.el6rt

我期望它会显示在那里,但是却没有文件夹 ~/rpmbuild/RPMS/noarch。

另外,我尝试过rpmbuild --rebuild kernel-rt-2.6.33.9-rt31.75.el6rt.src.rpm,但得到了相同的结果......

我做错了什么?我见过这个问题,但它建议我已经尝试过的方法,我想自己构建内核,而不是使用 SLC 预先构建的内核。

答案1

我仍然建议使用预编译实时内核如果您没有进行任何重大的驱动程序更改或其他优化,但如果您需要构建自己的驱动程序,请执行以下操作来生成适当的软件包。

rpmbuild -ba --without debug kernel.spec

这将构建你的内核。

rpmbuild -ba --target noarch --with firmware --without debug --without doc --without perftool --without perf kernel.spec 

这将构建 kernel-rt-firmware 包。

答案2

我自己没有尝试过,但问题中引用的 repo 中有一个 rt-firmware SRPM。构建可能会提供依赖项。

答案3

cd ~/rpmbuild/SPECS
rpmbuild -bb --without debug kernel-rt.spec --clean

cd ~/rpmbuild/SPECS
rpmbuild -bb --target noarch --with firmware --without debug --without doc --without perftool --without perf kernel-rt.spec --clean

相关内容