当前位置:嗨网首页>书籍在线阅读

04-GNU项目

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

1.2.1 GNU项目

1984年,Richard Stallman之前一直供职于MIT的一位天赋异禀的程序员,开始着手创建一个“自由的(free)”UNIX实现。Stallman的观点属于道德层面,而对“free”一词的定义则属于法律范畴而非经济范畴(请参见http://www.gnu.org/philosophy/free-sw.html)。然而,Stallman所描述的这一法律意义上的“自由(freedom)”却蕴含着言外之意:应可免费或以低价获得诸如操作系统之类的软件。

对于那些在专有操作系统上强加限制条款的计算机厂商来说,Stallman 的这一举动无疑妨害了他们。所谓的限制条款是指:在一般情况下,计算机软件的消费者不但无权阅读自己所购软件的源码,而且还不能复制、更改及重新发行所购软件。Stallman指出,在这种体制之下,只会造成程序员之间勾心斗角、敝帚自珍的局面,无法实现工作协同和成果共享。

与之针锋相对,为开发出一套完整而又可自由获取,包含内核以及所有相关软件包的类UNIX系统,Stallman发起了GNU项目(“GNU’s not UNIX”的递归缩写形式),并积极邀请有志之士加盟。1985年,Stallman创立了非盈利机构——自由软件基金会(FSF),以支持GNU项目和广义意义上的自由软件开发。

GNU项目启动之时,BSD还不具备Stallman所指的那种“free”属性。使用BSD不但仍需获得AT&T的许可,而且用户不得随意修改并重新发布BSD中AT&T拥有产权的代码部分。

GNU项目的重要成果之一是制定了GNU GPL(通用公共许可协议),这也是Stallman倡导的自由(free)软件概念在法律上的体现。Linux发布版中的大多数软件,包括Linux内核,都是以GPL或与之类似的许可协议发布的。以GPL许可协议发布的软件不但必须开放源码,而且应能在GPL条款的约束下自由对其进行重新发布。可以不受限制的修改以GPL许可协议发布的软件,但任何经修改后发布的软件仍需遵守GPL条款。若经过修改的软件以二进制(可执行)形式发布,那么软件的修改者必需满足软件使用者的以下要求:以不高于发行成本的价格,获得修改后的软件源码。GPL的第一版发布于1989年。当前的许可协议版本为2007年发布的第三版。此许可协议的第二版于1991年发布,至今仍在广泛使用,Linux内核就是以该版许可协议发布的。(对各种自由软件许可协议的讨论可见诸于[St. Laurent, 2004]和[Rosen, 2005]。)

最初,GNU项目未能开发出能够有效运作的UNIX内核,但却开发了大量其他程序。由于这些程序全都针对类UNIX系统而设计,因此(理论上)均有可能在现有的UNIX实现上运行(实际情况也的确如此),更有甚者,有时还被移植到了其他操作系统上。Emacs文本编辑器、GCC(原名为GNU C编译器,现更名为GNU编译器集合,集C、C++,以及其他编程语言的编译器于一身)、bash shell以及glibc(GNU C语言库)便是GNU项目结出的硕果。

到了20世纪90年代早期,GNU项目已经开发出了一套几乎完整的操作系统,除了还缺少其中最重要的一环:能够有效运转的UNIX内核。于是,GNU项目以Mach微内核为基础,发起了一项雄心勃勃的内核设计计划,史称GNU/HURD计划。然而,时至今日,HURD的发布还遥遥无期(写作本书之际,HURD的研发尚在进行中,该内核目前只能运行于x86-32架构之上)。

在构成通常所说的“Linux系统”的程序代码中,由于有相当一部分都源自GNU项目,因此Stallman更愿意用“GNU/Linux”一词来称呼整个系统。这一称谓问题(Linux Vs. GNU/Linux))也在自由软件社区中引发了一些口舌之争。因为本书主要关注Linux内核的API,故而通常会采用术语“Linux”。

万事具备,独缺内核。只要再拥有一个能够有效运作的内核,就能使GNU项目开发出的UNIX系统“功德圆满”。