l3.Linux系统介绍与环境搭建准备(一)

1,369 阅读20分钟

“ 本文正在参加「金石计划 . 瓜分6万现金大奖」 ”

本章以操作系统的介绍作开篇,首先介绍操作系统的基础概念以及操作系统的原理;然后带领读者了解Unix/Linux的诞生和发展史,以及市面上常见的Unix/Linux系统版本,并且针对发展过程中的相关关键人物进行了介绍;接着,给大家讲解需要重点掌握的GNU、GPL等名词知识,以及本书的主人公的Linux优秀特性、常见的Linux发行版本以及不同应用场景的选择建议;最后,本章将带读者了解互联网常用的两个重点Linux版本CentOS和Red Hat Linux,并完成CentOS Linux的基本环境搭建准备。

1.1 Linux简介

1.1.1 什么是操作系统?

如果被问到什么是操作系统,可能很多初学者都会一脸茫然。虽然我们都知道平时一直在用的Windows7/8/10,其实就是操作系统,却无法准确给出操作系统的定义,或者向提问者解释清楚什么是操作系统。

操作系统,英文名称 Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心。

操作系统的作用是管理和控制计算机系统张红的硬件和软件资源,例如,它负责直接管理计算机系统的各种硬件资源,如对CPU、内存、硬盘等的管理,同时对系统资源供需的优先顺序进行管理。操作系统还可以控制设备的输入、输出以及操作网络与管理文件系统等事务。同时,它也负责对计算机系统中各类软件资源进行管理,例如,各类应用软件的安装、运行环境设置等。图1-1给出了操作系统与计算机硬件、软件之间的关系示意图。

t1-1.PNG

图1-1 操作系统与计算机软硬件关系示意图

t1-2.png

图1-2 简单理解操作系统作用示意图

d1-1.png 操作系统与计算机软硬件关系示意图

综上,可以给操作系统一个基本的定义。

操作系统是计算机系统中必不可少的基础系统软件,它的作用是负责管理和控制计算机系统中的硬件和软件资源,合理地组织计算机系统的工作流程,以便有效地利用这些资源为使用者提供一个功能强大、使用方便的操作及使用环境。它在计算机系统(硬件)与使用者之间起到接口的作用。

上面的定义听起来是不是有些复杂?下面就来帮助大家更简单快速地理解什么是操作系统。操作系统就是处于用户与计算机系统硬件之间用于传递信息的系统程序软件。例如:操作系统会在接收到用户输入的信息后,将其传给计算机系统硬件核心进行处理,然后再把计算机系统硬件的处理结果返回给使用者。图1-2所示的是简单理解操作系统作用的示意图。

目前PC(Intel x86 系列)计算机上比较常见的操作系统有Windows、Linux、DOS、Unix等。

1.1.2 什么是Linux?

和大家熟知的Window操作系统软件一样,Linux也是一个操作系统软件。但是和Window不同的是,Linux是一套开发源代码程序的、并且可以自由传播的类Unix操作系统软件(Unix系统是Linux系统的前身,具备很多优秀特性)。其在设计之初,就是基于Intel x86系列CPU架构计算机的。它是一个基于POSIX的多用户、多任务并且支持多线程和多CPU的操作系统。

Linux是由世界各地成千上万的程序员设计和开发实现的,当初开发Linux系统的目的就是建立不受任何商业化软件版权制约的、全世界都能自由使用的类Unix操作系统兼容产品。在过去的20年里,Linux系统主要被应用于服务器端、嵌入式开发和个人PC桌面3大领域,其中服务器端领域是重中之重。

我们熟知的大型、超大型互联网企业(百度、腾讯、Sina、阿里等)都在使用Linux系统作为其服务器端的程序运行平台,全球及国内排名前1000的90%以上网站使用的主流系统都是Linux系统。

从上面的内容可以看出,Linux操作系统之所以如此流行,是因为它具有如下这些优秀的特点。

  • Linux是开放源代码的程序软件,可自由修改。
  • 与Unix系统兼容,具备Unix几乎所有的优秀特性。
  • 可自由传播,无任何商业化版权制约。
  • 适合Intel等x86 CPU系列架构的计算机。

技巧:好的总结习惯很重要,学会主动对阶段性的知识小结是学好Linux运维的重要习惯。

POSIX全称为 Portable Operating System Interface,中午翻译为可移植操作系统接口,POSIX标准定义了操作系统应该为应用程序提供的接口标准。

1.2 Linux的起源

1.2.1 Unix的历史

说到Linux的起源,就不得不提到Linux之前的Unix系统,Unix系统于1969年在AT&T的贝尔实验室诞生。20世纪70年度,它逐步盛行,这期间,又产生了一个比较重要的分支,就是大约1977年诞生的BSD(Berkeley Software Distribution)系统。从BSD系统开始,各大厂商及商业公司开始了根据自身公司的硬件架构,并以BSD系统为基础进行Unix系统的研发,从而产生了各种版本的Unix系统,例如:SUN公司的Solaris,IBM公司的AIX,HP公司的HP UNIX等。图1-3给出了Unix系统诞生、发展的时间及版本分支介绍,供读者参考。

从图1-3中可以看到,本书的“主人公“Linux系统,诞生于1991年左右,因此,可以说Linux是从Unix发展而来的。

1.2.2 Unix的5大优秀特性

细心的读者应该看到前文曾提到“类Unix操作系统兼容产品“或“类Unix操作系统软件“吧?为什么都要开发类Unix系统呢?那是因为Unix是一个非常棒的操作系统,它很像一个非常聪明伶俐但不太听话的孩子,而开发者们在开发系统时,一方面想要继承它的“聪明伶俐“,另一方面又想改善它不听话的一面,故而会有如此考虑。

t1-3.png

图1-3 Unix诞生及版本分支发展简略图解

那么Unix都有哪些“聪明伶俐“的特点呢?下面一起来看看吧。

  • 技术成熟,可靠性高

    使用Unix系统时,即使连续运行若干年也无需重启,它依然可以工作得非常好。毫不夸张地说,只要计算机硬件不坏,Unix就很难会出问题。

  • 极强的可伸缩性

    Unix支持的CPU处理器体系架构非常多,包括Intel/AMD及HP-PA、MIPS、PowerPC、UltraSPARC、ALPHA等RISC芯片,以及SMP、MPP等技术。

    提示: 可能是由于早期各大厂商都基于Unix进行适合自己的硬件开发,因此,Unix支持的CPU架构才更多。

  • 强大的网络功能

    Intelnet互联最重要的协议TCP/CP就是在Unix上开发和发展起来的。此外,Unix还支持非常多的常用的网络通信协议,如NFS、DCE、IPX/SPX、SLIP、PPP等。

  • 强大的数据库支持能力

    Oracle、DB2、Sybase、Informix等大型数据库,都将Unix作为其主要的数据库开发和运行平台,一直到目前为止,依然如此。

  • 强大的开发功能

    正是Unix促使了C语言的诞生,并相互促进与发展,成为当时工程师的首选操作系统和开发环境。互联网早期有重大意义的软件新技术的出现几乎都在Unix上,例如:TCP/IP、WWW、Java、XML等。

1.2.3 Unix操作系统的革命

    20世纪70年代中后期,由于各厂商及商业公司开发的Unix及内置软件都是针对自己公司特定硬件的而进行的,因此在其他公司的硬件上基本上无法直接运行,而且当时没有人对开发基于x86架构CPU的系统感兴趣。另外,20世纪70年代来,Unix又面临了突如其来的被AT&T回收版权的重大问题,特别是要求禁止对学生群体提供Unix系统源代码,这样的问题一度引起了当时Unix业界的恐慌,也因此产生了商业纠纷。

由于Unix面临版权回收问题,以及代码不开源等的问题,这直接或间接的导致了新的类Unix系统的诞生以及自由软件运动的建立和发展。

1984年,Richard Stallman发起了开发自由软件的运动,并成立了自由软件基金会(Free Software Foundation,FSF)和GNU项目。当时发起这个自由软件运动和创建GNU项目的其实很简单,就是想开发一个类似于Unix系统、并且是自由软件的完整操作系统,也就是要解决20世纪70年代末Unix版权问题以及软件源代码面临闭源的问题,这个系统叫做GNU操作系统。

需要补充说明的是,这个GNU系统后来没有流行起来。现在的GNU系统通常是使用Linux系统的内核,以及GNU项目贡献的一些组件加上其他相关程序组成的,这样的组合被称为GNU/Linux操作系统。

也是在20世纪80年代初期,同样是由于之前的Unix系统版权和源代码限制等问题,使得当时大学里教学Unix系统束缚很大。因此,当时一个大学的教授,名字为Andrew Tanenbaum(谭邦宁),于1984年(大概)开始着手编写新的用于教学的Unix系统,目标是开发的新的类Unix系统应尽可能地与原有的Unix系统兼容,并且可以运行于x86 PC平台,这个系统的名字为Minix。

不过,由于谭邦宁开发这个Minix系统的目的只是用于教学,因此,Minix系统的功能无法满足商用的需求,但是Minix的产生对于Linux的诞生又是至关重要的一个部分,且看下文。

1.2.4 Linux的诞生

Linux系统的诞生开始于芬兰赫尔辛基大学的一位计算机系的学生,其名字为Linus Torvalds。在大学期间,他接触到了学校的Unix系统,但是,当时的Unix系统仅为一台主机,且对应了多个终端,使用时存在操作等待时间很长等一些体验极差的问题,无法满足年轻的Linus Torvalds的使用需求。因此他就萌生了自己开发一个Unix的想法,不久之后,他就找到了前文提到的谭邦宁教授开发的用于教学的Minix操作系统,与我们现在一样,他将Minix安装到了他的I386个人计算机上。此后,Torvalds又开始陆续阅读了Minix系统的源代码,从Minix系统中学到了很多重要的系统核心程序设计理念和设计思想,从而逐步开始了Linux系统雏形的设计和开发。

Linux的标志和吉祥物为一只名字叫做Tux的企鹅--Torvalds' Unix,如图1-4所示。

t1-4.png

图1-4 企鹅Tux

1.2.5 Linux的发展历程

1.2.5.1 Linux的发展历程简介

1)1984年,Andrew S. Tanenbaum开发了用于教学的Unix系统,命名为Minix。

2)1989年,Andrew S. Tanenbaum将Minix系统运行于x86的个人计算机平台上。

3)1990年,芬兰赫尔辛基大学学生Linus Torvalds首次接触Minix系统。

4)1991年,Linus Torvalds开始在Minix上编写各种驱动程序等操作系统内核组件。

5)1991年底,Linus Torvalds公开了Linux内核源码0.02版(www.kernel.org)。注意,这里公开了Linux内核源码并不是我们现在使用的Linux系统的全部,而仅仅是Linux内核kernel部分的代码。

6)1993年,Linux 1.0版发行,Linux转向GPL版权协议。

7)1994年,Linux的第一个商业发行版Slackware问世。

8)1995年,Red Hat软件公司成立,同年发布了Red Hat Linux 2.0。

9)1996年,美国国家标准技术局的计算机系统实验室确认Linux 版本 1.2.13(由Open Linux公司打包)符合POSIX标准。

10)1997年,Red Hat Linux 5.0 发布,它支持Intel、alpha和Spare平台和大多数的应用软件。极其简单易用的RPM模块化的安装、配置和卸载工具,使程序的安装可在15分钟内完成。软件升级也更加方便了。

11)1999年,Linux的简体中文发行版问世。

12)2003年4月,Red Hat Linux 9.0 发布。其重点放在改善桌面应用方面,包括改进安装过程、更好的字体浏览、更好的打印服务等。2003年,Red Hat的Linux 市场份额为80%以上。

13)2004年4月,Red Hat公司正式停止对Red Hat 9.0 版本的支持,标志着Red Hat Linux的正式完结。原本的桌面版Red Hat Linux 发行包则与来自民间的Fedora计划合并,成为Fedora Core发行版本。Red Hat公司不再开发桌面版的Linux发行包,而将全部力量集中在服务器版的开发上,也就是Red Hat Enterprise Linux版。

14)2005年10月RHEL 4发布。

15)2007年3月,主流版本RHEL 5 发布,CentOS系统开始在中国互联网公司流行。

16)2010年4月,RHEL 6(Red Hat Enterprise Linux 6.0)BETA测试版发布。

17)2014年6月 Red Hat Enterprise Linux 7.0发布,RHEL 7.0版本和RHEL 6.0以前的版本有了较大的变化,例如:内核版本升级到3.10以上,系统启动和基本管理变化较大,文件系统也由传统的ext改为xfs,同时在大数据、云计算、Docker方面做了很大优化。

1.2.5.2 Linux发展历程中相关人物

我们在使用优秀的Linux系统时,一定要向前辈们致以深深的敬意,没有他们,就没有今天的Linux优秀系统存在(如图1-5所示)。

t1-5.png

图1-5 Linux系统诞生发展过程中关键代表人物

d1-2.PNG

1.3 Linux核心概念知识

1.3.1 自由软件与FSF

1.3.1.1 自由软件

简单地理解,自由软件的核心就是没有商业化软件版权制约,源代码开放,可无约束地自由传播。

注意:自由软件强调的是权利问题,而非是否免费的问题。大家一定要理解这个概念,自由软件中的自由是“言论自由”中的“自由”,而不是“免费啤酒”中的“免费”。

自由软件意味着freedom,而免费意味着free,这是完全不同的概念。例如:Red Hat Linux 自由但不免费,CentOS linux是自由且免费的。

自由软件关乎使用者运行、复制、发布、研究、修改和改进该软件的自由。更精确地说,自由软件赋予软件使用者四种自由,具体如下。

  • 不论目的为何,有运行该软件的自由。
  • 有研究该软件如何运行,以及按需改写软件的自由。当然,取得该软件源代码为达成此目的之前提。
  • 有重新发布拷贝的自由。
  • 有改进软件,以及向公众发布改进版本的自由,这样整个社群都可受惠。同样,取得该软件的源码为达成此目的之前提。

1.3.1.2 自由软件基金会FSF

FSF(Free Software Foundation)的中文意思是自由软件基金会,是Richand Stallman于1984年发起和创办的。FSF的主要项目是GNU项目。它的目标是建立可以自由发布和可移植的类Unix操作系统产品。GNU项目本身产生的主要软件包括:Emacs 编辑软件、gcc 编译软件、bash命令解释程序和编程语言,以及gawk(GNU's awk)等。

1.3.2 GNU知识

GNU的全称为GNU‘s not unix,意思“GNU不是UNIX”,GNU计划,又称革奴计划,是由Richard Stallman在1984年公开发起的,是FSF的主要项目,前面已经提到过,这个项目的目标是建立一套完全自由和可移植的类Unix操作系统。

GNU类Unix操作系统由一系列应用程序、系统库和开发工具构成的软件集合,(例如:Emacs 编辑软件、gcc 编译软件、bash命令解释程序和编程语言,以及gawk)等,并加上了用于资源分配和硬件管理的内核。

但是GNU自己的内核Hurd仍在开发中,离实用还有一定的距离。因此,这个GNU系统并没有流行起来。现在的GNU系统通常是使用Linux系统的内核、加上GNU项目贡献的一些组件,以及其他相关程序组成的,这样的组合被称为GNU/Linux操作系统。

t1-6.png

图1-6 GNU相关图片纪念

到1991年Linux内核发布的时候,GNU项目已经完成了除系统内核之外的各种必备软件的开发。在Linux Torvalds 和其他开发人员的努力下,GNU项目的部分组件又运行到了Linux内核之上,例如:GNU项目里的Emacs、gcc 、bash、gawk等,至今都是Linux系统中很重要的基础软件。GNU项目的相关图片纪念如图1-6所示。

1.3.3 GPL知识

1.3.3.1 GPL

GPL全称为General Public License,中文名为通用公共许可,是一个最著名的开源许可协议,开源社区最著名的Linux内核就是在GPL许可下发布的。GPL许可是由自由软件基金会(Free Software Foundation)创建的。

1984年,Richard Stallman 发起开发自由软件的运动后不久,在其他人的协作下,他创立了通用公共许可证(GPL),这对推动自由软件的发展起到了至关重要的作用,那么,这个GPL到底是什么意思呢?

简单的理解,GPL的核心,是保证任何人有共享和修改自由软件的自由,任何人有权取得、修改和重新发布自由软件的源代码权利,但都必须同时给出具体更改的源代码。

虽然整个Linux内核是基于GNU通用公共许可的,但是Linux内核并不是GNU计划的一部分,这一点请读者不要混淆。

1.3.3.2 LGPL

LGPL(Lesser General Public License)相对于GPL较为宽松,其允许不公开全部源代码,这为基于Linux平台开发商业软件提供了更广阔的空间。对于该知识点,本书仅提及一下,有兴趣的读者可到网上查询相关信息。

1.3.4 Linux系统组成

Linux操作系统的核心为Linux Torvalds 开发的 Kernel,Linux内核之上的组件分为几部分:一部分是GNU组件,如Emacs、gcc 、bash、gawk等;另一些重要组成部分则来自加利福尼亚大学Berkeley分校的BSD Unix项目和麻省理工学院的X Windows系统项目,以及在这之后成千上万的程序员开发的应用程序等(见表1-1)。正是基于Linux内核与GNU项目、BSD Unix以及MIT的X11(X Windwos)的结合,才使得整个Linux操作系统得以很快形成,并得到了发展,进而组成了今天优秀的Linux系统。

Linux操作系统=Linux内核+GNU 软件及系统软件+必要的应用程序

表1-1 Linux系统各组成部分的贡献人员

b1-1.png

图1-7为Linux系统的核心组成原理示意图。

t1-7.png

图1-7 Linux操作系统组成原理简单示意图

[1] 此部分内容参考于GNU官方网站

1.4 Linux的特点

1.4.1 Linux为什么受欢迎?

Linux以高效和灵活著称。Linux运行于个人计算机上,可以实现几乎全部的Unix特性,同时具有多任务、多用户的能力,支持多线程、多CPU。Linux是在GNU公共许可(GPL)权限下免费获得的,是一个符合POSIX标准的操作系统。

Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器,以及X-Windows图像用户界面等应用软件,使用Linux也可以像使用Windows 7、Windows 10一样,通过窗口、图标和菜单对系统进行操作,当然,这是Linux个人桌面领域的应用,在服务器端领域绝大多数场景下都还是使用命令行、文本模式操作Linux的。

Linux系统之所以受到广大计算机爱好者的喜爱,主要原因有两个,具体如下。

1)Linux属于自由软件,用户可以不用支付任何费用就可以获得系统和系统的源代码,并且可以根据自己的需要对源代码进行必要的修改,无偿使用,无约束地进行自由传播。

2)Linux具有Unix的全部优秀特性,任何使用Unix操作系统或想要学习Unix操作系统的人,都可以通过学习Linux来了解Unix,同样可以获得Unix中的几乎所有优秀功能,并且,Linux系统更开发,社区开发和全世界的使用者也更活跃。

1.4.2 Linux更多特点介绍

还记得前文对Linux操作系统特性的小结么?除了那些特点以外,其实Linux还具有如下一些特点。

  • 可以说Linux是Unix在个人计算机上的克隆版,仿Unix内核构建,几乎与Unix指令集向下完全兼容。
  • 是一个完善的支持多用户、多任务、多进程、多CPU的系统。
  • 具有很高的系统稳定性与可靠性。
  • 具有很高的系统安全性。
  • 有完善的网络服务,支持HTTP、FTP、SMTP、POP、SAMBA、SNMP、DNS、DHCP、SSH、TELNET等。
  • 是基于GNU许可,自由开发的系统。
  • 有大量第三方免费应用程序。
  • 得到了众多业界厂商支持,如IBM、Oracle、Intel、HP、MOTO、Google等。
  • 有完善的大型数据库平台,包括Oracle、DB/2、Sybase、MySQL、PostgreSQL等。
  • 有完善的图形用户界面,包括GNOME、KDE等。
  • 有完善的开发平台,包括C/C++、Java、Perl等,支持各类图形界面API,如GTK+、QT等。