GPL
Linux是受GPL约束的。GPL规范了各家公司怎么样才能够把GPL许可的软件整合到它们自己的产品中再销售给用户。把GPL软件整合进产品中会导致一些技术问题。但还有一些问题是经常被忽视的,那就是由GPL许可证本身带来的问题。其中与各方利益关系最密切的就是如果在自己开发的产品中采用了一些GPL软件,那么是不是就意味着这个产品也要受到GPL的约束。
操作系统在整个嵌入式系统中的地位是举足轻重的。在GPL的条款中强调:“你必须使你发布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允许第三方作为整体按许可证条款免费使用。”正是这一条款,使得开发商们不可能愿意冒风险去把GPL软件整合进自己的产品中。
有很多公司花费了大量的资金去研究使用GPL软件可能带来的问题,还有一些用户团队也正致力于研究这些因为软件许可证而导致的问题。但是他们发现由于对GPL的解读各有不同,这里存在着大量的“灰色地带”。即使是那些在Linux团体中很有声望的人士对于GPL应用的观点也往往不一致。一个最值得注意的问题就是Linux中的“可加载模块”。这个概念在前文中已经提到过了,Linux用户是可以动态地把模块直接加载到内核当中的。Linux社团中的一些很著名的人物坚称“可加载模块”必须遵守GPL许可证。然而,Linus Torvalds——Linux之父却持有相反的观点。他认为“可加载模块”不应该受到GPL的约束。还有其他一些人觉得“可加载模块”是否要遵循GPL许可证是要根据该模块与内核间是不是存在某些类似的风格(比如是否共享了一些数据结构等等)来判断的。正是因为存在着规则解读不明的情况,所以很多公司和用户都对GPL感到不满:因为灰色地带就意味着风险。
GPL对那些试图把开源软件整合进自己产品的公司还提出了另一个挑战,那就是关于这些公司是否会存在专利侵权和著作权被侵犯的问题。GPL并不对用户提供保证以避免遵守许可证的代码被侵权,同样GPL也不能够保证被许可的代码没有侵犯已有的专利。实际上,GPL已经明确地说明了它没有办法做这样的保证声明,这使得用户在使用GPL软件后只能自己去面对那些可能的专利和版权纠纷。如果这些纠纷在产品已经量产并推向市场后发生,那么开发商必须面对的就是复杂的召回工作或者是付给专利持有者巨额的费用。
开放的标准
Linux在有些人的印象中是开放标准的。其实并非如此,Linux只是一款开放源码软件。开放源码的软件是指可以自由使用,而且是可以自由修改的软件。而开放的标准是指一个规范,这个规范是能够被自由地阅读和实现的。开放标准可以增强技术实现的移植性,还避免了技术被某家开发商垄断的情形出现。因为Linux是没有标准来规范其发行的,所以各家开发商在发布各自的产品时对Linux所做的改动存在着较大差异,这直接导致了很多应用不能够跨系统移植。
POSIX(可移植的操作系统接口)就是开放标准的一个例子。它描述的是操作系统中的应用接口标准。已经有很多不同的操作系统开发商在他们各自的产品中提供了符合POSIX标准的接口。这就使得应用的开发者摆脱了只能局限于一家操作系统的困境,其编写的代码可以不加修改很方便地移植到其他的遵守POSIX标准的操作系统上。
在Unix操作系统中就早已定义了通用的接口集合。这个集合就是今天POSIX标准的基础。有人可能会想既然Linux是脱胎于Unix的,那么Linux也应该是符合POSIX标准才对。但事实上,虽然Linux目前具有一套类似POSIX的接口,但在很多关键的地方它们是并不一致的,比如之前谈到过的调度问题、信号以及线程的实现等等。即使是最新版本的Linux线程库(NPTL,Native POSIX Thread Library for Linux)也不是完全和POSIX兼容的。开发者们会发现他们编写的可移植的POSIX应用并不能够在Linux系统上正常工作,反之亦然。
这些不一致带来的后果可能是灾难性的。例如,二者对setuid系统调用的实现差异就会导致很大的问题。POSIX标准中要求只要有一个线程调用了setuid,那么和该线程同属一个进程的所有线程都会受到这次调用的影响。但是在Linux系统中,只有调用了setuid的那个线程才会做出相应的反应,而其他线程仍旧维持原状。一些POSIX进程在创建时可能具有超级用户的权限(比如系统管理员编写的程序),因此它们具有完全的系统访问权,比如可以删除计算机上的任何用户文件等等。出于安全原因的考虑,在这些程序完成一些只有超级用户才能完成的工作后,往往会调用setuid来降低它们自己的权限。如果这样一个符合POSIX标准的程序运行在Linux系统上,我们会发现那些在调用setuid之前创建的线程在调用后都还保持着超级用户的权限。那么对于一个有害的程序,也许它不能够在符合POSIX标准的系统上兴风作浪,但它却能够在Linux系统中干尽坏事。
也许有人会考虑开源操作系统的开发者们也可以进行开放的操作系统标准的研究。但实际上,Linus Torvalds本人就是不赞同POSIX的,他说:“POSIX是一个发育不健全的标准,是成不了气候的。我们不准备按照POSIX标准来设计操作系统。”那么Linux会成为一个与POSIX标准相兼容的操作系统么?Linus又说:“现在的情况是,没有理由去改变现状。”
()
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一页 1 2 3 4 5下一页
上一篇:嵌入式Linux系统的动态电源管理技术 下一篇:RTOS设备驱动向嵌人式Linux的移植
|