Linux网管日记(9):Linux的前世今生

 

1.Linux的前世

地球人都知道,Linus Torvalds在1991年编写了Linux的核心原型。Torvalds为什么可以写出Linux操作系统?为什么他要选择386的计算机来开发?为什么Linux的发展这么迅速?为什么Linux是免费的?目前为什么有这么多的Linux发行版(distributions)呢?了解这些知识后,才能知道为什么Linux可以免除软件版权之争,并且了解到Linux为什么可以同时在个人计算机与大型机上大放异彩。在实际进入Linux的世界前,我们先来谈一谈这些有关Linux的陈年旧事。

还是那句话,地球人都知道,计算机的基本功能就是:"接受用户输入的指令,通过CPU的数学与逻辑单元运算处理后,产生或存储成有用的信息"。为了实现这项功能,计算机就必须要有以下组件。

  1. 输入单元:如鼠标、键盘、卡片阅读机,等等。
  2. 中央处理器(CPU):含有算术逻辑、控制、记忆等单元。
  3. 输出单元:如屏幕、打印机等。

这些其实就是组成计算机的主要组件。为了连接各个组件,主机板应运而生,计算机的主机中包含了主机板以及CPU,还有各种需要的适配卡。显示器、键盘、鼠标与主机连接,就构成一台可运行的计算机了。另外,由于计算机只能识别0/1,因此,计算机主要是以二进制方式来计算的。计算机根据复杂度分为:超级计算机(Supercomputer),大型机(Mainframe Computer),小型机(Minicomputer),微机(Microcomputer)。

计算机所进行的工作都是计算机硬件实现的,那么,这些硬件如何知道播放VCD呢?这是因为有一种系统在正确地控制硬件工作,该系统就称为操作系统。操作系统可以管理整台计算机的硬件,它可以控制CPU进行正确的运算,可以分辨硬盘里的数据并进行读取,它还必须能够识别所有的适配卡,这样才能正确地使用所有的硬件。所以,如果没有这个操作系统,计算机就等于一堆废铁。说到这里,就要谈谈我们所说的Linux了。

从定义来看,只要能让计算机硬件正确地运行,就算是操作系统了。所以,操作系统其实就是核心与其提供的接口工具。如上所述,因为最基本的核心缺乏与用户沟通的友好界面,所以在目前,一般提到的操作系统,都会包含核心与相关的用户应用软件。核心就是"Kernel",它是操作系统最底层的东西,每个操作系统都有自己的核心,由它来掌管整个硬件资源的工作状态。所以,当有新的硬件加入到系统中时,若核心并没有支持它,这个新硬件就无法工作,因为控制它的核心并不认识它。

Linux就是一个操作系统。在这个操作系统中,含有最主要的核心以及核心提供的工具。它提供了一个完整的操作系统中最底层的硬件控制与资源管理的架构,这个架构沿袭了UNIX良好的传统,所以相当稳定且功能强大。此外,由于这个优良的架构可以在目前的个人计算机(x86系统)上运行,所以很多软件开发人员将他们的工作重心移到了这个架构上,即指很多的应用软件。虽然Linux仅是其核心与核心提供的工具,不过,由于核心、核心工具与这些软件开发人员提供软件的整合,Linux成为一个更完整的、功能强大的操作系统。

2.关于GNU计划

1984年,创立GNU计划与FSF基金会的史托曼先生认为,编写程序最大的快乐就是让自己开发的好软件可供大家使用。既然程序是供大家分享的,而且每个人所使用的计算机软硬件并不相同,那么,该程序的源码就应该同时发布,这样才能方便大家修改,适用于每个人的计算机中。这种发布源码的举动就称为开放源码。此外,史托曼还认为,如果能分享程序的源码,该程序是很优秀的,那么将会有很多人使用它,而且每个人都可以查阅程序源码,排除程序中的错误,这个程序将会越来越健壮,越来越优秀。

为了避免开发的开放源码的自由软件被用做版权软件,史托曼同时将GNU与FSF开发出来的软件都挂上GPL的版权声明,这个FSF的核心观念是“版权制度是促进社会进步的手段,版权本身不是自然权力”。为什么要称为GNU呢?其实GNU是GNU's Not UNIX的缩写,意思是说,GNU并不是UNIX。如果写过程序,就会知道,这个GNU = GNU's Not UNIX可是无穷循环。

什么是开放源码呢?所谓的源码(source),就是程序开发人员编写出来的原始程序代码,开放源码就是在发布软件时同时将作者的源码一起公布。

那么,GPL(GNU General Public License, GPL)是什么?为什么要将自由软件挂上GPL的“版权声明”呢?这个版权声明对于作者有什么好处?首先,克托曼对GPL一直是强调Free的,这个Free的意思是这样的:
"Free software" is a matter of liberty, not price. To understand the concept, you should think of "free speech", not "free beer". "Free software" refers to the users freedom to run, copy, distribute, study, change, and improve the software
大意是说,Free Software(自由软件)是一种自由的权力,并非是“价格”。举例来说,您可以拥有自由呼吸的权力,拥有自由发表言论的权力,但是,这并不代表您可以到处喝“免费的啤酒(free beer)”。也就是说,自由软件的重点并不是指“免费”的,而是指具有“自由度(freedom)”的软件。史托曼进一步说明了自由度的意义是:用户可以自由执行、复制、再发行、学习、修改与强化自由软件。这无疑是个好消息。因为如此一来,所拿到的软件可能原先只能在UNIX上运行,但是,经过源码的修改之后,您将可以在Linux或是Windows上运行。总之,一个软件挂上了GPL版权声明之后,它自然就成了自由软件。这个软件就具有如下特性。

• 获取软件与源码:可以根据自己的需求来执行这个自由软件。
• 复制:可以自由复制该软件。
• 修改:可以将获取的源码进行程序修改,使之适合自己的工作。
• 再发行:您可以将修改过的程序再度自由发行,而不会与原先的编写者发生冲突。
• 回馈:您应该将您修改过的程序代码回馈于社会。
请特别注意,您所修改的任何一个自由软件都不应该也不能有下面这样的要求。

• 修改授权:一个GPL授权的自由软件,在您修改后,不能取消GPL授权。
• 单纯销售:您不能单纯销售自由软件。

也就是说,既然GPL是站在互助互利的角度上去开发的,您不能将大家的成果占为己有,而取消GPL授权。因此,您不可以取消GPL软件的授权,即使已经对该软件进行了大幅度的修改。那么,自由软件也不能销售吗?当然不是。上一节中我们提到史托曼曾通过销售Emacs获取一些经费。自由软件是可以销售的,不过,不可以仅销售该软件,应同时与售后服务与相关手册一起提供,这些可就需要工本费了。

很多人也许还有疑问,目前不是有很多Linux开发商吗?为什么他们可以销售Linux这个GPL授权的软件? 原因很简单,因为他们大多都是在销售“售后服务”,所以,他们所使用的自由软件,都可以在网站下载(当然,每个厂商自己开发的工具软件就不是GPL的授权软件了)。但是,您可以购买他们的Linux光盘,如果购买了光盘,他们会提供相关的手册说明文件,同时也会提供您数年的咨询、售后服务、软件升级与其他相关服务,所以,目前自由软件工作人员赖以维生的几乎都是“服务”领域。毕竟自由软件并不是每个人都会编写,有人需要您的自由软件时,他就会请求您的协助,此时,您就可以通过服务来收取费用。这样来说,自由软件确实还是具有商业空间的。

当然,GPL给程序开发人员带来的好处相当多,但对于那些不熟悉程序的人们来说,GPL的优点不太容易看出来。首先,虽然它是随手可得的自由软件,您也必须要会使用基本的编译器(这也是您为什么要买这本书/查看笔者网站的原因)。这对于一般人来说并不容易。当然,如果每个人都跟史托曼一样,那么商业公司就不用存在了。对于不懂程序的人来说,商业公司可以快速提供帮助;而对于读者来说,认识了/学习了Linux与自由软件的相关技巧后,会有益于我们将来的发展。

3.Linux的开发故事

Linux虽然是托瓦兹发明的,但内容不会涉及版权软件的版权问题。不过,如果只靠托瓦兹自己一个人的力量,Linux要茁壮成长也很困难,因为一个人的力量毕竟很有限。好在托瓦兹选择Linux的开发方式相当务实。首先,他将发布的Linux核心放在FTP上,并告知大家新的版本信息,等到用户下载了这个核心并且安装之后,如果发生问题,或者是由于特殊需求需要某些硬件的驱动程序,那么这些用户就会主动将信息反馈给托瓦兹。在托瓦兹能够解决的问题范围内,他都能快速进行Linux核心的更新与除错。

由于总是有些硬件无法使用,托瓦兹当然无法帮助驱动程序的编写与相关软件的改善。这个时候,就会有些志愿者站出来说:“这个硬件我有,我来帮忙写相关的驱动程序。”因为Linux的核心是开放源码的,黑客志愿者很容易参考Linux的原设计架构写出兼容的驱动程序或者软件。志愿者写完的驱动程序与软件,托瓦兹是如何处理的呢?他会将该驱动程序/软件带入核心中,加以测试。如果测试可以运行,并且没有什么大问题,他就会将志愿者写的程序代码加入核心中。总之,托瓦兹是一位很务实的人,对于Linux核心所缺少的项目,他的处理方式是“先求有且能运行,再求进一步改善”。这让Linux用户与志愿者得到相当大的鼓励。因为Linux的进步太快了,用户要求虚拟内存,结果不到一个星期推出的新版Linux中就有了。这不得不让人佩服。

由于这种程序代码的加入,Linux便逐渐开发成具有模块的功能。即将某些功能独立出于核心外,在需要的时候才加载到核心中。如此一来,如果有新的硬件驱动程序或者其他协议的程序代码,就可以模块化,大大提高了Linux核心的可维护能力。

因为Linux核心加入了太多的功能,仅托瓦兹一个人进行核心的实际测试并加入核心原始程序实在太费力,于是,就有很多朋友帮忙。例如考克斯(Alan Cox)与崔迪(Stephen Tweedie)等,这些人会先测试来自志愿者的修补程序或者新功能的程序代码,并将结果上传给托瓦兹,让托瓦兹确定最后核心加入的源码。分层负责的结果,让Linux的开发更加容易。

特别值得注意的是,这些托瓦兹的Linux开发副手,以及自愿传送修补程序的黑客志愿者,其实都没有见过面,而且分散在世界各个角落,大家群策群力地共同开发出今天的Linux,我们称这群人为虚拟团队。为了虚拟团队数据的传输,Linux成立了核心网站:http://www.kernel.org。这群素未谋面的虚拟团队,在1994年终于完成了Linux的核心正式版1.0。这一版同时还加入了X Window System的支持。1996年完成了2.0版,同时应商业版本的需求,开始将核心版本同时开发测试版及稳定版,次版本偶数为稳定版,奇数为开发中的测试版。例如2.6版与2.5版为相同的版本,不过,2.6版为稳定版,2.5版则为测试版。测试版含有较多的功能,不过稳定性较差,并且托瓦兹指明了企鹅为Linux的吉祥物。

托瓦兹小时候去动物园被企鹅咬了一口。在正式推出2.0版时,大家要他想一个吉祥物,他就将这个念念不忘的企鹅当成了Linux的吉祥物了。

由于托瓦兹是针对386机器写的,与386机器的硬件密切相关,所以,早期的Linux确实不具有可移植性。不过,开放源码的好处就是,可以修改程序代码去适应工作环境。因此,在1994年以后,Linux便被应用到很多硬件上了。目前除了x86之外,IBM、HP、Sun等公司生产的硬件也都被Linux所支持。

4.Linux 的前世今生

我们现在已经了解Linux其实就是一个操作系统最底层的核心及其提供的核心工具。它是GNU授权模式,所以,任何人均可获取源码,可执行这个核心程序,并且可以对它进行修改。此外,因为Linux参考POSIX设计规范,于是兼容于UNIX操作系统,所以可称之为类UNIX的一种。

Linux的出现,让GNU项目轻松起来,因为GNU一直缺乏核心程序,导致GNU自由软件只能在其他UNIX上运行。既然Linux出现了,且Linux也用了很多的GNU相关软件,所以Stallman认为,Linux的全名应该叫做GNU/Linux。不管怎么说,Linux确实不错,使得GNU软件大多以Linux为主要操作系统来进行开发。很多其他自由软件团队,例如sendmail、wu-ftp、apache等,也都有以Linux为开发测试平台的计划。如此一来,除了主要的核心程序外,可以在Linux上运行的软件也越来越多,如果有心,就能够完成一个完整的Linux操作系统。

虽然由托瓦兹负责开发的Linux仅具有核心与核心提供的工具,不过,如上所述,很多软件已经可以在Linux上运行,因此,“Linux + 各家软件”就可以完成一个相当完整的操作系统了。不过,要完成这样的操作系统还很难,因为Linux早期都是由黑客工程师开发维护的,他们并没有考虑到一般用户的能力。为了让用户能够用到Linux,很多商业公司或非盈利团体,就将 Linux 核心(含工具)与可运行的软件整合起来,加上自己具有创意的工具程序,这个工具程序可以让用户通过光盘或者网络直接安装/管理Linux系统。这个“核心 + 软件+ 工具”的可完整安装的系统,我们称之为Linux distribution,一般中文翻译成可完整安装的套件或安装套件等(这里简单称之为Linux版本)。

你可能感兴趣的:(Linux管理员日记)