代码改变世界

GNU/Linux闲话

2010-11-02 22:30  wwang  阅读(3001)  评论(2编辑  收藏  举报

说到GNU/Linux,不能不提到两位大牛,一位是GNU组织的发起人Richard Stallman,一位是Linux内核的发起作者Linus Torvalds。正是这两位大牛,构建了GNU/Linux以及多姿多彩的开源世界的基石。


按照国际惯例,我们先聊聊Richard Stallman老兄。(咦,这是哪门子国际惯例?)


Richard Stallman是个愤世嫉俗的家伙,愤世嫉俗的人总会做出一些惊人之举。Richard认为,既然软件是计算机的灵魂,那么它必须是自由的,不能被少数的专有软件公司所控制。因此,他发起了GNU工程,并创立了自由软件基金会。嗯,事情就是这个样子。怎么?太简单?不够曲折?曲折的故事很多人都讲过,大家可以Google之,在这里,推荐大家看一下哲思社区徐老大的文章:《Richard Stallman和自由软件运动》,这篇文章有着详细的叙述。我们在这里只是看看Richard大神做过什么:著名的编译器GCC,著名的调试器GDB,著名的编辑器Emacs,等等。看到这些“著名的”软件,我们对Richard Stallman的崇拜还需要理由吗?Richard Stallman号称是世界第一程序员,确实名不虚传,他写的代码不论从数量还是质量上都是非常了不起。


Richard Stallman发起GNU工程的目标就是把大家所能用到的软件都用开源的方式实现出来。这个宏大的目标看上去似乎有些不可思议,但就目前看来,他确实做到了。他亲自实现了编译器、调试器以及全能编辑器,这些都是实现这个大目标的基础。世界各地的GNU开发者包括一些大公司和组织共同将其他软件一一实现出来,比如SUN贡献出来的Open Office,Mozilla的Firefox等等。当然,这些形形色色的应用软件还需要在一个操作系统的核心上运行,于是GNU组织发起了GNU Hurd工程,用以取代商业的Unix核心。


根据百度百科的介绍,Hurd 是一组运行在 Mach 微内核上的服务器,用来实现 Unix 或其他核心实现了的文件系统、网络协议及文件访问控制等其他功能。Mach作为微内核的OS,只实现了操作系统最基本的进程控制和内存管理。当然,Hurd所依赖的这个Mach也是GNU版本的。Hurd是什么意思呢? 据Hurd 的主设计师 Thomas Bushnell所述, "Hurd"代表"Hird of Unix-Replacing Daemons", 而"Hird"又代表了"Hurd of Interfaces Representing Depth"。很有意思吧,一个以一对双关语命名的软件。


看到这里,如果一切顺利的话,好像应该没有Linux Torvalds什么事了。GNU有了开发工具包,有了外围应用软件,有了操作系统核心,还要Linux干什么?Hurd作为一个微内核的OS,代表了操作系统发展的方向,它所提供的一些功能特点也非常诱人。但是,问题却也出现在这里。Hurd是一个高度模块化的操作系统,同时也带来了开发和调试的难度,到目前为止,Hurd都还没有稳定的版本出现,这给Linux带来了机会。当然,我们也有理由相信,Hurd未来的前景还是美好的。


GNU和Linux可以说是"焦不离孟,孟不离焦",聊完GNU,我们再谈谈Linux。


我们都知道,Linux的作者是Linus Torvalds。Linus在上大学期间为了熟悉x86的体系结构自己开发了一个操作系统核心,最初,Linus Torvalds把这个简陋的核心叫做Linus's Minix,因为Torvalds是根据Minix来实现他的系统的。在Torvalds把他的Linus's Minix放在网络上之后,引起了众多开发者的兴趣,这个核心后来被大家叫做Linux。当然,这里还是有些小插曲的,在1992年,Linus老兄和Minix作者Tanenbaum 先生曾经在新闻组上进行过一次著名的口水仗。大家如果对这个口水仗的内容比较感兴趣,可以看这里


Linux的开发可以说是计算机史上的一个奇迹,这种开发模式不同于公司的集中开发,完全是由散落在世界各地的人们通过网络这个载体实现的开发。Linux的这个开发奇迹也引出了一篇著名的学术论文,即Eric Steven Raymond所写的《大教堂和集市》(The Cathedral and the Bazaar)。1994年3月14日是一个值得开源爱好者永远铭记的日子,正是这一天,Torvalds先生和他的朋友们第一次释出了完整的Linux核 心即1.0版本。


由于Linux是由网络社区共同开发出来的,并且采用了GNU组织的GPLv2作为自己的授权许可。所以在某种程度上,Linux的成功也是 GNU的成功。谁也说不清楚GNU和Linux到底是谁成就了谁,只能说它们之间建立起了一种你中由我、我中有你的鱼水关系。隔在大西洋两岸的两位大牛,Richard Stallman先生和Linux Torvalds先生,给我们上演了一出和谐的军民鱼水情大戏。


由于GNU和Linux之间的亲密关系,我们一般把我们使用的这种开源操作系统叫做GNU/Linux。Linux是操作系统核心,GNU是支撑这个核心 的外围软件载体。现在大家用到的RedHat, Ubuntu等等所谓的Linux操作系统实际上是一些发行商把GNU软件和Linux核心以及一些私有的软件及驱动程序整合在一起,然后提供给大家使用的发行版本(distribution)。这些公司和组织将这些形形色色的软件集成成为一个发行版,可以方便用户的使用,也有利于GNU/Linux的普及。


严格的说,Linux只是指Torvalds领导的团队开发的操作系统核心,只有Linux,大家什么都做不了,只有把应用软件和Linux核心整合在一 起时才可以使用。但通常来说,大家谈到Linux时其实指的是GNU/Linux的发行版,只有说道Linux Kernel时才认为是操作系统的核心。另外,当谈到Linux的版本时,要分清Linux Kernel的版本和Linux Distribution的版本。如Ubuntu 10.10,这是Distribution的版本,在这个版本中用到的Linux Kernel的版本是2.6.35。


GNU/Linux的历史很精彩,为了记录这段历史,J.T.S. Moore拍摄了一部同样精彩的纪录片《Revolution OS》,在这部片子里,大家可以一睹开源界大牛诸公的风采。



[后记] 这是我在CU Blog上旧文的一部分,现在搬到这边来,并且与时俱进的做些修订。