0

当我安装我的应用程序时,我想将一些文件复制到/lib/modules/KERNEL_VERSION/extra.

问题当然是KERNEL_VERSION没有解决。

我可以通过调用找到它"uname -r",但是如何在 rpm 规范文件中执行此操作?

另外,如果有更好的方法,我愿意接受。

4

3 回答 3

2

您可以将结果uname -r插入到目录中(在这里猜测):

/lib/modules/`uname -r`/extra/
于 2010-08-18T12:48:39.593 回答
0

在尝试加载为不同内核编译的内核模块时,这个问题的答案可能会给您留下符号不匹配的问题。

要在编译时放置内核模块,请按照 Delan 的回答:

%files
/lib/modules/`uname -r`/extra/*.ko

要将先前编译的内核模块放置在当前运行的内核路径中,您必须在 %post 部分中做一些棘手的事情:

%post
cp /lib/modules/known/location/*.ko /lib/modules/`uname -r`/extra/*.ko

%postun
rm /lib/modules/... # hopefully they have not upgraded their current kernel..

%files
/lib/modules/known/location/*.ko

这将安装可能无法在正在运行的内核上加载的内核模块。通常源 RPM 是这个确切问题的解决方案。

于 2012-12-03T21:37:39.380 回答
0

这不是一个好主意,因为您应该在客户端机器上使用 a 编译内核模块,%triggerin这样它才能在内核升级后继续存在。

于 2012-12-04T02:00:36.863 回答