分发带有源代码的内核模块的最佳方法是什么?

Ale*_*xis 2 rpm rhel kernel-modules

我有一个内核模块,我想分发它(即打包它)。

我想分发它,以便用户不需要做任何其他事情yum/dnf install kmod-mymodule

  • SRPM:用户必须在其计算机上构建 RPM,然后安装 RPM。我无法将其放入 yum 存储库
  • RPM:我必须为 RHEL 的所有主要和次要版本构建 RPM。
  • DKMS:可能是解决方案,但它希望用户知道如何使用 dkms,而不是那么透明。

有什么方法可以轻松分发内核模块,以便用户只需要做yum install kmod-mymodule即可为特定机器编译模块?

如果有一个与分发无关的解决方案,我洗耳恭听!

Mar*_*ler 5

争论最用户友好的方式

\n
\n

RPM:我必须为 RHEL 的所有主要和次要版本构建 RPM。

\n
\n

但从客户的角度来看,这可能是正确的方法。单包、干净、即时、无依赖、安装。

\n

您可能需要 6 到 12 个版本来使用相同的 SRPM 来覆盖 \xe2\x80\x93。您可以将该 SRPM 上传到您自己的Copr项目中,并让 IBM 支付构建模块所需的电费,或者您可以在运行的 shell 脚本中创建一个循环for config in /etc/mock/rhel+epel-{7,8,9}-{x86_64,aarch64}.cfg ; do mock --rebuild ${your SRPM here} -r ${config} ; done (您可能需要在 /etc/ 中稍微调整模板)模拟为您提供不同的 RHEL 未成年人)。

\n

或者,您可以在自己的容器、虚拟机或现场可用的任何内容中进行设置,而不是使用模拟来设置隔离的构建环境。

\n

自动构建目标 RPM。

\n

您需要使用akmods,以便每次更新内核(以及第一次安装)时,您的二进制内核模块 RPM 都会自动重建。

\n

这样,您的用户无需执行任何操作,只需安装 akmod 包即可,该包将依赖于内核标头包,该包会与内核一起自动更新。它还取决于必要的构建工具(C 编译器等)。

\n

rpmfusion 的将内核模块打包为 akmods(仅一点点)更详细。最后,akmod 只是自动构建 kmod RPM 的一种方法。

\n

最好看一下实际的例子。该v4l2loopback-kmod软件包包含一个第三方内核模块,可为 Linux 内核的 v4l2 相机基础设施添加视频环回功能。您可以在此处找到规范以及其余打包文件。

\n