Red Hat Linux 9实务自学手册
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第一篇 Linux系统管理及应用

第1章 Linux简介

Linux是一个日益成熟的操作系统,现在已经拥有大量的用户。由于其安全、高效、适合构建安全的网络应用的众多特性,Linux已被越来越多的人了解和使用。Linux是芬兰的Linus Torvalds开发的,任何人都可以自由地复制、修改、套装发行、销售,但是不可以在发行时加入任何限制,而且所有源代码是公开的,以保证任何人都可以无偿取得所有可执行文件及其源代码。作为本书的入门知识,本章将着重介绍Linux的发展历史、特性、主要应用领域以及Linux内核基本原理等。

1.1 Linux的发展历史

要讲Linux的发展历史,不能不提到UNIX和Minix。UNIX的早期版本源代码是可以免费获得的,但是当AT&T发布UNIX 7版时,它认识到UNIX的商业价值,于是在发布的版本7许可证中就禁止在课程中讲授其源代码,以免其商业利益受到损害。许多学校为了遵守该规定,就在课程中略去UNIX的内容而只讲操作系统理论。

只讲理论的结果使学生对实际的操作系统产生片面的认识。为了扭转这种局面,坦尼鲍姆坦尼鲍姆博士是荷兰阿姆斯特丹Vrije大学计算机科学系教授,国际知名的计算机科学家和教育家。他在操作系统、分布式系统以及计算机网络领域都有很深的造诣。自20世纪80年代以来,他已先后出版了一系列面向大学生和研究生的教材名著,如《计算机网络》、《操作系统:设计和实现》、《现化操作系统》等,为世界各国的大学广泛采用,深受大家的欢迎和好评。决定编写一个在用户看来与UNIX完全兼容,而内核全新的操作系统——Minix。坦尼鲍姆希望通过Minix读者可以剖析一个操作系统,研究其内部如何运作。Minix其名称源于“Mini-UNIX”。Minix一直恪守“Small is beautiful”的原则,其最早的版本甚至不需要硬盘就可以运行,这使得当时许多学生都能负担其硬件的要求。随着Minix功能和规模的增长,大多数人都想在其中加入一些新特性以使之更大、更有用,而Minix的作者在几年内却一直坚持不增加新特性,使Minix保持短小精悍的特点,便于学生理解。此后,芬兰学生Linus Torvalds便决定编写一个类似Minix的系统,其特征繁多且面向实用而非教学。他编写的这个操作系统就是Linux。

1990年,Linus Torvalds用汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来他从Minix中得到灵感,开始写了一些硬件的设备驱动程序、一个小的文件系统,这样0.0.1版本的Linux就出来了,但是它必须在有Minix的机器上编译以后才能运行。此后Linus决定彻底抛弃Minix,编写一个完全独立的操作系统。1991年10月5号Linus发布了Linux 0.0.2版本。这个版本已经可以运行bash(一种用户与操作系统内核通信的命令解释软件)和GCC(GNU C编译器)了。

Linus从一开始就决定自由扩散Linux。他把源代码发布在网上,随即就引起了三个Linux爱好者的注意,他们通过因特网也加入了Linux的内核开发工作。后来一大批高水平程序员的加入,使得Linux迅猛发展,到1993年年底,Linux 1.0终于诞生,那时它已经是一个功能完备的操作系统了,其内核写得紧凑高效,可以充分发挥硬件的性能,在4MB内存的80386机器上表现得非常好。

Linux从1.3版本之后开始向其他硬件平台移植。现在Linux已能将硬件的性能充分发挥出来,可以在Intel、DEC的Alphas、Motorola的M68k、Sun Sparc、PowerPC、MIPS等处理器上运行,并可以囊括从低端到高端的所有应用。

Linux虽然加入GNU并遵循GPL,但是并不排斥商家的参与,即在Linux上开发商业软件,故使Linux开始了新的飞跃,出现了很多Linux发行版,如Slackware、 Red Hat、Suse、TurboLinux、OpenLinux等10多种。而且,许多公司还在把其他UNIX平台的软件移植到Linux上来,连IT界的大腕如IBM、Intel、Oracle、Infomix、Sysbase、Corel、CA、Novell等都宣布支持Linux。因此,商家的加盟弥补了纯自由软件的不足和发展障碍,使Linux得以迅速普及。

1.2 Linux的特性

Linux从一个由个人开发的操作系统雏形经过短短十多年时间已发展成为当今举足轻重的操作系统,并与Windows、UNIX一起形成操作系统领域三足鼎立的局势,这是由其如下自身的特点决定的。

● 公开源码:作为程序员,通过阅读Linux内核和Linux下其他程序的源代码,可以学到很多编程经验和其他知识。作为最终用户,使用Linux可避免使用盗版Windows的尴尬,也免去了使用正版Windows的庞大费用。一个比较著名的例子是,墨西哥政府采用Linux操作系统替代使用Windows操作系统,就大约节省了1.24亿美元。

● 系统稳定:Linux采用了UNIX的设计体系,汲取了UNIX系统25年发展的经验,体现了现代操作系统的设计理念和最经得住时间考验的设计方案;因此在服务器操作系统市场上,Linux现已超过Windows成为服务器首选操作系统。

● 性能突出:德国C’T最近公布了由Jurgen Schmidt组织的最新的Windows和Linux的测试结果。结果表明:两种操作系统在各种应用情况下,尤其是在网络应用环境中,Linux的总体性能更好。

● 设备独立性:设备独立性是指操作系统把所有外部设备统一当作文件看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。Linux是具有设备独立性的操作系统,它的内核具有高度适应能力;且随着更多的程序员加入Linux编程,会有更多硬件设备加入到各种Linux内核和发行版本中。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。

● 安全性强:各种病毒的频繁出现使得微软几乎每隔几天就要为Windows公布补丁,而现在针对Linux的病毒则非常少,而且Linux的公开源代码的开发方式使得各种漏洞都能够在Linux上得到及早发现和弥补。

● 跨平台:Windows只能在Intel构架下运行,但是Linux除了可以运行于Intel平台外,还可以运行于Motorola公司的68K系列CPU,IBM、Apple、Motorola公司的PowerPC CPU,Compaq和Digital公司的Alpha CPU、MIPS芯片,以及Sun公司的SPARC和UltraSparc CPU。

● 完全兼容UNIX:Linux和现今的UNIX、System V、BSD三大主流的UNIX系统几乎完全兼容,在UNIX下运行的程序,完全可以移植到Linux下运行。

● 良好的可移植性:Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而有效的通信提供了手段,不需要另外增加特殊的通信接口。

● 强大的网络服务:Linux诞生于因特网,保证了它支持所有的标准因特网协议,而且Linux还内置了TCP/IP协议。事实上,Linux是第一个支持IPv6的操作系统。

1.3 Linux的应用领域

Linux从诞生到现在,已经在各个领域得到了广泛应用,显示了它强大的生命力,并且其应用正日益扩大。下面列举其主要应用领域:

● 教育领域:设计先进和公开源代码这两大特性使Linux成为操作系统课程的好教材。

● 网络服务器领域:稳定、健壮、系统要求低、网络功能强使Linux成为现在因特网服务器操作系统的首选,现已达到了服务器操作系统市场25%的占有率。

● 企业内部网:利用Linux系统可以使企业用低廉的投入架设E-mail服务器、WWW服务器、代理服务器、透明网关和路由器。

● 视频制作领域:Linux优良的跨平台特点使其在视频制作领域得到广泛的应用,如著名的影片《泰坦尼克号》就是由200多台装有Linux系统的机器协同完成其特技效果的。

1.4 Linux的内核及发行版本

严格地说,Linux是在GPL(GNU General Public License)版权协议下发行的操作系统内核,其版权属于Linus Torvalds。我们通常所说的Linux是指包含kernel(内核)、utilities(系统工具程序)以及application(应用软件)的一个完整的操作系统,实际上它是由某些公司或组织把Linux内核、源代码以及相关的应用程序组织在一起发行的。国际上比较著名的Linux发行版本有Red Hat、SlackWare、Debian、Fedora、Ubuntu等。国内也有不少Linux的发行版本,如北京中科红旗软件技术有限公司发布的红旗Linux,蓝点软件(深圳)有限公司发布的蓝点Linux,北京冲浪公司制作的Xterm Linux等。

Linux是UNIX的“克隆”,在源代码级上兼容绝大部分的UNIX标准(如IEEE POSIX、System V、BSD等),并且符合POSIX规范。例如对于System V来说,把其上的程序源代码拿到Linux下重新编译后就可以运行,而对于BSD UNIX来说,它的可执行文件甚至可以直接在Linux环境下运行。

注意

GPL同其他的自由软件许可证一样,允许公众享有运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己做出的改进版本向社会发行传播的自由。

由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。Linux内核的版本在发行上有自己的规则,可以从其版本号加以识别。版本号的格式为“x.yy.zz”。其中x介于0到9之间,而yy,zz则介于0到99之间,通常数字越大说明版本越高。而且它有一个非常简单的编号约定:任何偶数的核心(例如2.0.30)都是一个稳定发行的核心;而任何奇数的核心(例如2.1.42)都是一个开发中的核心,不建议初学者和生产过程中使用。另外,一些版本号后面有时会见到pNN的字样,NN是介于0到20之间的数字,它代表对某一版本的内核“打补丁”或者是修改的次数。

Linux内核版本发布的官方网站是http://www.kernel.org。新版本的内核分两种,一种是full Source版本,另一种是patch文件,即补丁。full Source版本比较大,一般是tar.gz或者是.bz2文件,两者分别是使用gzip或者bzip2进行压缩的文件,使用时需要解压缩。patch文件则比较小,一般只有几十KB到几百KB,但是patch文件是针对于特定的版本的,用户需要找到自己对应的版本才能使用。

1.5 Linux的主要组成部分

Linux一般包括四个主要部分:内核、Shell、文件结构和实用工具。

1.5.1 内核

内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用户那里接受命令并把命令送给内核去执行。Linux核心源程序通常都安装在/usr/src/linux下。当前的Linux内核主要包括:存储管理、中断异常和系统调用、进程与进程调度、文件系统、进程间通信、设备驱动、多处理器系统结构、系统引导和初始化几大部分。

传统的UNIX内核是全封闭的,即如果要往内核中加一个设备,早期的做法是编写这个设备的驱动程序,并变动内核源程序中的某些数据结构,再重新编译整个内核并重新引导系统。而在Linux里面,它允许把设备驱动程序在编译时静态地连接在内核中,如传统的驱动程序那样;也允许动态地在运行时安装,成为“模块”;还允许在运行状态下当需要用到某一模块时由系统自动安装。这样的模块仍然在内核中运行,而不是像在微内核中那样作为单独的进程运行,所以其运行效率较高。

1.5.2 Shell

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由Shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。Linux提供了像Microsoft Windows那样的可视的命令输入界面——X Window的图形用户界面(GUI),它提供了很多窗口管理器,其操作就像Windows一样,有窗口、图标和菜单,所有的管理都通过鼠标控制。现在比较流行的窗口管理器是KDE和GNOME。每个Linux系统的用户都可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。同Linux本身一样,Shell也有多种不同的版本,目前主要有以下几种:

● Bourne Shell:是贝尔实验室开发的;

● BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的Shell;

● Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容;

● C Shell:是Sun公司Shell的BSD版本。

1.5.3 文件结构

文件结构是文件存放在磁盘等存储设备上的组织方法,主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径,我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。Linux目录采用多级树形结构(如图1-1所示),用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。文件结构的相互关联性使共享数据变得容易,几个用户可以访问同一个文件。Linux是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。

图1-1 Linux的目录结构

1.5.4 实用工具

内核、Shell和文件结构一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件以及使用系统。此外,Linux操作系统还有许多被称为实用工具的程序,辅助用户完成一些特定的任务。

标准的Linux系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等,用户也可以产生自己的工具。Linux中的实用工具可分为以下三类:

● 编辑器:用于编辑文件;

● 过滤器:用于接收数据并过滤数据;

● 交互程序:允许用户发送信息或接收来自其他用户的信息。

具体来说,Linux的编辑器主要有:Ed、Ex、Vi和Emacs。Ed和Ex是行编辑器,Vi和Emacs是全屏幕编辑器。

Linux的过滤器(Filter)读取从用户文件或其他地方的输入,检查和处理数据,然后输出结果。从这个意义上说,过滤器过滤了经过它们的数据。Linux有不同类型的过滤器,一些过滤器用行编辑命令输出一个被编辑的文件,另外一些过滤器是按模式寻找文件并以这种模式输出部分数据的。还有一些执行字处理操作,检测一个文件中的格式,输出一个格式化的文件。过滤器的输入可以是一个文件,也可以是用户从键盘输入的数据,还可以是另一个过滤器的输出。过滤器还可以相互连接,因此,一个过滤器的输出可能是另一个过滤器的输入。在有些情况下,用户可以编写自己的过滤器程序。

交互程序是用户与机器的信息接口。Linux是一个多用户系统,它必须和所有用户保持联系。信息可以由系统上的不同用户发送或接收,信息的发送有两种方式,一种方式是与其他用户一对一地链接进行对话,另一种是一个用户对多个用户同时链接进行通信,即所谓广播式通信。