Linux 和 GNU 工程

上一篇 / 下一篇  2008-07-10 22:30:11 / 个人分类:linux


Linux 确实存在;它是一个内核,许多人都在使用它。但是你不能仅使用内核本身。内核只有作为整个系统的一个部分才有用处。Linux 是和 GNU 操作系统结合在一起使用:系统本身是 GNU,与 Linux 作为内核一起工作

许多用户没有并不完全了解 Linux 内核和被称作“Linux”的整个系统的区别。而不加区别地使用这个名字并不能对理解有帮助。

程序员一般都知道 Linux 是一个内核。但是因为他们也听到整个系统被称作“Linux”,他们会根据名字去想象历史。比如,很多人认为当 Linus Torvalds 完成了内核后,他的朋友四处寻找其他的自由软件,而且所有的可以被组装成一个类似 Unix 系统的程序都是现成的。

他们的发现不是巧合 -- 这就是 GNU 系统。 可用的自由软件加在一起就组成了一个完整的系统,这是由于自 1984 年就开始的 GNU 工程一直在为此努力。GNU 宣言(31k 字节)早已设立了开发一个类似 Unix 的自由系统的目标,称作 GNU。GNU 工程的最初公告也勾画了 GNU 系统的原始提纲。在 Linux 被编写时,这个系统几乎已经完成。

大多数自由软件的工程都是为了特定的工作开发特定的程序。比方说,Linus Torvalds 编写类似 Unix 的内核(Linux); Donald Knuth 编写一个文本格式化工具(TeX); Bob Scheifler 开发一个窗口系统(X Window System)。 对于这项工程编写的程序都作出了贡献,对这些贡献进行评估是很自然的。

如果以这种方法来衡量对 GNU 工程的贡献,我们会得出什么结论?一个 CD-ROM的提供商发现在他们的“Linux 发行版”中,GNU 软件占最大的比重,大约占全部源代码的 28% ,而且这还包括一些关键的部件,没有这些部件,系统就无法工作。Linux 本身占大约 3%。所以如果你要根据程序的作者来选择一个名字的话,最合适的选择是“GNU”。

但是我们不认为这是一个解决问题的适当方法。GNU 工程以前不是,现在也不是一个开发某个软件包的工程。它不是一个开发 C 编译器的工程, 尽管我们做了。它也不是一个开发一个文本编辑器的工程,尽管我们也做了。GNU 工程的目标是开发一个完全自由的类似 Unix 的系统: GNU。

许多人已经为系统中的自由软件作出了重大贡献,他们都应该获得荣誉。但 GNU 是一个系统而不是一些实用程序的组合的原因是,GNU 工程的最初目标就是做一个完整系统。我们曾经为完成一个完整的系统做了一个所需程序清单,而且我们有系统地寻找,编写这些程序,并且寻找别人编写清单上的每一个程序。我们编写了关键的但是十分枯燥的主要部件,比如汇编语言和连接器,因为这是系统所必需的。除了编程工具,一个完整的系统还需要更多的东西, Bourne Again SHell 程序, Postscrīpt 解释器Ghostscrīpt, 和GNU C 库同样是很重要的。

到了 90 年代初期,我们曾经把除了内核以外的东西放到一起组成了一个系统(我们同时也在做内核的工作)称为GNU Hurd, 运行在 Mach 上)。开发这个内核比我们想象的要难得多,我们现在仍然在为此工作

庆幸的是,你不必再等了,因为 Linux 开发成功。当 Linus Torvalds 写成了 Linux,他填补了一个重要的空白。人们可以将 Linux 和 GNU 系统组成一个完整的自由系统:基于 Linux 的 GNU 系统(或简称为 GNU/Linux 系统)。

把它们组合到一起听起来很容易,但是这并不是一个简单的工作。GNU C 库(简称 glibc) 需要作大量的修改。集成到一个完整的发行系统中也是一项很大的工作。它需要对如何安装和启动系统进行定位 -- 这个问题直到现在还在完善,因为我们还没有抓住要点。那些开发了不同的发行系统的人们作出了巨大贡献。

除了 GNU,还有一个独立进行的工程开发了一个自由的类似 Unix 的操作系统。这个系统被称为BSD, 它是由 UC Berkeley 开发的。 在 GNU 工程的鼓舞下,BSD 的开发者开始进行他们自己的自由软件的开发工作,并时常受到 GNU 人士的鼓励,但是他们的实际工作与 GNU 差别不大。今天 BSD 系统采用一些 GNU 软件,就象不同版本的 GNU 系统也采用 BSD 的软件一样。总的说来,它们是两套独立开发的不同的系统。今天一个免费的操作系统几乎都是采用 GNU 或 BSD 系统的一个派生版本。

GNU 工程支持 GNU/Linux 系统,就象支持 GNU 系统一样 -- 包括资金的支持。我们为重写与 Linux 相关的 GNU C 库提供资金,以至于它们现在可以很好地集成在一起,直到最新版本的 GNU/Linux 仍在使用这个库而无需修改。我们也为早期 Debian GNU/Linux 的开发提供资金。

今天我们的绝大多数的工作都在基于 Linux 的 GNU 系统上完成,我们希望你也如此。但是请不要含糊地使用 Linux 而使公众迷惑。Linux 是内核,系统的关键部件之一。系统或多或少实际上都应该是 GNU 系统,再加上 Linux。当你在讨论到这个组合系统时,请使用 “GNU/Linux”。


TAG: GNU linux

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-28  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 6436
  • 日志数: 9
  • 建立时间: 2007-11-24
  • 更新时间: 2011-03-24

RSS订阅

Open Toolbar