在linux内核中没有实现X Window,在linux里面没有相应的X驱动,这里面我想有两个原因,其中一个是最重要的。先谈谈那个不那么重要的,众所周知linux内核只提供了机制而不提供策略,X这种东西对于内核来说太策略了,它涉及显式驱动程序等等,关于显式的东西是人机交互中最重要的东西,这也就是为何人们普遍对显卡有要求而对声卡没有要求的原因,显式相关的东西和别的比如打印机驱动相比具有自己的独特的特点,那就是复杂,高度策略化,它几乎是人的玩具而不是硬件的特质,于是linux内核当然为了不引入过多的策略也就对此类驱动敬而远之了,相反在用户空间实现x驱动而对显卡的控制逻辑。我想到的第二个原因也就是最重要的原因就是linux的开源模式,因为它是开源的,没有固定的开发周期和市场调研,那么就决定了它不一定是跟着市场走的,而在某种程度上是由别的原因决定的,开源的模式也决定了开源软件只能很好的提供机制而不提供策略,它们只能在点上做文章而不能像Microsoft那样一下子就做一条产品线,开源的软件只是解决一个问题而不能满足一类用户的永久需求,比如vsftpd能解决远程文件传输并且它是一个服务器需要自己配备客户端,而windows下自带的ftp却只是一个IIS中的模块罢了,开源模式下开发的软件在点上的力量很大却不能形成自己的产品线,相反商业的软件却可以一下子提供一整套解决方案,加之开源软件的开发者的报酬是不定的,因此多数情况下只能凭兴趣和激情去做事而不能靠别的。明白了以上原因以后,我们看一下为何在linux内核中没有实现x和很多显式控制逻辑,显式控制逻辑是和市场有很大关系的,某种程度上,它关系到当前流行的游戏,流行的电影以及王牌厂商的规范,比如Microsoft的DirectX10就是一个例子,既然和商业联系在了一起,那么它在一些信念上就是和开源相悖的,故而就不能为了在内核中实现显式驱动而和商业和策略搅合在一起了。
视觉冲击永远是新事物对人们的第一冲击,难怪厂商纷纷要抢占人们的眼睛,谁控制了显式规范谁就控制了PC,游戏已经成了推动PC发展的第一推动力,linux如果无心在桌面市场和众强角逐,那么它就没有必要去在内核实现内置的显式驱动,当然它是没有必要的啦,linux关注的是服务器领域,如今虽然linux开始进军桌面,但是我不希望它跑偏。开源模式的点上功夫就好比unix的伟大哲学--每次只做并且做好一件事。和对人们视觉冲击不同,听觉冲击往往对人们影响不是很大,人们天天都在谈环绕立体声,杜比等等但是没有几个人真的去关注,而且声音规范变化的没有显式规范快,因此声音规范显得更加稳定,那么linux的内核就可以实现声音驱动,可以实现各种声音规范,而且还真的有人去做这件事,比如最新的ALSA驱动就包含了很多声音规范,Intel最新的HD声音规范代替了AC97,当然也可以说是AC97的升级在linux的各个声卡驱动里面也得到了实现。我的一个亲身经历就是去年的时候我接到一个工作,就是驱动我们公司自己研发的一块板子的声音芯片和显式芯片,当然芯片都是标准的,接口也是标准的,不同的就是总线不同,于是我的工作就是到驱动总线为止,以后的用规范的做,这一切看起来很是简单,但是做起来却不是我想的那么简单,几个夜晚我没有合眼,不是声卡驱动写不好,而是显卡驱动太复杂,其实声卡驱动我一周就完成了,就是驱动一下总线然后按照声卡芯片的规范驱动声卡就可以了,一切很顺利,但是显卡就不是这样了,我也按照同样的步骤做,但是就是无法正常驱动显卡,后来我查了资料,发现显卡规范太复杂了,我在实现的时候漏掉了很多关键的东西,这个过程耗了我将近一个半月时间...我想linux内核的设计者和实现者也是这么认为的吧,难怪x没有在内核实现呢,不过这也好,这可以让x可以成为一个自成体系的系统。
在最新的2.6.29内核中,内核实现了内核中的显式控制逻辑,叫做kernel-mode-setting,我不知道这到底是好是坏,如果从兼容和用户角度来讲这当然好了,但是却完全不符合unix的哲学,在这个世界上符合哲学到底能得到什么好处呢?我想哲学也仅仅是人们心灵的一个避风港吧,风大浪急还要面对,说不定要翻船,不过这就是真实...
本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1274151