文章出处:http://www.cnblogs.com/settingyin/archive/2005/09/14/236389.html
首先,强烈建议你看看本书序。里面涉及到我的一个“软件使用度”的概 念。很多人对于书的前言或序不感兴趣。笔者个人观点:不仅重要而且必须。想在短时内(如在书店里)评一本书,最主要两点:一是序,二是出版社。如果两者皆 满意,基本上可以买下此书了。(什么出版社才是满意的出版社?序言中有我的浅析。)
注意: 上 面的这段话应该写在序言里,只觉总有急切,序言一概略之。本人冒天下之大不讳,留笔此地,以示提醒。我喜爱读书,对读书习惯没有深研也有浅析,发现一种有 趣的读书习惯:翻到第一章第一节仔仔细细研究之;再下去就是粗粗略略浏览之;最后就是不知不觉高搁之;结果就是干干净净忘光之。这种读书习惯的人不在少 数。这也是我把这一段放在此地之缘由。
本章讲述linux发展历程及基本概况。即使你对linux一无所知,学完本章,也会发现此时你对linux的发展过程比以往任何时候都清晰明鉴。笔者一直把自己当作“傻瓜”,故写本书之际,我把每一位读者也当“傻瓜”,这样可以促使我把它写的尽可能详悉和清楚。
有人认为,学linux使用对于linux如何发展并不重要。到目前为止,我只能作为一个过来人 告诉你:知道linux的发展对于你理解linux绝对百利而无一害。很多linux概念的理解需对linux背景的理解,就好比你喜欢一个女孩子为什么 总是先想了解她的背景。因为你想更好的研究她。当然,如果你只是想“应用”她,那么这个女孩的背景对你是没有意义的。这就是为什么你不会对一个妓女背景感 兴趣的原因。你只是想“应用”她。
在一帮子不熟悉linux的同学面前滔滔不绝linux发展,即使什么都不会,你也绝对让人刮目使人羡慕受人仰慕。就好比大学时代取得的高分,可能你什么也不懂,只是知道如何考试。但在外人面前摆弄一翻,也绝可自我满足一阵。
1.1 什么是 linux?
最节俭地说,linux是一个操作系统。它使得计算机上的软件和硬件之间协调工作,就好像 Microsoft Windows(MS windows,微软的windows系统)系列操作系统(MS Windows和linux之间又有着巨大的差别。不仅差别巨大,甚至互相对立,互相攻击。缘何对立?缘何攻击?尽在本章中。)。至于linux具体特 性,很难用一句或者一段话来表述清楚。但可以有一个大概了解:linux是一个多任务的多用户的多平台的在保护模式下的遵守POSIX标准的遵守SYSV 和BSD扩展的遵守GPL许可的32位(也有64位)的类UNIX的开放源代码的免费操作系统。这句话基本上涵概了当今linux最流行最重要最主要的特 性。可能读者对以上的一些名词云里雾里,不知所云,简单介绍:
1. 多任务
计算机在同一时刻运行多个应用程序的能力。
2. 多用户
计算机在同一时刻被多个用户访问的能力。如网络上的服务器必须是多用户的。因为网络上的服务器需要能够同时接受多个用户的同时访问。除了 linux 系统,比较熟悉的 Win2000 也是多用户的操作系统。多用户操作系统最主要的特点是:同一时刻不同的用户访问。例:一台 windows98 机器,虽然可以有好几个不同的帐号,但不能同时访问,所以它并不是多用户的。
3. 多平台
可以在不同种类的 CPU 下工作。不要以为世界上就只有 intel , AMD 这样的兼容 CPU ,还有很多种类的 CPU 。如: Alpha 、 Sparc 。
4. 保护模式
在 linux 下应用软件无法访问系统分配的内存以外的内存区域。如此,一个软件的错误不会造成整个系统的瘫痪。 有些人没事在那里叫嚣: linux 理论上永远也不会死机,就是这个原因。(但事实上还是会死的)
5.POSIX
POSIX 表示可移植操作系统接口( Portable Operating System Interface ,缩写为 POSIX 是为了读音更像 UNIX )。电气和电子工程师协会( Institute of Electrical and Electronics Engineers , IEEE ) 最初开发 POSIX 标准,是为了提高 UNIX 环境下应用程序的可移植性。然而, POSIX 并不局限于 UNIX 。 许多其它的操作系统,例如 WinNT ,都支持 POSIX 标准,尤其是 POSIX.1 。 POSIX.1 提供了源代码级别的 C 语言应用编程接口( API )给操作系统的服务程序,例如读写文件。 POSIX.1 已经被国际标准化组织( International Standards Organization , ISO )所接受,被命名为 ISO/IEC 9945-1:1990 标准。
6.SYSV 和 BSD 扩展
可以理解为和 SYSV 和 BSD 源代码级的兼容。简单一点,就是 Linux 下的应用程序同时也能在这两个系统上运行。 SYSV 和 BSD 也是两个操作系统,不知道这两个系统是什么?那就往下看。
7.GPL ( General Public License )
公用许可证,下文会有详解。
1.2 发音问题
1.2.1 linux 的发音
linux发音是五花八门版本颇多,就笔者见到和听到的不下10种。对这种情况,据说,linux的创始人Linus(Linus Torvalds)针对读音分歧较多的情况,特意录了一段他对Linux的发音。这段录音的内容是这样的:“Hello,this is Linus Torvalds and I pronounce Linux as Linux”。我听出来的是/'li:n э ks/ , 综合网上和linus自己的读音,概括出几个自认为最合适也最通用的读法:/Li'n Q ks/(“里那克斯”)或/'li:n э ks/( “里呢克斯”)或/Li'nu:ks?/(“里纽克斯”)。这几个应该是谁都听得懂的。至于哪个比较正宗,当然是linus的原音。但事实上似乎使用linus那种读发的人并不在多数。
提示: 上面的这段录音可以在RedHat中调试声卡的时候可以听到,如果你的声卡调试成功,系统会播放上面一段声音以示成功。
1.2.2 Linus Torvalds 的发音
我们还应该了解一下其作者名子的发音。毕竟是一个人的名子,没人敢随便念。基本上比较统一。在英语中,Linus Torvalds(/li'nus 't R w R :z/)中文就是“李纽斯·托沃兹”,也有翻成“李纳斯·托沃兹”的。但是你有机会听上面提到的那段录音,可以发现他念的是“李纽斯·托沃兹”。一般我们称他为linus先生,也就是“李牛死”。
1.2.3 UNIX 的发音
毫无疑问,就是/ U :niks/。
1.2.4 GNU 的发音
GNU是“GNU's Not Unix”的递归缩写。在英文里面正好有这个词,原意为非洲牛羚,发音是 :/nU : / 。和英文中new发音一样。但是这个醒目的发起人觉得这个发音要和new搞起来,所以他宣布应该发:Guh-new 。 很多人觉得和gun蛮像的,大约着把它念成/g Q n/,就是和gun(手抢)同音,其实非也。
1.3 linux 如何诞生?
Linux最早是Linus Torvalds在1991年开始设计开发的。linus是芬兰人,赫尔辛基是芬兰的首都,当时他正是赫尔辛基大学计算机系的学生,23岁。芬兰是北欧的一个小国,国土大部分处在北极圈内。怪不得linux的吉祥物是一只企鹅。
1990年的秋天,linus在赫尔辛基大学学习UNIX(一种操作系统,和linux有密切联系,在后面本章小节中我会详悉介绍)课程,教材是 Andrew Tanenbaum教授写的《操作系统:设计与实现》(现在中译本很多,大家可以找来看看)。学校上机要排队,让他浑身发毛,一毛之下,就 干脆自己买一台。所以依笔者之见,学习电脑,有一台属于自己的能随时使用的PC是很重要的。不辛的是,我就亲耳听到一个计算机系的老师谆谆教导我们:“大 一的时候我不赞成你们买计算机。”还滔滔不绝,理由一堆。不知道他是怎么想的。《操作系统:设计与实现》是用Minix(Andy Tanenbaum教 授所写的很小的Unix操作系统,主要用于操作系统教学。由于UNIX和Minix有很大联系,后面将有详细介绍)作为例子来讲授课程的。所以他接触到 Minix,刚开始他是在Minix环境下写了一个处理多任务切换的程序,用他自己的话来描述这个程序:“这个程序包括两个进程,都是向屏幕上写字母,然 后用一个定时器来切换这两个进程。一个进程写A,另一个进程写B,所以我就在屏幕上看到了AAAA,BBBB,如此循环重复的输出结果。”linus在练 习使用Minix时,发现其功能很不完善。于是他就有了一个目标:写一个比Minix更好的Minix。所以Minix是linux的父亲。
在1991的时候,主观上有了这样一个目标,当时linus又需要一个简单的终端仿真程序来存取 Usenet新闻组的内容,于是他就开始在上面两个草草编写的进程的基础上又写了一个程序。当然,他把那个A和B改成了别的东西。而新加上去的程序,他是 这样描述的:“一个进程是从键盘上阅读输入然后发送给调制解调器,另一个进程是从调制解调器上阅读发送过来的信息然后送到屏幕上供人阅读。”然而要实现这 两个新的进程,他显然还需要一些别的东西,这就是驱动程序。他必须为不同的显示器、键盘和调制解调器编写驱动程序。1991年的夏季,也就是他购买了第一 台PC机之后6个月,Linus觉得他还需要从网上下载某些文件,为此他必须读写某个磁盘。于是他又不得不写一个磁盘驱动程序,然后是一个文件系统。而一 旦你有了任务切换器、文件系统和设备驱动程序之后,你当然就拥有了一个操作系统,或者至少是它的一个内核。linux也就这样诞生了。
1.4 UNIX 的发展
1.4.1 UNIX 的诞生:
1964年,美国电话电报公司(AT&T, American Telephone and Telegraph Incorperation ) 的贝尔实验室、通用电器公司(GE,General Electric Co. )、麻省理公学院(MIT,Massachusettes Institute of Technology)合作开发一个名为Multics的,用于大型机的操作系统。Mulics的主要目标是提供一种多任务多任务的计算环境,使其具有较 强的通用性,从而方便实现软硬件资源的共享。然而Multics所追求的目标实在是太过庞大和复杂,以至到最后设计者自己也不知道到底是想把他做成什幺东 西。AT&T就走为上策,撤走了所有的开发人员,退出这个项目。这批人回到BELL实验室计算机研究中心(Computer Science Research Center),他们发现自己没有一个方便的交互服务可用了。Ken Thompson(肯·汤普森)和Dennis Ritchi(丹尼斯·里奇)(丹尼斯·里奇是著名的C语言的两个创始人之一)在中心其它人的协助下,给出了这种环境的文件系统规范说名。然 后,Thompson开始着手这个文件系统的模拟软件,并对请求调页的存储管理技术进行模拟。同时,他还编了一个名为SpaceTravelling的游 戏。在编游戏的过程中,他发现原先的那台机器处理速度和图形处理能力不强。后来找到一台堆在角落里的PDP-7(以前的一种计算机型号)机器,恰好能满足 Thompson的要求。可是在PDP-7上没有一个好的开发支持环境,写的程序要经过原来那台机器的处理在再把结果送到PDP-7上,非常麻烦。 Thompson和Ritchi以及他的同事们决心要在这台PDP-7上开发出一个好的支撑环境。利用前面提到的“文件系统规范说明”,通过这群才华横溢 的天才程序员的努力,这样的环境终于实现了。这个环境就是最初的UNIX。
1973年,开发者门用C语言重写了UNIX(在C语言以前,几乎所有的操作系统都是用汇编语言写成的),这虽然导致了其速度的%20~%40的下降,但 这向人们宣布操作系统的开发不是汇编语言的天下了。因为用C远语言写成的操作系统有很强的可移植性。也正是由于C语言接近汇编语言的功能和比之汇编语言强 得多的可移植性而为人们津津乐道。
1.4.2 版本发展:
UNIX的版本十分复杂。这里从其第一版说起,简要说明有重要意义的几个版本。
V1(1971):第一版的UNIX,以PDP-11/20的汇编语言写成。包括文件系统,fork、roff、ed等软件。
V4(1973):以C语言从头写过,这使得UNIX修改容易,可以在几个月内移植到新的硬件平台上。最初C语言是为UNIX设计的,所以C与UNIX间有紧密的关系。
V6(1975):第一个在贝尔实验室外(尤其是大学中)广为流传的UNIX版本。这也是UNIX分支的起点与广受欢迎的开始。
V7(1979):在许多UNIX玩家的心目中,这是“最后一个真正的UNIX”。因为AT&T在这个时候认识到UNIX的价值,在70年代末期,对UNIX的使用和发布强制实施版权。
由于AT&T在V6版的时候,他们并不知道拿UNIX怎么办。所以AT&T就向 外界(特别是大学)免费发放UNIX及其源代码。其中有一个不得不提的大学:美国加州大学的伯克利(Bekely)分校。到了70年代末,也就是在V7版 的时候,AT&T认识到UNIX的价值,成立了UNIX系统实验室(USL,Unix System Lab。1993年初被Novell收购。Novell于1993年末将UNIX这个注册商标转让给X/Open组织。X/Open协会后来成为了 Open Group。Open Group是一个协调各大公司利益,设计和推广大家都能接受的技术方案,引导学术研究、消费者使用习惯的一个组织。)来继续发展UNIX。同时 AT&T也宣布对UNIX产品拥有所有权,对UNIX强制实施版权。几乎同时,加州大学伯克利分校计算机系统研究小组 (CSRG,Computer Science Research Group)对UNIX进行研究,增加了很多当时非常先进的特性,很多其它大学和商业机构,都希望能得到CSRG改进的UNIX系统。因此CSRG中的研 究人员把他们的UNIX组成一个完整的UNIX系统──BSD UNIX(Berkeley Software Distribution UNIX),向外发行。BSD很自然成为第2个主要“UNIX”版本。
当然,除了BSD之外,还有很多UNIX的厂商也纷纷出现,但他们大多只是在AT&T UNIX或DSB UNIX基础上进行一些修改,这样就形成了UNIX的许多变体。从此,我们习惯上就把这种UNIX的变体称为类UNIX操作系统,或者干脆为UNIX操作 系统。因为发展到现在,UNIX已经演变为操作系统的一个种类了。
从1977年到1982年,AT&T把这些变体综合成一个单一的系统,这就是UNIX System Ш 。1983 年又宣布了System V。(System 4只是实验室内部使用,并没有公布)。到了80年代末,AT&T放弃了System X的命名方式,对于其以后的版本,记为System V Release X(缩写为SVR X)。如:SVR3、SVR4等。其中SVR4就是AT&T UNIX 和BSD UNIX完美结合的产物。
同时, BSD 的程序员也积极改进 AT&T 的源代码, BSD UNIX 被很多商业厂家采用,成为很多商用 UNIX 的基础,同时很多研究项目也是以 BSD UNIX 为研究系统,例如美国国防部的项目 ─ARPANET ( Advanced Research Projects Agency NET ,原来是军事网络,后来发展成为了今天的 Internet )。在作了许多修改工作之后,伯克利大学注意到原来的贝尔实验室的 Unix 源码已经所剩无几,不需要一个源码许可证(由于 AT&T 的商业控制,所有使用 AT&T 源代码的单位都需要 AT&T 发布的源码许可证)了,于是就自己推出了一个操作系统: BSD/386 ,由伯克利软件设计公司( BSDI,Berkeley Software Design, Inc. )生产。
到了1992年的时候,UNIX系统实验室(USL)指控BSDI──在没有得到许可的情况下发 布自己的UNIX版本 ,违反了AT&T的许可权,并进一步指控伯克利计算机系统研究组泄漏了UNIX的商业机密,虽然此时的4.3BSD(4.3BSD几乎和 BSD/386相同)中来自AT&T UNIX的代码已经不足10%。一场旷日持久的诉讼开始了,法庭最终宣判BSD/386不得再发布。然而,此时的宣判已经意义不大了,因为4.4版的 BSD的已经准备就绪,我们称之为4.4BSD-Lite。这个版本不包含任何的AT&T源代码。从这个版本开始,BSD已经不在再需要 AT&T的源代码许可证了。BSD可以任意发放自己的源代码。
但是无论UNIX的版本如何复杂,目前为止,UNIX的版本主要还是“AT&T发布的 System V”与“美国加州大学伯克利分校发布的BSD”。现在市场上的UNIX也基本上都是这两大流派的变体和衍生物。但是注意:linux并不是这两大流派的衍 生物,它完全没有UNIX的任何代码。那为什么把它称之为UNIX操作系统?下面我们会讲到。
1.5 linux 和 UNIX 的关系
在讲UNIX和linux两者关系之前,我们先了解一下Minix。Minix最初是由 Andrew Tanenbaum教授在4.3BSD的基础上,但不通过修改4.3BSD的源代码而是白手起家几乎一个人完成了12000行C语言程序的编写工作。它的 特点功能简单、易懂可以在8086上运行(后来也能在80386上运行),当然我们称它为UNIX操作系统。但这个Minix的功能也非常的有限,几乎没 什么实用价值,但它能很好地作为教学使用。后来网上很多人给Tanenbaum教授寄来了改进,可是Tanenbaum教授没有接受。他想保持Mnix小 而简单的特性。从它的名字中不难看出,Minix是一个迷你型的操作系统。
读到这里,大家应该清楚UNIX和Linux的关系了:linux最初是由Minix发展而 来,Minix是由4.3BSD UNIX发展而来,4.3BSD UNIX是由AT&T的所谓真正的UNIX发展而来。可以总结出:Minix是linux的父亲,而UNIX则是linux的祖父了。虽然 UNIX和linux的源代码完全无关,可是linux中的许多特性和UNIX有很多相等之处。如:
1.Linux 采用了 SVR4 的进程间通信(IPC)机制:共享内存、消息队列、信号灯
2.Linux 支持 BSD Socket 网络编程接口
3.许多 Linux 发行版采用 SysV init 机制,支持运行级别
所以我们认为linux是UNIX操作系统。
1.6 linux 和 windows 的关系:
说到这两者的关系,还不如说说两者的区别,说到底,也就是谁更好一些的问题。从我对于windows和linux的一段时间的使用和网友们的交流,我总结出了一些大家普遍认可的简洁易懂的一些区别。当然,大家完全可以不同意。因为这个问题本生就有很大分歧,两大阵营的人也总是各执一词。仁者见仁,智者见智。
1.6.1 在硬件要求方面
Linux可以不装载全部的驱动程序,这样可以最大化使用内存。毫不夸张的说,你可以在你的486机器上安装Linux并将其用做防火墙或Web服务器。 而比之Windows2000 呢?windows2000的服务器版最低配置是P233CPU+128M RAM。而所谓的最低配置就是进入操作界面就死机的那种。没有人愿意开个窗口一分钟。
1.6.2 网络功能上
可以说linux对于TCP/IP(大家应该知道,使用最广泛的网络传输协议)是最高级别的。 Linux提供了对于当前的TCP/IP协议的完全支持,并且包括了对下一代Internet。协议Ipv6(IP地址长度机制,现在我们使用的是 ipv4即32位的。而新的ipv6将达128位。)的支持。Linux内核还包括了IP防火墙代码、IP防伪、IP服务质量控制及许多安全特性。这些特 性可以和像Cisco公司的高端路由设备相媲美。
1.6.3 使用方便性
由于linux系统的不可操作性,严重影响了linux的普及率。而微软的windows产品也 正是由于其友好的界面在计算机操作系统市场占据了%90以上的市场。虽然linux有两个很不错的图形操作界面:GMONE和KDE。可是我们发现,还是 有太多的功能要在命令行方式实现。在这个问题上,linux有待改进
1.6.4 新技术支持速度上
由于开放源代码的特点,成千上万的人可以开发这个软件,快速地找到并修改其错误码。***说过人多力量大。这里就被很好的体现。而且许多硬件厂商也可以直接阅读其源代码从而迅速提供对他支持。最好的一个例子就是:最新的Linux 内核2.5.2版中最引人注意的改进就是Iinux内核开始支持最新的USB2.0技术。USB 2.0可以确保数据传输速度达到480Mb/s,这个速度是USBBl.1最高传输速度的40倍。但是在最新的操作系统windows xP中却不支持USB 2.0。
1.6.5 设备驱动上(对硬件的支持上)
早期的LINUX对硬件设备的支持不好,特别是对声卡的支持,烂是出了名的。我刚开始装我的声卡 的时候花了我两天。当然我想这是个时间问题。如内核2.4各个主要LINUX软件提供商的产品已经可以识别象刻录机,扫描仪等新设备。不过和 windows比就差一点。我在装winwdos XP的时候感觉不到驱动的存在,完全识别。
1.6.6 安全上
1998年的CIH病毒 ,随之而来的基于OUTLOOK传播美莉莎,欢乐时光,红色代码等病毒更是令IT行业以及相关领域损失惨重。而LINUX方面,没有出现过真正意义上的病 毒。而关于世界上第一个Linux病毒reman我也听说了。其实严格说来,这并不是真正意义上的病毒。实际上这是一个在UNIX/Linux世界早已存 在的“缓冲区溢出”攻击程序。几乎所有UNIX/Linux版本中都或多或少地存在这样的问题。但和windows相比,就是小巫见大巫关公面前使大刀 了。由于linux的稳定性一流,其中的数据不易遭到系统突然停止的破坏。资深的系统安全分析家肯定地认为:在未来的5年里,Linux将成为最安全稳定 的操作系统。
1.6.7 价格上
linux当然具有不可比拟的优势。现在各大发行商的linux,如果从网上下载,几乎可以免费获得。windows xp简体中文家庭版的价格为1498元,专业版为1998元。而国内几家厂商的Linux桌面系统的价格均不超过100元,以Xteam公司最新版 Linux4.0为例,标准版仅为28元,程序员版为58元。虽然Linux与微软最新的Windows XP之间在性能上有着差距,但linux的性价比是最高的。我在网上看到一家公司的研究报告说:一个24人的小型公司将大部份的计算机转换到Linux之 后,拥有相当于升级到Windows2000功能性的话,可以为公司省下1万美元以上的资金。
1.6.8 在编程方面
linux具有对多种语言如:C、C++、Java、 Tcl/tk、 Perl 等很多语言的编译器/解释器,以及集成开发环境、调试和其它开发工具。以前,我们一直对windows平台下如VB VC软件开发的高效和便捷津津乐道,也是windows对linux围剿的利器。可是现在一切都改变了,因为有了Borland公司的Kylix。提起 borland公司,在业界几乎是无人不知无人不晓, Borland 公司一向以高性能、高效率的应用程序开发工具而着称,最著名的是DOS平台上的Turbo C、Borland C++,Windows平台上的Delphi、C++Build和Java开发工具。以上这些产品都称得上是经典之作,尤其是以面向对象的Pascal为 基础的Delphi,更是经典中的经典,C++Bulid也是脍炙人口。Kylix就提供了linux版的Delphi和C++Bulid。这两个版本被 认为是linux平台上第一个 RAD(Rapid Application Development,快速应用软件开发工具)开发工具。
说了这么多linux的好处和这么少linux的劣势,而事实上我们很少能够看到有人正在使用它。特别是桌面应用。难道这么多优势是在唬人?当然不是。限制Linux发展最重要的一点就是他的易用性。由于易用性不强,普及率比较低其中的优势当然无处体现喽。
1.7 linux 和 UNIX 名字的由来
1.7.1 linux 名字由来
开始,linux还没有专门的新闻组。linus只是在赫尔辛基技术大学的一台FTP服务器上发 了一则消息,说可以下载linux的公开版本。Linux是linus的笔名,他担心如果用Linux来命名的话有人会说他狂妄而且不会认真对它。于是他 用了一个很怪的名字Freak(free+freak+X)---free就是自由;freak愿意是怪胎的意思。表示这个系统还有很多不完善的地方。加 上X是模仿UNIX和MINIX让人家一看就知道这是一个操作系统。后来,这台FTP的管理员不喜欢Freax这个名字,最后选择了Linux.。
1.7.2.UNIX 名字由来
UNIX这个名字是由BELL实验室的一位开发人员想出来的。想想UNIX的前缀UNI在英文中就是小而巧的意思。这个意思正好和Multix中的前缀Multi在英文中多而繁相对应。
1.8 什么是自由软件?
1.8.1 全球流行的软件按其提供方式和是否赢利可以划分为四种模式
1. 商业软件 (Commercial software)
商业软件由开发者出售拷贝并提供技术服务,用户只有使用权,但不得进行非法拷贝、扩散和修改;当然不可能给你源代码。如果你想升级就只能等他的升级版本。
共享软件( Shareware ):
2. 共享软件
由开发者提供软件试用程序拷贝授权,用户在试用该程序拷贝一段时间之后,必须向开发者交纳使用费用,开发者则提供相应的升级和技术服务;也不提供源代码。
3. 自由软件( Freeware 或 Freesoftware )
而自由软件则由开发者提供软件全部源代码,任何用户都有权使用、拷贝、扩散、修改。但自由软件不一定免费。它可以收费也可以不收费。
4. 免费软件( freeware )
他的英文名称和自由软件一样。所以很多书上都把它归为自由软件。其实那是不确切的。免费软件是不要钱的。但免费软件不一定提供源代码。可以提供可以不提供。只有当自由软件免费的或者免费软件提供软代码的时候才是一样的。
1.8.2 Richard Stallman 和 GPL
看得出来,自由软件继承了其它软件的很多优点。这里我们不得不介绍一个人:Richard Stallman。他在1971年加入MIT的人工智能实验室,并在工作期间取得哈弗的物理博士学位。他认为:知识应该与其它能从知识中受益的人一起共 享,重要的资源应该被利用。他想把自己开发的软件与其它人共享,按照法律,他是MIT的员工,他写的程序是属于MIT的。为了不冒犯法律,毅然辞职。大约 在一年以后,由于个别的公司控制了许多公共软件的开发项目。自1984年起MIT开始支持Richard Stallman的努力。这样就导致了自由软件基金会(Free Software Foundation,FSF)的建立。他认为:计算机系统因该开放,软件应该自由使用。在其它人协作下,他创作了通用软件许可证(General Public Licese,GPL)。这对推动自由软件的发展起了重要作用。GPL主要的规定:
1) GPL保证任何人有共享和修改自由软件的自由。还可以把修改后的软件向公众发布。但是发布者要无条件开放其源代码。这样就保证自由软件的低价。
2) GPL规定自由软件的衍生作品必须以GPL为重新发布的许可证。这样就保证了自由软件的持续性。
3) GPL规定允许公司销售自由软件。这就为公司介入自由软件事业敞开大门。
同时,Richard Stallman打算组织开发一个完全基于自由软件的软件体系——GNU(GNU's Not Unix,GNU这个单词含义正好是产于南非州的一种大羚羊,所以我们经常可以看到有些linux书的封面是一只羚羊,就是这个道理。)。它的目标是:写 一个完整的与UNIX兼容的软件系统。由于刚开始还没有很好的自由软件可供使用。所以他们先从系统的应用软件和工具着手。比如很有名的:emacs(编辑 器) gcc(据说是世界上效率最高的编译器)等等。同时他们也开发GUN体系的操作系统内核:hurd。可是开发得很缓慢。到现在也没有全部完工。
自从1991Linux发布以来,一直是完全自由扩散的。他要求所有的源码必须公开且任何人不准 从中获利。这样它限制了Linux以磁盘或CD-ROM等媒介的发布形式。从而阻碍了Linux得发展。因为没有哪家公司愿意使用没有厂商保证和没有良好 技术支持的操作系统。linus想到了GPL。事实也证明,加入GPL之后,许多软件公司就介入其中,开发了多种Linux的发行版本。 如:Redhat 、Mandrake等等。他们增加了许多实用软件和易用的图形界面。linus本人也认为:“使Linux成为GPL的一员是我一生中 作过最漂亮的一件事”。
那边hurd还在十月怀胎。这边Linux却长大成人。很自然,Linux很快成为GNU的基本 操作系统。大有取代hurd之意。甚至有人认为没有再继续开发hurd的必要。可是hurd是一种很前卫的系统,比如微内核结构。看来还是有一定价值的。 就这样,Linux成为了GPL的一员,自由软件的一员。
1.8.3 两个最有名的开放源代码协议(简称开源协议)
看到这里,我们发现自由软件的最重要的标志是开放源代码。GPL是一种开放源代码的许可。当然还有其它的。最有名的是LGPL和BSD许可。
1.LGPL ( Lesser GPL )
较宽松公共许可证:也是由FSF制定的。FSF发现GPL很难满足所有的程序。特别是库函数的调 用。在编写程序的时候,免不了要用到其中的函数,总不能就这样成为自由软件了。所以就发布了GNU 函式库公共许可证 (GNU Library Public License)。规定虽然这个函式库是在GPL下面的,但如果程序中使用了函数库,程序作者还是可以把该软件定为非自由软件。
2.BSD
如果读者仔细看上面UNIX的介绍的话,就知道BSD系统也是开放源代码的。当然也有一个相应的许可。称之为BSD许可。简单来说,BSD许可是最宽松的许可。你可以在BSD许可下做任何事。
1.9 Linux 的版本问题
说到Linux版本,有两种含义:
1.9.1 Linux 的内核版本
在Windows应用中很少提到内核的概念,而Linux中经常用到。简单来说,Linux内核 就是这个系统的最小化。当系统引导的时候被调入内存。外部程序通过调用其中的函数完成操作。所以它是系统的核心。Linux内核由其创始人linus带领 的小组维护。这个版本我们就认为是“官方版本”。内核版本号的格式是:
主版本号 . 次版本号 . 修正号
例如: Linux 2.4.10 ,主版本号是 2 ,次版本号是 4 ,第 10 次修正 .
例如: Linux 2.5.13 ,主版本号是 2 ,次版本号是 5 ,第 13 次修正 . 这个内核是本书完成时的最新版本。
内核版本号还有一个规则:次版本号为偶数的是稳定版本,为基数的是发展版本。所谓稳定版本是指内核的特性已经固定,代码运行稳定可靠,不再增加新的特性,要改进也只是修改代码中的错误。如上面的一个例子.这个内核是在Redhat7.2使用的,是一个稳定版本.而发展版本是指相对于上一个稳定版本增加了新的特性,还处于发展之中,代码运行不大可靠。如上面第二个列子,可见他是一个不稳定板。
1.9.2 linux 发行版本
光有内核还不能构成一个完整的操作系统,于是一些组织或公司将内核与一些应用程序包装起来就构成了一个完整的操作系统,这就是发行套件,不同的公司或组织 的发行套件各不相同,版本号也不相同,尽管它们使用了同一版本号的内核。现在的发行公司很多,如:我们常听说的RedHat,中软,红旗。我会在第二章详细介绍各个linux发行版之间的不同,告诉你什幺发行版适合你。
1.10 Linux 的威力
初学者可能根本感觉不到Linux的优点,有的只是Linux的难学。学东西首先要感觉到这东西 的好,心灵要有震撼,让你从骨子里想学。这样才会提供你源源不断的动力。说到这里,我就想起了中国的教育,就拿大学时我们普遍学习的C语言。有几个人是学 好的?大多数人觉得没什么用。C有用吗?研究Linux的没人会说它没用吧。那是为什么?因为没东西让他感受到C的有用。为什么感受不到?最大的问题:课 程安排极其不合理。大多数学校把C语言放在第一课。结果是一个windows系统还没有熟练运用计算机也没摸过几次的大一学生学C语言学得昏天黑地。你想 它能感受到嘛。靠老师在那里叫嚣C有如何重要是没用的。从人的本性意识来说,一个人是不可能被另外一个人说服的,尽管他口头上表示同意。一个不懂C语言的 人完全可能成为MCSE。你说你三脚猫的C和微软系统工程师哪个更有价值?C语言的学习完全可以放到大三大四学习。在这之前完全可以开一些简单实用的课 程。通过这些课程,你才会发现许多现象你不能解释,这样激起了求知欲,同时产生兴趣。看过一篇报道,关于诺贝尔奖得主关于成功因数的讨论,几乎都把兴趣摆 在第一。学校现在的做法正好相反,不仅不培养兴趣,弄个让你们看不懂的不知道干什幺的先杀杀你们的锐气,厉害厉害!人认识事物总是从简单到复杂的,地球人 都知道。你说先有牛顿定律还是先有原子核式结构?中国现在的大学教育就相当于介绍扇刚门先要帮你分析刚的原子结构,等那个听的人完全没有了兴趣再介绍刚门 的外形如何。真他妈的肛门了。
以前总是说大学计算机课程教本如何陈旧。现在这个问题有所改善。看来课本的陈旧并不可怕可怕的是人思想的陈旧。
我们来震撼一下:
1.10.1 Linux ――“世界之王”的靠山
电影《泰坦尼克号》的导演卡梅隆在奥斯卡奖的颁奖大会上接过最佳导演奖时相当狂妄地对着全场的观众重复了男主角的一句台词:“我 是世界之王”。不过这也不奇怪,耗资两亿多美元,一举夺得11项奥斯卡大奖,赢得全球最高票房,它的导演是有资格狂妄一番的。然而真正有资格睥睨世界的主 角应该是银幕后面最先进的计算机技术!毫不夸张地说,这部影片如果离开了电脑,不要说获奥斯卡奖,就是真正要开机拍摄都是不可能的。但是在笔者看来,在这 一切的后面,还有一个默默无闻的大主角,这就是上百台图形工作站所使用的一套操作系统。这套系统就是Linux。在制作电影《泰坦尼克号》所用的160台 Alpha图形工作站中,有105台运行的是Linux操作系统。
1.10.2 linux ――不可思议的系统
1996 年底,美国林肯州内布拉斯加普雷斯大学系统部准备把他们部门中一套已经陈旧过时的 NetWare server 更换掉,另外安装一套新的操作系统 。系统部经理 Quinn Coldiron 当时的首选目标不用说当然是 Windows NT 4.0 ,然而他没有料到,在安装了 NT 之后,竟会遇到那幺多难以解决的麻烦,多次打电话寻求技术支持又让学校破费了很多钱。万般无奈之际,他决定试用一下 Linux ,结果却令他大感意外。从 1997 年 1 月至 7 月,他们部门的 Linux 服务器仅意外下档过三次,两次是因为楼里的电源线路发生故障,另外一次则是因为操作人员的愚笨所致。更令他觉得不可思议的是,在原先那套旧的 NetWare 系统上,如果同时有五个用户登录做专业出版,系统就会崩溃;而现在,还是同样的硬件( 256M 内存、 2 块 150MHz CPU ),但是 Linux 却可以轻松自如地支持 40 个用户同时登录做专业出版。于是他在鉴定白皮书中按耐不住兴奋地说:“ Linux 服务器已经证明和我所用过的其它服务器操作系统同样地可靠,而且要比其中的大多数操作系统更为可靠。”
1.10.3 linux-- 细胞一样的繁殖能力
linux的发展和成长却迅捷无比,成为操作系统领域中一匹名符其实的黑马。迄今为止,对Linux在全球范围内的装机台数的估计各有说法,最低的估计为 300万,最高的估计数字为900万。而1997年,MacOS的装机台数为380万,IBM OS/2为120万,Windows NT则为700多万。虽说Linux还无法与拥有一亿多用户的Windows相比,但是它确立自身地位和影响力所花费的时间却只有Windows的一半。 作为一种Unix操作系统,Linux的强大性能显然使得其它品牌的Unix黯然失色。有分析家认为,“Linux的广泛普及使其成为Unix市场上最具 活力的一只新军。”甚至连Unix之父Dennis Ritchie也认为Linux“确实不错”。有一些分析家甚至认为,在未来数年间,Linux将成为NT真正强有对手,也是唯一可以冲破微软垄断性文化 圈的出路所在。
我已经说过,一个人是不可能说服另外一个人。我也不例外。我不会试图说说Linux成功的例子就能让你如何的喜欢Linux。最好的办法是仔细研究之。亲生体会的东西才是最有说服力的。喜欢才是骨子里的。GOOD LOCK!