1.1 相关知识
1.1.1 子任务1 认识Linux的前世与今生
1. Linux系统的历史
Linux系统是一个类似UNIX的操作系统,Linux系统是UNIX在计算机上的完整实现,它的标志是一个名为Tux的可爱的小企鹅,如图1-1所示。
视频1-1 开源自由的Linux操作系统的简介
1990年,芬兰人林纳斯·托瓦兹(Linus Torvalds)接触了为教学而设计的Minix系统后,开始着手研究编写一个开放的与Minix系统兼容的操作系统。1991年10月5日,Linus Torvalds在赫尔辛基技术大学的一台FTP服务器上发布了一个消息,这也标志着Linux系统诞生。Linus Torvalds公布了第一个Linux的内核版本0.02版。在最开始时,Linus Torvalds的兴趣在于了解操作系统运行原理,因此Linux早期的版本并没有考虑最终用户的使用,只是提供了最核心的框架,使得Linux编程人员可以享受编制内核的乐趣,但这样也保证了Linux系统内核的强大与稳定。Internet的兴起,使得Linux系统也能十分迅速地发展,很快就有许多程序员加入了Linux系统的编写行列之中。
图1-1 Linux的标志Tux
随着编程小组的扩大和完整的操作系统基础软件的出现,Linux开发人员认识到,Linux已经逐渐变成一个成熟的操作系统。1992年3月,内核1.0版本的推出标志着Linux第一个正式版本诞生。这时能在Linux上运行的软件已经十分广泛了,从编译器到网络软件及X-Window都有。现在,Linux凭借优秀的设计、不凡的性能,加上IBM、Intel、AMD、Dell、Oracle、Sybase等国际知名企业的大力支持,市场份额逐步扩大,逐渐成为主流操作系统之一。
2. Linux的版权问题
Linux是基于Copyleft(无版权)的软件模式发布的,其实Copyleft是与Copyright(版权所有)相对立的新名称,它是GNU项目制定的通用公共许可证(General Public License,GPL)。GNU项目是由Richard Stallman于1984年提出的,他建立了自由软件基金会(FSF)并提出GNU计划的目的是开发一个完全自由的、与UNIX类似,但功能更强大的操作系统,以便为所有的计算机使用者提供一个功能齐全、性能良好的基本系统,它的标志是角马,如图1-2所示。
图1-2 GNU的标志角马
GPL是由自由软件基金会发行的用于计算机软件的协议证书,使用证书的软件称为自由软件(后来改名为开放源代码软件(Open Source Software))。大多数的GNU程序和超过半数的自由软件都使用它,GPL保证任何人都有权使用、复制和修改该软件。任何人都有权取得、修改和重新发布自由软件的源代码,并且规定在不增加附加费用的条件下可以得到自由软件的源代码。同时还规定自由软件的衍生作品必须以GPL作为它重新发布的许可协议。Copyleft软件的组成非常透明化,这样当出现问题时,就可以准确地查明故障原因,及时采取相应对策,同时用户不用再担心有“后门”的威胁。
小资料:GNU这个名字使用了有趣的递归缩写,它是“GNU's Not UNIX”的缩写形式。由于递归缩写是一种在全称中递归引用它自身的缩写,因此无法精确地解释出它的真正全称。
3. Linux系统的特点
Linux操作系统作为一个免费、自由、开放的操作系统,它的发展势不可当,拥有如下特点。
(1)完全免费。由于Linux遵循通用公共许可证GPL,因此任何人都有使用、复制和修改Linux的自由,可以放心地使用Linux而不必担心成为“盗版”用户。
(2)高效、安全、稳定。UNIX操作系统的稳定性是众所周知的,Linux继承了UNIX核心的设计思想,具有执行效率高、安全性高和稳定性好的特点。Linux系统的连续运行时间通常以年作为单位,能连续运行3年以上的Linux服务器并不少见。
(3)支持多种硬件平台。Linux能在笔记本电脑、PC、工作站甚至大型机上运行,并能在x86、MIPS、PowerPC、SPARC、Alpha等主流的体系结构上运行,可以说Linux是目前支持硬件平台最多的操作系统。
(4)友好的用户界面。Linux提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标方便、直观和快捷地进行操作。经过多年的发展,Linux的图形界面技术已经非常成熟,其强大的功能和灵活的配置界面让一向以用户界面友好著称的Windows也黯然失色。
(5)强大的网络功能。网络就是Linux的生命,完善的网络支持是Linux与生俱来的能力,所以Linux在通信和网络功能方面优于其他操作系统,其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些网络特性的灵活性。
(6)支持多任务、多用户。Linux是多任务、多用户的操作系统,可以支持多个使用者同时使用并共享系统的磁盘、外设、处理器等系统资源。Linux的保护机制使每个应用程序和用户互不干扰,一个任务崩溃,其他任务仍然照常运行。
1.1.2 子任务2 理解Linux体系结构
Linux一般有3个主要部分:内核(Kernel)、命令解释层(shell或其他操作环境)、实用工具。
1. Linux内核
内核是系统的心脏,是运行程序和管理磁盘及打印机等硬件设备的核心程序。操作环境向用户提供一个操作界面,它从用户那里接受命令,并且把命令送给内核去执行。由于内核提供的都是操作系统最基本的功能,如果内核发生问题,整个计算机系统就可能会崩溃。
Linux内核的源代码主要用C语言编写,只有部分与驱动相关的用汇编语言Assembly编写。Linux内核采用模块化的结构,其主要模块包括存储管理、CPU和进程管理、文件系统管理、设备管理和驱动、网络通信及系统的引导、系统调用等。Linux内核的源代码通常安装在/usr/src目录,可供用户查看和修改。
2. 命令解释层
shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令,并且把它送入内核去执行。
操作环境在操作系统内核与用户之间提供操作界面,它可以描述为一个解释器。操作系统对用户输入的命令进行解释,再将其发送到内核。Linux存在几种操作环境,分别是桌面(desktop)、窗口管理器(window manager)和命令行shell(command line shell)。Linux系统中的每个用户都可以拥有自己的用户操作界面,根据自己的要求定制。
shell是一个命令解释器,它解释由用户输入的命令,并且把它们送到内核。不仅如此,shell还有自己的编程语言用于编辑命令,它允许用户编写由shell命令组成的程序。shell编程语言具有普通编程语言的很多特点,如它也有循环结构和分支控制结构等,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。
同Linux本身一样,shell也有多种不同的版本。目前,主要有下列版本的shell。
● Bourne shell:是贝尔实验室开发的版本。
● BASH:是GNU的Bourne Again shell,是GNU操作系统默认的shell。
● Korn shell:是对Bourne shell的发展,在大部分情况下与Bourne shell兼容。
● C shell:是SUN公司shell的BSD版本。
shell不仅是一种交互式命令解释程序,而且是一种程序设计语言,它跟MS-DOS中的批处理命令类似,但比批处理命令功能强大。在shell脚本程序中可以定义和使用变量,进行参数传递、流程控制、函数调用等。
3. 实用工具
标准的Linux系统都有一套叫作实用工具的程序,它们是专门的程序,如编辑器、执行标准的计算操作等。用户也可以产生自己的工具。
实用工具可分为以下3类。
● 编辑器:用于编辑文件。
● 过滤器:用于接收数据并过滤数据。
● 交互程序:允许用户发送信息或接收来自其他用户的信息。
Linux的编辑器主要有Ed、Ex、Vi、vim和Emacs。Ed和Ex是行编辑器,Vi、vim和Emacs是全屏幕编辑器。
1.1.3 子任务3 认识Linux的版本
Linux的版本分为内核版本和发行版本两种。
1. 内核版本
内核是系统的心脏,是运行程序和管理磁盘及打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。例如,程序本身不需要了解用户的主板芯片集或磁盘控制器的细节就能在高层次上读写磁盘。
内核的开发和规范一直由Linus领导的开发小组控制,版本也是唯一的。开发小组每隔一段时间公布新的版本或其修订版,从1991年10月Linus向世界公开发布的内核0.0.2版本(因为0.0.1版本功能相当简陋,所以没有公开发布)到目前最新的内核4.16.6版本,Linux的功能越来越强大。
Linux内核的版本号命名是有一定规则的,版本号的格式通常为“主版本号。次版本号。修正号”。主版本号和次版本号标志着重要的功能变动,修正号表示较小的功能变更。以2.6.12版本为例,2代表主版本号,6代表次版本号,12代表修正号。其中次版本号还有特定的意义:如果是偶数,就表示该内核是一个可放心使用的稳定版;如果是奇数,则表示该内核加入了某些测试的新功能,是一个内部可能存在Bug的测试版。例如,2.5.74表示是一个测试版的内核,2.6.12表示是一个稳定版的内核。读者可以到Linux内核官方网站下载最新的内核代码,如图1-3所示。
图1-3 Linux内核官方网站
2. 发行版本
因为仅有内核而没有应用软件的操作系统是无法使用的,所以许多公司或社团将内核、源代码及相关的应用程序组织构成一个完整的操作系统,让一般的用户可以简便地安装和使用Linux,这就是所谓的发行版本(Distribution),一般谈论的Linux系统便是针对这些发行版本的。目前各种发行版本超过300种,它们的发行版本号各不相同,使用的内核版本号也可能不一样,现在最流行的套件有Red Hat(红帽子)、CentOS、Fedora、openSUSE、Debian、Ubuntu、红旗Linux等。
现在国内大多数Linux相关的图书都是围绕CentOS系统编写的,作者大多也会给出围绕CentOS进行写作的一系列理由,但是很多理由都站不住脚,根本没有剖析到CentOS系统与RHEL(Red Hat Enterprise Linux)系统的本质关系。CentOS系统是通过把RHEL系统释放出的程序源代码经过二次编译之后生成的一种Linux系统,其命令操作和服务配置方法与RHEL完全相同,但是去掉了很多收费的服务套件功能,而且不提供任何形式的技术支持,出现问题后只能由运维人员自己解决。经过这般分析基本上可以判断出,选择CentOS的理由只剩下免费!当人们大举免费、开源、正义的旗帜来宣扬CentOS系统的时候,殊不知CentOS系统其实早在2014年年初就已经被红帽公司“收编”,当前只是战略性的免费而已。再者说,根据GNU GPL许可协议,我们同样也可以免费使用RHEL系统,甚至是修改其代码创建衍生产品。开源系统在自由程度上没有任何差异,更无关道德问题。
本书是基于最新的RHEL 7.4系统编写的,书中内容及实验完全通用于CentOS、Fedora等系统。也就是说,当您学完本书后,即便公司内的生产环境部署的是CentOS系统,也照样可以搞得定。更重要的是,本书配套资料中的ISO镜像与红帽RHCSA及RHCE考试基本保持一致,因此更适合备考红帽认证的考生使用。(加入QQ群189934741可随时索要ISO及其他资料,后面不再说明。)