第1部分Linux基础
第1章 Linux简介
1.1 Linux简介
Linux操作系统是UNIX操作系统的一种克隆系统。它诞生于1991年的10月5日(这是第一次正式向外公布的时间)。之后借助于Internet网络,并经过全世界各地计算机爱好者的共同努力,现已成为世界上使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。Linux操作系统的诞生、发展和成长过程始终依赖于以下几个重要支柱:UNIX操作系统、Minix操作系统、GNU计划、POSIX标准、互联网。
1.1.1 UNIX操作系统的诞生
UNIX操作系统的发展,经历了漫长的十几载。回顾其发展史,将会对学好UNIX操作系统有很大的帮助。
1965年,贝尔电话实验室和通用电气公司及麻省理工学院的MAC课题组合作研发Multics操作系统,其设计目标是:
(1)向大的用户团体提供对计算机的同时访问。
(2)支持强大的计算能力与数据存储。
(3)在需要时,用户能够很容易地共享他们的数据。
1969年,原始版的Multics操作系统在GE645计算机上运行了,但是没有达到预定的设计目标。由于系统只能在GE645计算机上运行,没能提供预定的综合计算服务,因此动摇了研发目标,结果使贝尔实验室退出了这一项目。
于是,新的研发开始了:
(1)在贝尔实验室退出Multics工程后,贝尔实验室计算科学研究中心的成员们处于缺乏“方便的交互式计算服务”的境况中,为了改善他们的设计环境,K.汤普逊(Ken Thompson)、D.里奇(Dennis.Ritchie)及其他人勾画出一个纸面上的文件系统设计方案,它后来就演化成为UNIX文件系统的早期版本。
(2)此后,汤普逊编写了有关程序,该程序模拟了这个文件系统及请求分页环境中程序的行为。
(3)与此同时,他们借助GECOS计算机的程序开发环境为UNIX操作系统的开发在PDP-7机上建立了更好的开发环境。
(4)汤普逊和里奇实现了他们在PDP-7机上的系统设计,其中包括UNIX文件系统、进程子系统和一组实用程序。并且实现了新系统的自我支持,再也不需要把GECOS系统作为开发环境了。
(5)新系统的名称由计算科学研究中心的成员B.科尼汉(Brian.Kernigham)提出,作为Multics的一种双关语,命名为UNIX。
贝尔实验室始建于1925年,为美国西方电器公司和美国电报电话公司共有,是世界上最大的研究机构之一。它雇用了2300多名员工,拥有18000项以上的产品专利。每年编辑的刊物和组织学术讨论会达几千种。贝尔实验室已获得60项以上的科学和工程奖,包括7次诺贝尔奖。
1971年,UNIX被移植到PDP-11计算机上,该系统的主要特征是它的规模小:
(1)内存中16KB用于系统,8KB用于用户程序;磁盘512KB。
(2)每个文件限定长度为64KB。
在UNIX被成功移植到PDP-11计算机上之后,汤普逊在这个系统上实现了FORTRAN编译。
里奇在B语言的基础上,把B发展成他称之为C的语言。C语言允许产生机器代码,说明数据类型及定义数据结构。
1973年,用C语言重写了UNIX操作系统。这一事件在当时并没有引起人们的关注,但对其外部用户接受它却产生了极大的影响。在这之后,贝尔实验室的装机数目增加到25台,并且形成了UNIX系统小组,以提供内部支持。
由于美国电报电话公司1965年与联邦政府签署了反垄断法,不能销售计算机产品,因此公司请求把UNIX操作系统提供给以教学为目的的大学。即使这样,UNIX系统的声望仍在稳步增长。
1974年,汤普逊和里奇撰文介绍UNIX系统。在《ACM通讯》上发表了描述UNIX操作系统的文章,进一步促进了UNIX操作系统的可接受性。
1977年,经过不懈的努力,UNIX系统的安装点已增至约500个,其中125个在大学。此时,UNIX操作系统开始在电话公司流行起来,为程序开发、网络事务操作服务及实时服务提供了良好的环境。这时UNIX系统的许可证也颁发给了商业机构、大学和研究机构。
交互系统公司(Interactive System Corporation)成为UNIX操作系统的第一个增值转卖商。所谓增值转卖商,是指把具体应用加到计算机系统上以满足特定的市场需要,他们销售的是应用而不是这些赖以运行的操作系统。
同年,UNIX操作系统首次被“移植”到非PDP机,即interdata 8/32机上。
1978—1982年,在这一时期,贝尔实验室把UNIX系统的若干个变种组合到一个单一的系统中,称为UNIX system III。后来又在UNIX system III中增加了若干特性,产生了UNIX system V(IV为内部版本)。
1983年1月,AT&T正式宣布支持UNIX system V。与此同时,加州大学伯克利分校也开发了UNIX系统的一个变体,它的最新版本称为4.3BSD(Berkeley Software Distribution),配在VAX机上。它提供了一些新的有意义的特征。
1984年,UNIX系统在全世界大约装了十万套。它们运行在微机直至大型机上,运行在不同制造商生产的计算机上。
1.1.2 Minix操作系统
Minix系统是由Andrew S. Tanenbaum(AST)开发的。AST在荷兰Amsterdam的Vrije大学数学与计算机科学系统工作,是ACM和IEEE的资深会员(全世界也只有很少人是两会的资深会员)。AST共发表了100多篇文章,创作了5本计算机书籍。AST虽出生在美国纽约,但是是荷兰侨民(1914年他的祖辈来到美国)。他在纽约上的中学,在M.I.T上的大学,在加洲大学Berkeley分校念的博士。由于读博士后的缘故,他来到了家乡荷兰。从此就与家乡一直有来往。后来就在Vrije大学开始教书、带研究生了。
荷兰首都Amsterdam是个常年阴雨绵绵的城市,而对于AST来说,这最好不过了,因为这样他就可以待在家里摆弄他的计算机了。Minix是他1987年编制的,主要用于学生学习操作系统原理。到1991年时版本是1.5。目前主要有两个版本在使用:1.5版和2.0版。对于Linux系统,他表示对其开发者Linus的称赞。但他认为Linux的发展有很大原因是因为他为了保持Minix的小型化,能让学生在一个学期内就能学完,而没有接纳全世界许多人对Minix的扩展要求。因此这激发了Linus编写Linux的决心。Linus正好抓住了这个好时机。作为一个操作系统,Minix并不是优秀者,但它同时提供了用C语言和汇编语言写的系统源代码。这是第一次使得有抱负的程序员或Hacker能够阅读操作系统的源代码,在当时这种源代码是软件商一直小心地守护着的。
1.1.3 GNU早期简史
1971年,作为开放源代码的先驱,Richard Stallman加入了麻省理工学院的一个专门研究免费软件的组织。作为Emacs文本编辑程序的开发者,他后来建立了GNU项目。这最终导致了免费的Linux操作系统的诞生。
1983年,为了反对软件所有权私有化的趋势,Stallman建立了GNU计划来推进免费软件模型,并为此开发了一个免费的操作系统、应用程序及开发工具。更重要的是,GNU计划建立了General Public License(GPL),就是Copyleft,它成为许多开放源代码软件所采用的模型。
1985年3月Richard Stallman在Dr. Dobb's杂志上发表了《GNU宣言》。在宣言中,他陈述了自由软件运动的起因。
1986年,Larry Wall建立了Perl(Practical Extraction and Report Language),这是一种编写CGI程序广泛采用的通用编程语言。CGI为Web带来了更多动态内容。
1987年,开发者Andrew Tanenbaum发布了Minix,在发布时带有完整的源代码。
1989年1月,GPL版本1由斯道曼撰写,用于GNU计划。它以GNU Emacs、GDB和GCC的许可证的早期版本为蓝本。这些许可证都包含有一些GPL的版权思想,但仅针对特定程序。斯道曼的目标就是创造出一种四海之内皆可使用的许可证,这样就能为许多源代码共享计划带来福音。
到1990年时,因为一些共享库而出现了对比GPL更宽松的许可证的需求。所以当GPL版本2在1991年6月发布时,另一许可证——库通用许可证(Library General Public License,LGPL)也随之发布,并记做“版本2”以示对GPL的补充。版本号在LGPL版本2.1发布时不再相同,而LGPL也被重命名为GNU宽通用公共许可证(Lesser General Public License)以体现GNU哲学观。
1991年8月25号Linus在Usenet新闻组上公开了关于Linux的构想。为了超越Minix,发布了一个新的UNIX变种——Linux。三年后,Linux正式接受GPL。
1.1.4 POSIX标准历史
POSIX(Portable Operating System Interface for Computing Systems)是由IEEE和ISO/IEC开发的一簇标准。该标准基于现有的UNIX实践和经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行。它是在1980 年早期一个UNIX用户组(usr/group)的早期工作的基础上取得的。该UNIX用户组原来试图将AT&T的系统V和Berkeley CSRG的BSD系统的调用接口之间的区别重新调和集成,从而于1984年产生了/usr/group标准。1985年,IEEE操作系统技术委员会标准小组委员会(TCOS-SS)开始在ANSI的支持下责成IEEE标准委员会制定有关程序源代码可移植性操作系统服务接口正式标准。
到了1986年4月,IEEE制定出了试用标准。第一个正式标准是在1988年9月份批准的(IEEE 1003.1-1988),即以后经常提到的POSIX.1标准。1989年POSIX的工作被转移至ISO/IEC社团,并由15工作组继续将其制定成ISO标准。到1990年,POSIX.1与已经通过的C语言标准联合,正式批准为IEEE 1003.1-1990(也是ANSI标准)和ISO/IEC 9945-1:1990标准。
在20世纪90年代初,POSIX标准的制定正处在最后投票敲定的时候。此时正是Linux刚刚起步的时候,这个UNIX标准为Linux提供了极为重要的信息,使得Linux能够在标准的指导下进行开发,能够与绝大多数UNIX系统兼容。在最初的Linux内核代码中(0.01版、0.11版)就已经为Linux与POSIX标准的兼容做好了准备工作。
1.1.5 Linux概述
通过上述说明,我们可以对上述Linux的几个支柱归纳如下:
● UNIX操作系统——UNIX于1969年诞生在Bell实验室。Linux就是UNIX的一种克隆系统。UNIX的重要性就不用多说了。
● Minix操作系统——Minix操作系统也是UNIX的一种克隆系统,它于1987年由著名计算机教授Andrew S. Tanenbaum开发完成。由于Minix系统的出现并且提供源代码(只能免费用于大学内),在全世界的大学中刮起了学习UNIX系统的旋风。Linux刚开始就是参照Minix系统于1991年才开始开发的。
● GNU计划——开发Linux操作系统,以及Linux上所用大多数软件基本上都出自GNU计划。Linux只是操作系统的一个内核,没有GNU软件环境(比如说bash shell),Linux则寸步难行。
● POSIX标准——该标准在推动Linux操作系统以后朝着正规道路发展起着重要的作用,是Linux前进的灯塔。
Linux是由众多软件高手共同开发的,是一种能运行于多种平台(如PC及其兼容机、Alpha工作站、Sun Sparc工作站)、源代码公开、免费、功能强大、遵守POSIX标准、与UNIX兼容的操作系统。
Linux运行的硬件平台起初是Intel 386、486、Pentium、Pentium Pro等。现在,还包括Alpha、PowerPC、Sparc等。Linux不但支持32位,还支持64位如Alpha。Linux不但支持单CPU,还支持多CPU。
Linux内核和许多系统软件及应用软件的源代码是公开的,也是免费的。Linux系统软件和应用软件很多来自GNU组织。Linux软件还包括很多遵循GPL精神的软件。现在,很多商业公司也开始为Linux开发应用软件,如IBM、Sybase、Oracle等公司。
Linux具有丰富的系统软件和应用软件。除了具有一般UNIX的工具外,Linux操作系统还包括如下功能:
● 支持多种不同格式的文件系统。
● 支持多种系统语言,如C、C++、Objective C、Java、Lisp、Prolog等。
● 支持多种脚本语言,如Perl、Tcl/Tk、Shell和AWK等。
● 支持X Window系统及其应用程序,可运行各种图形应用程序,如Khoros,GRASS等。
● 支持多种自然语言,如中文、英文。
● 支持多种大型数据库,如Oracle、Sybase、Infomax等。
● 支持与其他操作系统如Windows NT或Windows 95等的共享。
● 强大的网络功能,支持多种网络协议,如TCP/IP、IPX、Appletalk、NETBEUI、X.25等。发布版内有多种网络服务软件,如E-mail、FTP、TELNET、WWW等。
当然,Linux还在不断地发展,它是一个很有发展前途的操作系统,也是为数不多可以与Microsoft操作系统相竞争的操作系统。Linux是一套免费使用和自由传播的UNIX操作系统,它主要用于基于Intel系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX兼容产品。Linux的出现,最早开始于一位名叫Linus Torvalds的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想要设计一个代替Minix(Minix是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有UNIX操作系统的全部功能,因而开始了Linux雏形的设计。
Linux以它的高效性和灵活性著称。它能够在PC计算机上实现全部的UNIX特性,具有多任务、多用户的能力。Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且包括文本编辑器,高级语言编译器等应用软件。它还包括带有多个窗口管理器的X Window图形用户界面,如同使用Windows NT一样,允许使用窗口、图标和菜单对系统进行操作。
Linux之所以受到广大计算机爱好者的喜爱,主要原因有两个:一个是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,可无偿使用,无约束地继续传播。另一个原因是,它具有UNIX的全部功能,任何使用UNIX操作系统或想要学习UNIX操作系统的人都可以从Linux中获益。
由于Linux是一套自由软件,所以用户可以无偿获取它的源代码,可以无偿获得大量的应用程序,而且可以任意修改和补充它们。这对用户学习、了解UNIX操作系统非常有益。Linux是目前唯一可以免费获得的、为PC平台上的多个用户提供多任务、多进程功能的操作系统,这是人们要使用它的主要原因。就PC平台而言,Linux提供了比其他任何操作系统都要强大的功能,Linux还可以使用户远离各种商品化软件提供者促销广告的诱惑,再也不用承受每过一段时间就升级之苦,因此,可以节省大量用于购买或升级应用程序的资金。
1.1.6 Linux和开源软件的商业化
Linux和开源软件的商业化历程大致经历了以下几个阶段。
1.萌芽阶段(1995年以前)
在1995年红帽软件公司正式成立以前,开源社区基本上没有考虑过商业化运作的问题。大家都在热火朝天地探讨各种技术问题,在社区中发布各种很酷的开源软件新版本,几乎没人想到从开源软件中赚钱。与开源软件有关的商业活动仅限于出售开源软件安装盘及书籍、印有开源软件标志的文化衫等小玩意儿。但是这种商业行为当时并没有获得开源社区的尊重,从事这些活动的人也被社区的成员嗤为小商贩。当初谁也没有想到的是,就在这群毫不起眼的小商贩中,竟然走出了两位后来在开源界赫赫有名的大人物,他们就是红帽软件公司的两位创始人Young和Marc Ewing。
2.探索阶段(1995—2001年)
1995年,Young购买了Ewing的股份,把新公司命名为红帽软件,同时发布Redhat Linux 2.0。红帽公司的成立,拉开了开源软件探索商业运作的序幕。在红帽的率领和激励下,越来越多的人从开源软件身上嗅到了商机,各种从事开源软件事业的商业机构蓬勃发展。在中国,1999—2000年间,短短两年就涌现出红旗Linux、中软Linux、蓝点Linux、冲浪Linux、TurboLinux、TomLinux等品牌,不过在这一阶段,开源软件并没有找到真正的商业模式,大部分只停留在概念炒作层面。
3.发展阶段(2001—2003年)
2002年前后,随着网络泡沫的破灭,开源软件的神话也随之被打破。大量缺乏真正商业模式的开源软件企业面临尴尬境地,要么倒闭,要么退出开源软件市场。剩下几家经受住了市场锤炼的开源软件厂商慢慢冷静下来,潜心寻找适合自己的商业模式。在寻找的过程中,一些较早探索出商业模式的开源企业,挺过了IT行业的寒冬,发展迅速,如红帽、JBoss、MySQL等。
4.融合阶段(2004—2006年)
2003年11月,曾叱咤风云的软件巨头Novell收购了排名全球第二的Linux发行商Suse,借助Linux实现战略转型。Novell的做法为开源软件的商业运作提供了全新思路,产生了深远影响。在Novell的推动下,开源软件开始与商业软件和平共处,开源软件不再停留在小打小闹阶段,而是走进金融、电信等行业大户的视野,刷新了在企业用户心目中的形象。与此同时,原来在幕后支持开源软件的IT巨头也开始更直接地介入开源软件的发展。如IBM公司于2005 年5 月收购开源软件Gluecode,2005年11月率众成立开源文档基金会;Sun公司从2005年6月开始,逐步开放Solaris等多款软件的源代码。
1.1.7 Linux和开源软件的商业模式
经过研究与归纳,Linux和开源软件的商业模式大致包括以下几种。
1.免费软件+收费硬件
IBM、Sun、惠普等公司,在开源软件领域投入巨大,但这一切并非是做善事,它们可以从配置了开源软件的硬件中获取巨额回报。
2.免费知识+收费书籍(培训)
开源软件出版商O'Reilly公司组织各种开源软件会议,推进开源理念和开源软件技术的传播与发展,以出售书籍赢利。LPI和中国的即时科研集团目前也在大力开展Linux培训,其赢利模式如出一辄。
3.免费程序+收费实施
一些开源软件厂商免费提供系统的程序代码,靠提供技术服务赚钱。JBoss就是这种模式的典型代表。JBoss应用服务器软件程序完全免费,而技术文档、培训、二次开发支持等技术服务则是收费的。
4.免费社区版+收费企业版
对于一些通用软件,如操作系统和数据库软件,开源软件厂商一般采用针对不同用户,提供不同版本的方式。在这种模式中,利用免费版本软件为赢利的收费版本创造或维持一种市场地位。这种模式较为普遍。如,MySQL产品就同时推出面向个人和企业的两种版本,即开源版本和专业版本,分别采用不同的授权方式。开源版本完全免费以便更好地推广,公司通过专业版的许可销售和支持服务获得收入。
5.开源软件+商业软件
将免费的开源软件与可赢利的商业软件捆绑销售,以开源软件带动商业软件的销售,这也是不错的商业模式。比如Novell就将自己原来丰富的中间软件和应用软件迁移到Linux平台上,通过与Linux捆绑,为客户提供高价值的综合解决方案。红旗和Turbolinux也在积极加强与应用软件厂商的联系或自己开发商业软件,通过附加更多的商业软件来增加收入。
6.免费软件+收费专业服务
这种模式的典型代表是SourceLabs公司和SpikeSource公司。这些公司并不主推自己的产品品牌,而是与多方开源软件厂商或社区合作,利用他人提供的开源软件,提供技术测试、集成、维护等服务。这种模式中,公司的角色跟原来的系统集成商有点类似。他们把开源软件打包到事先经过鉴定、并且受支持的标准化堆栈中。为了让各种各样的软件组件正常地协同工作,他们帮助客户配置及测试这些软件组件,而预先设计并经过鉴定的堆栈有助于缩短配置与测试时间。
1.2 Linux内核和Linux发行版本
1.2.1 Linux发行版本概述
Linux的版本可以分两类:内核(Kernel)版本与发行(Distribution)版本。内核版本指的是在Linux领导下的开发小组开发出来的系统内核版本号,目前最新的内核版本号是Linux 2.6。Linux 2.6发行版共有27149个不同补丁和600万行代码,开发周期长达680天。在2004年Linux内核峰会上,即稳定版内核发行约8个月之后,又增加了123万行代码,删除了849366行代码,这意味着有三分之一的内核被改动了。Novell公司Linux开发人员格雷格·克洛·哈特曼认为这说明稳定版内核还有很多工作要做。于是开发社区做出决定,不升级内核版本,所有成熟的新功能和补丁都加入到2.6 稳定版内核中。一些组织或公司将Linux内核与应用软件和文档包装起来,并提供一些安装界面和系统设置与管理工具,这样就构成了一个发行版本。例如我们所听说的Mandriva Linux、Red Hat Linux、Debian Linux、Ubuntu Linux和国产的红旗Linux、CLEEX For Linux、Xteam Linux、Turbo Linux等。
1.2.2 Linux内核的变迁
● 0.00(1991.2-4)两个进程分别显示AAA BBB
● 0.01(1991.9)第一个正式向外公布的Linux内核版本。
● 0.02(1991.10.5)该版本及0.03版是内部版本,目前已经无法找到。
● 0.03(1991.10.5)
● 0.10(1991.10)由Ted Ts'o发布的Linux内核版本。
● 0.11(1991.12.8)基本可以正常运行的内核版本。
● 0.12(1992.1.15)主要加入对数学协处理器的软件模拟程序。
● 0.95(0.13)(1992.3.8)开始加入虚拟文件系统思想的内核版本。
● 0.96(1992.5.12)开始加入网络支持和虚拟文件系统VFS。
● 0.97(1992.8.1)
● 0.98(1992.9.29)
● 0.99(1992.12.13)
● 1.0(1994.3.14)
● 1.2(1995.3.7)
● 2.0(1996.2.9)
● 2.2(1999.1.26)
● 2.4(2001.1.4)
● 2.6(2003.12.17)
小贴士 查看Linux内核版本的方法
登录Linux系统终端在文本终端用下面的命令可以查看当前系统的Linux版本号:
$ uname -r
输出结果如下:
2.6.18-8.el5smp
表示当前Linux系统的内核版本为2.6.18-8.el5smp,主版本号为2,次版本号为6,修订号为18,为第5次编译;el表示该内核为企业级Linux(Enterprise Linux),smp表示对称多处理器(Symmetric MultiProcessing)。
Linux内核版本号格式:major.minor.patch-build.desc,其中各部分说明如下。
● major:表示主版本号,有结构性变化时才变更。
● minor:表示次版本号,新增功能时才发生变化;一般奇数表示测试版,偶数表示生产版。
● patch:表示对次版本的修订次数或补丁包数。
● build:表示编译(或构建)的次数,每次编译可能对少量程序做优化或修改,但一般没有大的(可控的)功能变化。
● desc:用来描述当前的版本特殊信息;其信息由编译时指定,具有较大的随意性,但也有一些描述标识是常用的,比如:
➢ rc(有时也用一个字母r),表示候选版本(release candidate),rc后的数字表示该正式版本的第几个候选版本,多数情况下,各候选版本之间数字越大越接近正式版。
➢ smp,表示对称多处理器(Symmetric MultiProcessing)。
➢ pp,在Red Hat Linux中常用来表示测试版本(pre-patch)。
➢ EL,在Red Hat Linux中用来表示企业版Linux(Enterprise Linux)。
➢ mm,表示专门用来测试新的技术或新功能的版本。
➢ fc,在Red Hat Linux中表示Fedora Core。
如果在生产机上,最好不要安装小版本号是奇数的内核。同样,pre-patch的内核版本也不建议安装在生产机上。
1.2.3 Linux主要发行版本
1.Red Hat Linux
Red Hat是一个比较成熟的Linux版本,无论在销售还是装机量上都比较可观。该版本从4.0就开始同时支持Intel、Alpha、Sparc硬件平台,并且通过Red Hat公司的开发,使得用户可以轻松地进行软件的升级,彻底卸载应用软件和系统部件。Red Hat最早由Bob Young和Marc Ewing在1995年创建。目前Red Hat分为两个系列:由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux,以及由社区开发的免费的Fedora Core。Fedora Core 1发布于2003年年末,而Fedora Core的定位便是桌面用户。Fedora Core提供了最新的软件包,同时,它的版本更新周期也非常短,仅六个月。目前最新版本为Fedora Core 6,而Fedora Core 7的测试版已经推出。适用于服务器的版本是Red Hat Enterprise Linux。由于这是一个收费的操作系统。于是,国内外许多企业或网络空间公司选择CentOS。CentOS可以算是Red Hat Enterprise Linux的克隆版,但它是免费的。官方主页是http://www.redhat.com。
2.Mandriva Linux
Mandriva原名Mandrake,最早由Gaël Duval创建并在1998年7月发布。几年前国内刚开始普及Linux时,Mandrake非常流行。其实最早Mandrake的开发者是基于Red Hat进行开发的。Red Hat默认采用GNOME桌面系统,而Mandrake将之改为KDE。由于当时安装Linux比较复杂,不适合第一次接触Linux的新手,所以Mandrake简化了系统安装过程。这也是当时Mandrake在国内迅速普及的原因之一。Mandrake在易用性方面的确下了不少工夫,包括默认情况下的硬件检测等。Mandrake的开发完全透明化,包括Cooker。当系统有了新的测试版本后,便可以在Cooker上找到。之前Mandrake的新版本的发布速度很快,但从9.0 之后便开始减缓。估计是希望能够延长版本的生命力以确保稳定和安全性。官方主页是http://www.mandrivalinux.com。
3.Debian Linux
Debian最早由Ian Murdock于1993年创建,可以算是迄今为止最遵循GNU规范的Linux系统。Debian系统分为三个版本分支(Branch):Stable,Testing和Unstable。截至2005年5月,这三个版本分支分别对应的具体版本为:Woody,Sarge和Sid。其中,Unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的Bug,适合桌面用户。Testing的版本都经过Unstable中的测试,相对较稳定,也支持了不少新技术(比如SMP等)。而Woody一般只用于服务器,上面的软件包大部分都比较过时,但是稳定性能和安全性能都非常高。为何有如此多的用户痴迷于Debian呢?Apt-Get、Dpkg是原因之一。Dpkg是Debian系列特有的软件包管理工具,它被誉为所有Linux软件包管理工具(比如RPM)中最强大的管理工具,配合Apt-Get,在Debian上安装、升级、删除和管理软件变得异常容易。许多Debian的用户都开玩笑地说,Debian将他们养懒了,因为只要输入“Apt-Get Upgrade &&Apt-Get Upgrade”,计算机上所有的软件就会自动更新。官方主页是http://www.debian.org/。
4.Ubuntu Linux
简单而言,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux操作系统。Ubuntu是一个相对较新的发行版,但是,它的出现可能改变了许多潜在用户对Linux的看法。也许,从前人们会认为Linux难以安装、难以使用,但是,Ubuntu出现后,这些都成为了历史。Ubuntu基于Debian Sid,所以说,Ubuntu拥有Debian的所有优点,包括Apt-Get。然而,不仅如此,Ubuntu默认采用的GNOME桌面系统也将Ubuntu的界面装饰得简易而不失华丽。当然,如果你是一个KDE的拥护者的话,Kubuntu同样适合你。Ubuntu的安装非常人性化,只要按照提示一步一步进行,安装操作与Windows操作系统同样简便。并且,Ubuntu被誉为是对硬件支持最好最全面的Linux发行版之一,许多在其他发行版上无法使用或者默认配置时无法使用的硬件,在Ubuntu上能轻松搞定。并且,Ubuntu采用自行加强的内核(Kernel),安全性方面更加完善。并且,Ubuntu默认不能直接Root登录,必须从第一个创建的用户通过Su或Sudo来获取Root权限(这也许不太方便,但无疑增加了安全性,避免用户由于粗心而损坏系统)。Ubuntu的版本周期为6个月,弥补了Debian更新缓慢的不足。官方主页是http://www.ubuntulinux.org。
5.Slackware Linux
Slackware由Patrick Volkerding创建于1992年。算起来应当是历史最悠久的Linux发行版。Slackware曾经非常流行,但是当Linux越来越普及,用户的技术层面越来越广(更多的新手)后,Slackware渐渐被新来的人们所遗忘。在其他主流发行版强调易用性的时候,Slackware依然固执地追求最原始的效率——所有的配置均还要通过配置文件来进行。尽管如此,Slackware仍然深入人心(大部分都是比较有经验的Linux老手)。Slackware稳定、安全,所以仍然有大批的忠实用户。由于Slackware尽量采用原版的软件包而不进行任何修改,所以制造新Bug的几率便低了很多。Slackware的版本更新周期较长(大约1年),但是新版本的软件仍然不间断地提供给用户下载。官方主页是http://www.slackware.com。
6.Suse Linux
Suse是起源于德国的最著名的Linux发行版,在全世界范围中也享有较高的声誉。Suse自主开发的软件包管理系统YaST也大受好评。Suse于2003年年末被Novell收购。Suse 8.0之后的发布显得比较混乱,比如9.0版本是收费的,而10.0版本(也许由于各种压力)又免费发布。这使得一部分用户感到困惑,也转而使用其他发行版本。但是,瑕不掩瑜,Suse仍然是一个非常专业、优秀的发行版。官方主页是http://www.suse.com。
7.Gentoo Linux
Gentoo Linux最初由Daniel Robbins(前Stampede Linux和FreeBSD的开发者之一)创建。由于开发者对FreeBSD的熟识,所以Gentoo拥有可媲美FreeBSD的广受美誉的Ports系统——Portag(e Ports和Portage都是用于在线更新软件的系统,类似于apt-get,但还是有很大不同)。Gentoo的首个稳定版本发布于2002 年。Gentoo的出名是因为其高度的自定制性:因为它是一个基于源代码的(source-based)发行版。尽管安装时可以选择预先编译好的软件包,但是大部分使用Gentoo的用户都选择自己手动编译。这也是为什么Gentoo适合有Linux使用经验的老手使用的原因。但是要注意的是,由于编译软件需要消耗大量的时间,所以如果你所有的软件都自己编译,并安装KDE桌面系统等比较大的软件包,可能需要几天时间才能编译完。官方主页是http://www.gentoo.org/。
8.Xandros Linux
Xandros建立在已经成为历史的Corel Linux之上。当初Corel Linux的公司由于财政上的困难,被迫终止了Corel Linux的开发,而Xandros适时地将Corel Linux部门买下,于2002年10月推出全新的Xandros Desktop。Xandros的卖点在于极其简单的安装和使用,所以它的市场定位是那些没有任何Linux使用经验的新手,或是习惯使用Windows的用户。Xandros的标准版和增强版都是商业软件,分别售价$40和$99美元。官方主页是http://www.xandros.com/。
9.红旗Linux
红旗Linux中文操作系统是中国科学院软件所、北大方正电子有限公司和康柏计算机公司联合推出的具有自主版权的全中文化Linux发行版本,其内核取自于Linux 2.2.15版本,预装炎黄中文平台和方正TrueType字库,它实现了Linux上的TrueType显示和打印功能,并且从安装到使用提供了全中文化的操作环境。红旗Linux官方主页是http://www.redflag-linux.com/。
10.CentOS
CentOS是一个开源软件贡献者和用户的社区。它对RHEL源代码进行重新编译,成为众多发布新发行版本的社区当中的一个,并且在不断的发展过程中,CentOS社区不断与其他的同类社区合并,使CentOS Linux逐渐成为使用最广泛的RHEL兼容版本。CentOS Linux的稳定性不比RHEL差,唯一不足的就是缺乏技术支持,因为它是由社区发布的免费版。
CentOS Linux与RHEL产品有着严格的版本对应关系,例如使用RHEL 4源代码重新编译发布的是CentOS Linux 4.0,与RHEL 5对应的是CentOS Linux 5.0。由于RHEL产品的生命周期较长(通常具有3~5年的官方支持),因此Red Hat公司在RHEL系列产品发布后每隔一段时间,都会将累积的更新程序重新打包成为更新的发行版进行发布,通常称为RHEL Update。
例如,RHEL 5的第1个更新版本叫做RHEL 5 Update 1,用户通常也称其为RHEL 5.1。对Red Hat公司发布的每一个RHEL Update CentOS社区都会发布对应的更新发行版,例如根据RHEL 5的Update 1更新程序源码包,CentOS会重新编译并打包发布CentOSLinux 5.1版。CentOS Linux和与之对应版本号的RHEL发行版具有软件包级别的二进制兼容性,即某个RPM软件包如果可以安装运行在RHEL产品中,就可以正常地安装运行在对应版本的CentOS Linux中。CentOS Linux由于同时具有与RHEL的兼容性和企业级应用的稳定性,又允许用户自由使用,因此得到了越来越广泛的应用。CentOS官方主页是http://www.centos.org/。
11.其他
后Linux时代,Linux世界最不缺乏的可能就是发行版本了,目前全球至少有386个不同的Linux发行版本。要了解Linux发行版,最佳方法是查看Linux流行风向标的网站(http://www.distrowatch.com)。在发行版排行中,目前Ubuntu的发行版高居榜首。
1.3 Linux的优势
Linux最大的优势在于其作为服务器的强大功能,这也是众多用户选择使用它的根本原因。由于Linux通过Internet协同开发,随着其健壮和稳定的网络功能不断壮大,毫无疑问,它将成为一种纯正的网络操作系统。下面从10个方面来说明。
1.开放性
开放性是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。另外,源代码开放的Linux是免费的,使得获取Linux非常方便,而且使用Linux可节省费用。Linux开放源代码,使用者能控制源代码,按照需要对部件混合搭配,建立自定义扩展。
2.多用户
多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(如文件、设备)有特定的权限,互不影响。Linux和UNIX都具有多用户的特性。
3.多任务
多任务是现代计算机的最主要的一个特点,是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问微处理器。
4.图形集成界面
很多人认为只有微软的Windows系列才拥有GUI(Graphical User Interface)。其实,想找到“完全没有图形用户界面”的操作系统还真是困难,大多数操作系统都拥有图形界面,例如,著名的操作系统FreeBSD、Solaris和BSD等都拥有各自的图形用户界面。Linux配置有特殊的图形用户界面X Windows System,这是UNIX系统的标准图形界面,最早由MIT(麻省理工学院)所开发。X Windows System提供多种窗口管理程序(Window Manager),结合对象集成环境,使用户能够以灵活的方式来管理窗口和使用软件。随着Linux版本的升级,越来越多的Linux程序都提供了窗口界面。
X Windows系统(也称为X)的一部分是由麻省理工学院的研究人员开发的,这为Linux中的图形用户界面(Graphical User Interface,GUI)奠定了基础。对于支持X的终端或者工作站显示器,用户可通过屏幕上的多个窗口实现与计算机的交互,也可显示图形信息,或者使用专门的应用程序来画图、监视进程和预览格式化的输出。X是一种跨网络的协议,它允许用户在工作站或某台计算机上打开一个由远离他们的某个CPU生成的窗口。X通常有两层:桌面管理器和窗口管理器。桌面管理器是一个面向图画(Picture)的用户接口,它使得用户可以通过控制图标而不用输入shell的相应命令来实现与系统程序的交互。
GNOME(http://www.gnome.org)和KDE(http://www.kde.org)是比较流行的桌面控制器。
窗口管理器是运行在桌面管理器下的程序,它主要负责:窗口的打开和关闭;程序的启动和运行;对鼠标的设置,使得系统根据单击方式和位置来完成不同的工作。窗口管理器可实现个性化显示。微软公司的Windows只允许改变窗口关键元素的颜色,而X的窗口管理器可允许改变窗口的整个外观和感觉,如通过修改窗口的边框、按钮和滚动条来改变窗口的外观和工作方式,还允许建立虚拟桌面和创建菜单等。除了Metacity(GNOME的默认窗口)和kwin(KDE的默认窗口)外,X和Linux系统下还存在很多流行的窗口管理器,如Sawfish和WindowMaker等。
5.支持广泛的网络协议
Linux内核主要支持以下协议。
● TCP/IP通信协议。
● IPX/SPX通信协议。
● AppleTalk通信协议,如X.25、Frame-relay。
● ISDN通信协议。
● PPP、SLIP和PLIP等通信协议。
● ATM通信协议。
Linux沿袭了UNIX系统,使用TCP/IP作为主要的网络通信协议,内置了FTP、Telnet、Mail和Apache等各种功能。再由于其稳定性高,因此,许多ISP(Internet Service Provider)都采用架设Mail Server、HTTP Server和FTP Server等服务器。Linux提供的网络功能主要如下。
● 支持FTP服务和客户端。
● 支持Web服务器和客户端。
● 支持电子邮件服务和客户端程序。
● 支持DNS和DHCP服务。
● 支持网络信息服务(NIS)。
● 支持认证服务。
6.支持多种应用程序及开发工具
在Linux下,已经有越来越多的客户端和服务器端的应用软件,这些应用软件主要如下。
● 语言及编程环境:C、C++、Java、Perl、Fortran、PHP等。
● 图形环境:GNOME、KDE、GIMP、WindowMaker和IceWM等。
● 编辑器:X Emacs、Vim、Gedit、Kedit和Pico等。
● shells:bash、tcsh、ash、csh等。
● 文字处理软件:OpenOffice、Kword和AbiWord等。
● 数据库:MySQL、PostgreSQL和Oracle等。
7.具有内核编程接口
Linux内核是Linux操作系统的核心,负责分配计算机资源和调度用户作业,尽可能使得每个作业都能平等地使用系统资源,如对CPU的访问,对磁盘、DVD、CD-ROM存储器、打印机和磁带驱动器等外围设备的使用等。应用程序通过系统调用(有着大家熟知的名称的特殊函数)与内核交互。程序员可使用一个系统调用实现与多种设备的交互。例如,系统调用write只有一个,但它可向多个设备实现写操作。当某个程序发出write请求时,内核将根据程序的上下文把请求传递给相应的设备。这种灵活性使得一些旧版本的工具能够适用于新推出的设备,并且使得在不重写程序的情况下,可以较容易地将程序移植到新操作系统下(假设新旧版本的操作系统可使用相同的系统调用)。
8.Linux的可移植性
可移植操作系统是指可运行在不同计算机上的操作系统。Linux操作系统的95%以上的实现代码都是用C语言编写的。由于C语言是一种与计算机硬件无关的高级语言,所以它是可移植(C编译器是用C语言写的)的,因而Linux操作系统也是可移植的。
因为Linux可移植,所以它可以运行在不同的计算机上,并且可以满足某些特殊的需求。例如,Linux可应用在无线电话、PDA和电视机顶部的信号接收器等嵌入式系统中。它的文件结构可以充分利用大容量的快速硬盘。同时,Linux最初就是作为多用户操作系统而设计的,而不是通过后来修改以支持多个用户的。让多个用户共享计算机功能、共享数据和程序的能力是Linux操作系统的关键特性。
因为Linux可修改并且能充分利用现有的硬件,所以它可以运行在许多微处理器系统上,也可以运行在大型机上。微处理器硬件的普及推动着Linux的发展,而且,微处理器在保持价格基本不变的情况下,其速度正变得越来越快。运行在这些快速微处理器上的Linux足以替代许多台式机工作站。Linux适用于那些为使用某些代理商硬件而不乐意去学习一种新操作系统的用户,也适用于那些喜欢软件环境一致的系统管理员。标准操作系统的出现推动了软件业的发展,使得目前的软件开发商能提供一种可运行在不同制造商制造的计算机上的软件版本。
9.具有标准兼容性
Linux是一个与POSIX(Portable Operating System Interface)相兼容的操作系统,它所构成的子系统支持所有相关的ANSI、ISO、IETF和W3C业界标准。为了使UNIX system V和BSD上的程序能直接在Linux上运行,Linux还增加了部分system V和BSD的系统接口,使Linux成为一个完善的UNIX程序开发系统。Linux也符合X/Open标准,具有完全自由的X Windows实现。另外,Linux在对工业标准的支持上做得非常好,由于各Linux发布厂商都能自由获取和接触Linux的源代码,各厂家发布的Linux仍然缺乏标准,不过这些差异非常小。它们的差异主要存在于所捆绑应用软件的版本、安装工具的版本和各种系统文件所处的目录结构。
10.可靠的系统安全
Linux采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。
1.4 小结
Linux是一种开放源代码的操作系统,自1991年以自由和开放源代码的形式问世以来得到了迅猛发展,应用广泛。本章简要介绍了Linux系统的起源、Linux内核版本划分、Linux的各种发行版本、Linux和开源软件的商业模式等。