LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 961|回复: 4

为什么显卡驱动程序和内核、Xorg的版本绑定得那么紧?

[复制链接]
发表于 2007-11-27 08:48:07 | 显示全部楼层 |阅读模式
ati的显卡驱动8.34.8,
在2.6.18的内核可以装,
为什么在2.6.22的内核就不能装?

同样都是2.6的内核啊,难道linux内核的兼容性就如此差?
为什么其它的程序当内核升级以后就可以运行,
偏偏显卡就不行?

牛人给我解释一下,谢了先。
发表于 2007-11-27 09:21:58 | 显示全部楼层
显卡驱动是属于内核模块的,内核模块是版权相关的,我记得。
回复 支持 反对

使用道具 举报

发表于 2007-11-27 22:19:24 | 显示全部楼层
其它驱动模块几乎都是开源的,所以内核升级时也跟着升级了。
2.6内核的升级过程中变化很大的,很多新功能的加入都是直接在2.6的版本上进行的,包括任务调度机制都会改(如2.6.23),因此出现不兼容也很正常。不过多数情况下是源代码级兼容的,二进制有时也是兼容的(但需要强制加载模块,即不检查版本)。
回复 支持 反对

使用道具 举报

发表于 2007-11-27 23:03:38 | 显示全部楼层
Post by ildg;1788171
ati的显卡驱动8.34.8,
在2.6.18的内核可以装,
为什么在2.6.22的内核就不能装?

同样都是2.6的内核啊,难道linux内核的兼容性就如此差?
为什么其它的程序当内核升级以后就可以运行,
偏偏显卡就不行?

牛人给我解释一下,谢了先。


    这是因为linux内核没有一个稳定的ABI(application binary interface),任何一个新版的内核都可能引起ABI的变化。因此凡是以source code形式出现的驱动程序在内核升级后都能正常工作,因为它们本身就在linux kernel的source tree里面。但如果是以binary形式发布的驱动程序就很可能在内核升级后无法工作。比如说nvidia提供的那个binary驱动,它里面的东西大部分是binary driver,但有一小部分是与当前内核接口的部分,所以这部分在每次内核升级的时候都要重新编译一遍才能使驱动能够被新内核加载。
回复 支持 反对

使用道具 举报

发表于 2007-11-27 23:35:42 | 显示全部楼层
看过部分代码。
2.6.18和2.6.2*网络部分就改动很大(或许不大,反正改动了,里面的结构体成员都变了)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表