齐兵辉 郑州航空工业管理学院智能工程学院
开源操作系统(open source operating system),就是公开源代码的操作系统软件,可以遵循开源协议(GNU)进行使用、编译和再发布。在遵守GNU协议的前提下,任何人都可以免费使用,随意控制软件的运行方式。
开源操作系统(open-source operating system)具有源码,而非只有编译过的二进制码。Linux是最为著名的开源操作系统,而Microsoft Windows则是一个著名的闭源(closed source)的系统。Apple公司的Mac OS X和iOS操作系统采用一种混合方式。它们有开源的内核,称为Darwin,也有闭源的专用组件。
从源码可以生成二进制码,以便在系统上运行。而反着干,即从二进制码到源码的逆向工程(reverse engineering),则很费力,并且也无法恢复一些有用信息,如注释。通过阅读源码学习操作系统还有很多好处。有了源码,学生可以修改操作系统,再编译和运行源码,观 察修改结果,这是很好的学习方式。
计算机和软件公司试图限制软件使用,如只限于授权计算机和付费客户。仅发布二进制代码而非源代码,可让这些公司实现这一目标;对竞争对手来说,也保护了代码及其方法。还有一个问题是关于知识产权的。操作系统和其他程序可以实施限制,只有授权计算机才可播放视频和音乐、阅读电子书等。如果实现这些限制的源码公开了,那么复制保护(copy protection)和数字版权管理(Digital Rights Management,DRM)就无效了。许多国家 的法律,包括美国的千禧年数字版权法案(Digital Millennium Copyright Act,DMCA),都认定DRM代码的逆向工程或试图绕过复制保护是违法的。
为反对限制软件使用与再发布,Richard Stallman于1983年设立了GNU项目,以创建一个免费的、开源的、兼容UNIX的操作系统。1985年,他发表了GNU宣言,主张软件应是免费的和开源的。他也设立了自由软件基金会(Free Software Foundation,FSF),以鼓励自由交流软件源码和免费使用软件。FSF不是对软件施加版权(copyright),而是对软件施加著佐权(copyleft),鼓励共享和改进。GNU通用公共许可证(Gnu General Pubic License,GPL)为著佐权的条文,这是一个发行软件的公共许可证。从根本上说,GPL规定:软件源代码应与二进制一起分布,软件源代码的任何修改应按同样的GPL许可来发布。
GNU/Linux是开源操作系统的范例。GNU项目开发了许多与UNIX兼容的工具,包括编译器、编辑器及其他实用程序,但从未发布内核。1991年,一位名叫Linus Torvalds 的芬兰大学生,利用GNU编译器和工具,开发并发布了一个类似UNIX的简单内核,并邀请大家一起开发。有了Internet,任何有兴趣的人员都可下载源码,可修改它,可向Torvalds递交修改。每周更新一次,加上数千程序员的共同努力,使得这个称为Linux的操作系统迅速发展起来。
这样形成的GNU/Linux操作系统有数百个的不同发布(distribution)和定制。主流的发布有RedHat、SUSE、Fedora、Debian、Slackware和Ubuntu。在功能、实用程序、应用程序、硬件支持、用户界面和用途等方面,这些发布不尽相同。例如,RedH Enterorise Linux针对的是大企业的应用。PCLinuxOS为LiveCD,该操作系统可以从CD-ROM上直接引导并运行,而无须安装到系统硬盘。一种称为“PCLinuxOS Supergamer DVD”的PCLinuxOS为LiveDVD,它包括图形驱动程序和游戏。玩家可以在任何兼容系统上,直接从DVD引导并开始游戏。游戏结束后,系统重新引导就会回到原来安装的操作系统。
正如Linux一样,BSD UNIX也有许多发布,如FreeBSD、NetBSD、OpenBSD和DragonflyBSD等。为了研究FreeBSD源码,只要下载感兴趣版本的虚拟机镜像,并从VMware中引导即可,具体步骤与Linux相似。
自由软件运动使得众多程序员创建了数千个开源项目,包括操作系统。网站如http://freshmeat.neg/和 http://distrowatch.com/为许多这些项目提供了门户网站。正如以上所述,开源项目让学生利用源码作为学习工具。他们可以修改程序,测试程序,帮助查错和纠错,也可研究全功能的成熟操作系统、编译器、工具、用户界面和许多其他类型的程序。以前项目(如Multics)的源码有助于学生学习这些项目,增长知识,实现新的项目。
虽然GNU/Linux和BSD UNIX都是开源操作系统,但是它们有自己的目标、工具、版权和用途。有时,版权并不互斥,也会出现交叉,这也加快了开源操作系统项目的改进。例如,OpenSolaris的多个组件就移植到BSD UNIX。免费和开源的优点可能是:提高了开源项目的数量和质量,使用这些项目的个人和公司也增加了。