我刚开始编写内核模块,所以遇到了一些非技术问题.
因为对于为特定内核版本(比如3.0.0- 10,10是补丁号)创建内核模块,需要相同的版本内核头,所以直接安装内核标头并在那里开始开发。但是补丁内核版本的内核头是不可用的。因为我有一个来宾内核vmlinuz-3.0.0-10运行在机器上,在下载内核头时,它说找不到。
。
因此,询问这个问题的目的是知道内核驱动程序开发人员的首选项是什么。还有其他选择吗?
是否可以在一个版本中编译内核模块,而在另一个版本中运行(尽管会出现错误,但是有什么解决办法吗?)
发布于 2012-06-02 22:04:28
因此,构建一个新内核并不是一个很好的选择,因为它需要:
构建kernel
因此,如果您有运行系统的内核头,那么您不需要下载任何内核版本的源代码,并且在使模块使用
make -C /lib/modules/kernel-headers-x.y.z/build M=`pwd` modules你的模块就准备好了。
如果有更好的答案,我会毫不犹豫地接受其中任何一个。
发布于 2014-08-08 19:54:38
我知道很久没问这个问题了。我是内核开发方面的新手。我也遇到过同样的错误。但是现在我能够在构建它的不同内核中加载我的模块。以下是解决办法:
中。
注:这可能会导致一些不想要的事件发生,如上述沙巴兹。但如果你这么做只是为了实验,我认为去做是好的。:)
发布于 2012-06-02 11:27:46
有一种方法可以在一个内核上构建一个模块并将其插入到另一个内核中。它是通过关闭一个特定的配置。我没有告诉你这是什么配置,因为这是绝对危险的。原因是内核之间可能会发生更改,这可能会导致模块的行为不同,通常会导致完全冻结。
您应该做的是根据已经构建的内核(或者至少是配置好的内核)构建模块。如果您有一个修补的内核,那么最好的方法就是构建这个内核并用它引导您的操作系统。
我知道这很费时。我已经做了很多次了,我知道它会有多无聊,但一旦你做对了,它会让你的生活更轻松。内核编译大约需要2个小时左右,但是如果您有一个多核CPU,则可以并行化它。此外,你也可以让它在你离开办公室之前编译(如果在家里,在睡觉之前),让它在晚上工作。
总之,我强烈建议您构建自己感兴趣的内核。
https://stackoverflow.com/questions/10861872
复制相似问题