首页
社区
课程
招聘
[求助]如何能以二进制发布linux驱动模块?
发表于: 2009-6-28 13:03 7420

[求助]如何能以二进制发布linux驱动模块?

2009-6-28 13:03
7420
开发了一个驱动想以二进制方式直接发布、
编译了之后,拿到另外一个机器上尝试安装(相同内核版本)
但是insmod的时候会提示invalid format,用-f参数也不行。
据查说是需要用“将要安装模块的系统正在使用的内核版本及当前内核的配置文件”一起编译才行,但是这样的话就不能以二进制的形式发布了。不过类似nvidia的显卡驱动是二进制发布的。
有什么办法能解决这问题吗?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
2
这是不能解决的

不相同的 kernel 内核,是不相容 binary 的
所以, linux 软件每次都要 compile
2009-6-29 17:09
0
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
偶也好奇Nvidia是咋办到的?
2009-6-29 17:24
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
4
binary driver (也就是Binary blob) 是提供给固定版本的 official linux kernel

如果使用者自行修改 kernel 重编译,这便会出现兼容问题

另外,我在网页调查,看到这样的描述

"Nvidia's Linux graphics driver kernel module is structured so that all the code that is
Linux-specific is provided in source code as a 'kernel interface layer.' When customers
upgrade their kernel to get the latest from kernel.org, they have everything they need
to rebuild (and even patch, if necessary) the Nvidia's driver's kernel interface layer."

简单来说,就是 nvidia 把它们的 driver 分为 2 个部份 :

一个部份是密封的,不让人看见源码

同时,另一个部份是开放源码的,这个部份负责 linux kernel 与 driver 的接口连接

这样,在升级 linux kernel 的时候,就可以在 nvidia driver 上做一些接口的局部修改
2009-6-30 14:36
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
5
感谢riijj版主的介绍。
2009-6-30 15:04
0
雪    币: 105
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
nvidia.bin安装时,有重新编译这个该过程哦。
并不是直接使用编好的驱动模块。
2012-2-19 19:38
0
游客
登录 | 注册 方可回帖
返回
//