GNU/Linux



【内容摘要】


  1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息,宣称他以bash、gcc等工具写了一个可以在Intel的386机器上面运行的内核程序,许多人对此很感兴趣,乘自由软件运动的春风,Linux开始了它不平凡的旅程。


  如今Linux无处不在,不管你在哪儿,都不太可能不用Linux。Linux正在被越来越多的设备和产品所使用,包括遍布世界的公共电话交换网、全球数据网络、手机、无线基站控制器,以及管理这些无线蜂窝网络的通信基础设施,还有各种消费电子产品、汽车车载设备、打印机、路由器等。那么Linux到底是如何创造出来的?
  最初的Linux内核是由芬兰人Linus Torvalds(托瓦兹,1969年出生)所开发的。托瓦兹的外祖父是赫尔辛基大学的统计学家,他的外祖父为了让自己的小孙子能够学点东西,所以从小就将托瓦兹带到身边来管理一些微计算机。正因如此,托瓦兹很小就学会了汇编语言。1988年,托瓦兹顺利进入赫尔辛基大学,并选读了计算机科学系。当时整个赫尔辛基只有一台UNIX 系统的计算机,并且仅支持16个终端机。由于操作麻烦,需要耗费大量时间等待,实在难以满足托瓦兹的需求。为此,他不禁想到“何不自己搞一部UNIX来玩?”不过由于UNIX不向学生提供源代码,要自己写内核程序,谈何容易?


Linux横空出世_操作系统



图1. 年轻时的Linus Torvalds

  托瓦兹是幸运的,因为当时存在一个类似UNIX的系统,并且与UNIX完全兼容,还可以在Intel 386机器上运行。这个系统就是Andrew Tanenbaum教授出于教育目的编写的Minix系统。
  Andrew Tanenbaum出生在美国纽约,但他是荷兰侨民(1914年他的祖辈来到美国)。他在MIT上大学、在加洲大学Berkeley分校念博士学位。由于读博士后的缘故,他来到了家乡荷兰,从此就与家乡一直有来往。后来就在荷兰Vrije大学开始教书、带研究生了。荷兰首都Amsterdam 是个常年阴雨绵绵的城市,而对于Tanenbaum来说,这最好不过了,因为这样他就可以待在家里摆弄他的计算机了。他在1987年编制的MINIX,主要用于学生学习操作系统原理。到1991年时版本是1.5,目前主要有两个版本在使用:1.5 版和2.0 版,当时该操作系统在大学使用是免费的,但其它用途不是,当然目前都已经是免费的,可以从许多FTP上下载。到2014年,MINIX 3.3.0 发布,兼容 x86 和 ARM Cortex A8。


Linux横空出世_linux内核_02



图2. Andrew S. Tanenbaum

  于是,托瓦兹贷款买了一台最新式的386计算机,并且购买了Minix 操作系统进行实验,发现386确实能够很好地支持多任务操作。由于Minix操作系统是附带源码的,所以托瓦兹可以从中学习到很多有关内核程序设计的概念。
  而此时的Andrew Tanenbaum教授忙于教学,已经不大搭理Minix的更新,于是托瓦兹决定用GNU的Bash shell和GCC,参照Minix的设计理念和书上的程序代码自己写一个OS。1991年,托瓦兹将第一个kernel放上FTP网站的一个名为Linux的目录下,编号为0.02。这项伟大的运动就此诞生!
  Linux 操作系统刚开始时并没有被称作Linux,托瓦兹 给他的操作系统取名为FREAX,其英文含义是怪诞的、怪物、异想天开等意思。在他将新的操作系统上载到ftp.funet.fi 服务器上时,管理员Ari Lemke很不喜欢这个名称。他认为既然是Linus 的操作系统就取其谐音Linux 作为该操作系统的目录吧,于是Linux 这个名称就开始流传下来。
  与此同时,从1983年开始的GNU计划已经完成了除系统内核外的各种必备软件的开发。在Linus Torvalds和其他开发人员的努力下,GNU组件可以运行于Linux内核之上。整个内核是基于GPL许可的,但是Linux内核并不是GNU计划的一部分。因为GNU项目有自己的系统内核——HURD,它的开发始于1984年,在Linux出现之前它有7~8年的时间创造出一个可用的内核,然而它的开发进程,不时被频繁的改变中断。Richard Stallman为了无止境寻找完美内核,而忘记了HURD的原本目的——能用的操作系统。Linux的出现恰恰填补了GNU项目在操作系统内核方面的空白。
  在1992年2月发布Linux 0.12 版本时候,托瓦兹采用GPL许可证的新版权声明。GPL规定用户在获取程序的时候有权获得源代码,但 GPL没有规定转让程序是否必须免费。所以理论上,只要有人愿意购买你的程序,你开价100万美元都可以,只不过你必须给他相应的源代码。Linux系统发布没几年就开始受到关注,但托瓦兹并不准备把这个系统卖掉,也不准备失去对Linux的控制权。他坚持开源,希望在GPL许可证效力下,人们能加入进来,参与Linux系统内核的升级过程。
  Linux的标志和吉祥物是一只名字叫做tux的企鹅,Linux的注册商标为Linus Torvalds所有。这是由于在1996年,一个名字叫做William R. Della Croce的律师开始向各个Linux发布商发信,声明他拥有Linux商标的所有权,并且要求各个发布商支付版税,这些发行商集体进行上诉,要求将该注册商标重新分配给Linus Torvalds。


Linux横空出世_linux内核_03



图3. Tux:Linux吉祥物/Logo

  Linux的快速发展离不开GNU项目。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。包含这些组件的Linux软件被称为Linux发行版。通常,一个Linux发行套件包含大量的软件,比如软件开发工具、数据库、web服务器(例如apache)、X window、桌面环境(比如GNOME和KDE)及办公套件等等。
  绝大多数基于Linux内核的操作系统使用了大量的GNU软件,包括了Shell程序、程序库、编译器,还有许多应用程序(例如Emacs)。正是由于Linux使用了许多GNU程序,GNU项目的开创者Richard Stallman博士和自由软件基金会更加推崇将Linux操作系统改名为GNU/Linux。但实际上,很多人还是喜欢把这样的操作系统叫做“Linux”。
  有部分Linux套件,例如Debian,目前一直采用了“GNU/Linux”的称呼,表示其对GNU项目和自由软件基金会尊重和肯定,以及坚守Unix和自由软件的精神。但大多数商业Linux套件依然将操作系统称为Linux。有些人认为“操作系统”一词指的应该只是系统的内核,其他程序都只能算是应用软件,这么一来,该操作系统的内核应叫Linux,而Linux套件是在Linux内核的基础上加入各种GNU工具。


Linux横空出世_linux内核_04



图4. GNU/Linux

  Linux取得了巨大的成功,但创造Linux的托瓦兹,生活跟以前基本一样,开着一辆牌照是“DAD OF 3”的车。家里的壁炉上,放满了他最喜欢的企鹅公仔。对于Linux 系统,Andrew Tanenbaum表示对其开发者Linus Torvalds的称赞。但他认为Linux 的发展有很大原因是因为他为了保持Minix 的小型化,能让学生在一个学期内就能学完,而没有接纳全世界许多人对Minix 的扩展要求。因此,激发了托瓦兹编写Linux,而托瓦兹正好抓住了这个好时机。


Linux横空出世_linux_05



图5. Linus Torvalds和Andrew S. Tanenbaum

  总的来说,Linux系统的成功,离不开以下五大支柱:

  • UNIX 操作系统——1969 年诞生于贝尔实验室,Linux是UNIX的一种克隆系统。
  • Minix操作系统——Minix也是UNIX 的一种克隆系统,但Minix系统提供源代码。
  • GNU计划——开发Linux操作系统,以及Linux 上所用大多数软件基本上都来自GNU 计划。
  • POSIX标准——该标准在推动Linux操作系统以后朝着正规路上发展起着重要的作用,是Linux前进的灯塔。
  • Internet——如果没有互联网,没有遍布全世界的无数计算机Hacker的无私奉献,那么Linux最多只能发展到0.13(0.95)版的水平。

  这个故事告诉我们:机会往往是留给有准备的人,越努力越幸运。