加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

为不同的Linux版本构建内核模块

发布时间:2020-12-14 01:55:48 所属栏目:Linux 来源:网络整理
导读:我是编写内核模块的新手,因此面临很少的非技术问题. 因为为特定内核版本创建内核模块(比如3.0.0-10,10是补丁号)需要相同的版本内核头文件,所以它看起来很直接安装内核头文件并在那里开始开发. ?但是修补内核版本的内核头文件不可用. 因为我有一个客户端内核v
我是编写内核模块的新手,因此面临很少的非技术问题.

因为为特定内核版本创建内核模块(比如3.0.0-10,10是补丁号)需要相同的版本内核头文件,所以它看起来很直接安装内核头文件并在那里开始开发.
?但是修补内核版本的内核头文件不可用.
因为我有一个客户端内核vmlinuz-3.0.0-10在机器上运行并且在下载内核头文件时它说没有找到.

>其他方法是获取该特定内核的源代码,但同样问题是修补内核的相同来源不可用(它不需要获取linux-kernel-3.0.0-10甚至linux-kernel-3.0的源代码.第0和第10个补丁).在某些情况下,可以获得运行内核的源代码,但并非总是可行.
>另一种方法是构建除运行内核之外的内核,并在机器中放置内置内核.但它需要构建该内核的模块,这是一个耗时且耗费空间的过程.

因此,问这个问题的目的是了解内核驱动程序开发人员的偏好.还有其他选择吗?

是否有可能在一个版本中编译内核模块并在另一个版本中运行(虽然它会给出错误,但有没有解决方法?)

解决方法

因此,构建新内核不是一个好选择,因为它需要:

>构建内核
>构建模块和固件
>建立标题
将所有上述内容移动到适当的位置(如果您的机器与您要开发模块的机器不同)

因此,如果您有运行系统的内核头文件,那么您不需要为任何内核版本下载源代码,同时使用模块

make -C /lib/modules/kernel-headers-x.y.z/build M=`pwd` modules

你的模块就准备好了.

如果有更好的答案,我会毫不犹豫地接受他们中的任何一个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读