1. 什么是操作系统?
操作系统,Operating System,简称OS,是计算机系统中必不可少的基础软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心。
操作系统的作用是管理和控制计算机系统中的硬件和软件资源。
比如:
- 负责直接管理计算机系统的各种硬件资源,如对CPU、内存、磁盘等的管理,同时对系统资源供需优先次序进行管理。
- 控制设备的输入、输出,以及操作网络和管理文件系统等事务。
- 对计算机系统中各类软件资源的管理
- 各类应用软件的安装
- 运行环境设置等
目前PC(Intel x86系列)计算机上比较常见的操作系统有Windows、Linux、DOS、Unix等。
2. 什么是Linux?
Linux是一套开放源代码程序的、并可以自由传播的类Unix操作系统软件。 (Unix系统是Linux系统的前身,具备很多优秀特性)。
其设计之初,就是基于Intel x86系列CPU架构计算机的。
它是一个基于POSIX的多用户、多任务并且支持多线程和多CPU的操作系统。
开发Linux系统的目的就是建立不受任何商业化软件版权制约的、全世界都能自由使用的类Unix操作系统兼容产品。
在过去的20年里,Linux系统主要被应用于 服务器端、嵌入式开发和个人PC桌面 3大领域,其中服务器领域是重中之重。
特点:
- 是开放源代码的程序软件,可自由修改
- Unix系统兼容,具备几乎所有Unix的优秀特性
- 可自由传播,无任何商业化版权制约
- 适合Intel等x86 CPU系列架构的计算机
2.1 Linux的起源
2.1.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等。
2.1.2 Unix的5大优秀特性
- 技术成熟,可靠性高
- 使用Unix系统时,即使连续运行若干年也无需重启,它依然可以工作得很好。只要计算机硬件不坏,Unix就很难会出现问题。
- 极强的可伸缩性
- Unix支持的CPU处理器体系架构非常多,包括Intel/AMD(x86系列)及HP-PA,MIPS,PowerPC,UltraSPARC,ALPHA等RISC芯片,以及SMP、MPP等技术。
- 可能是由于早期各大厂商都基于Unix进行适合自己的硬件开发,因此,Unix支持的CPU架构才更多
- 强大的网络功能
- Internet互联最重要的协议TCP/IP就是在Unix上开发和发展起来的。此外,Unix还支持非常多的常用的网络通信协议,如NFS,DCE,IPX/SPX,SLIP,PPP等
- 强大的数据库支持能力
- Oracle, DB2, Sybase, Informix等大型数据库,都把Unix作为其主要的数据库开发和运行平台,一直到目前为止,依然如此。
- 强大的开发功能
- 正是Unix促使了C语言的诞生,并相互促进和发展,称为当时工程师的首选操作系统和开发环境。互联网早期有重大意义的软件新技术的出现几乎都在Unix上,例如:TCP/IP,WWW, Java, XML等
2.1.3 Unix操作系统的革命
70年代中后期,由于各厂商及商业公司开发的Unix及内置软件都是针对自己公司特定硬件的,因此在其他公司的硬件上基本上无法直接运行,而且当时没有人对开发基于x86架构CPU的系统感兴趣。
另外,70年代末,Unix又面临了突如其来的被AT&T回收版权的重大问题,特别是要求禁止对学生群体提供Unix系统源代码,这样的问题一度引起了当时Unix业界的恐慌,也因此产生了商业纠纷。
由于Unix面临 版权回收问题,以及代码不开源等 的问题,这直接或间的导致了新的类Unix系统的诞生以及自由软件运动的建立和发展。
- 1984年,Richard Stallman发起了开发自由软件的运动,并成立了自由软件基金会和GNU项目。当时发起这个自动软件运动和创建GUN项目的目的其实很简单,就是想开发一个类似Unix系统,并且是自由软件的完整操作系统,也就是要解决70年代末Unix版权问题以及软件源代码面临闭源的问题,这个系统叫做GNU操作系统。**GNU系统**后来没有流行起来。现在的GNU系统通常是使用Linux系统的内核,以及使用了GNU项目贡献的一些组件加上其他相关程序组成,这样的组合被称为GNU/Linux操作系统
- 80年代初,大学Andrew Tanenbaum(谭邦宁),于1984年开始着手编写新的用于教学的Unix系统,目标是开发的新Unix系统尽可能和原有的Unix系统兼容,并且可以运行于x86 PC平台,这个系统叫Minix。**Minix的目的只是用于教学,无法满足商用的需求**,但是Minix的产生对于Linux的诞生又是至关重要的一个部分。
2.1.4 Linux的诞生
Linux系统的诞生开始于芬兰赫尔辛基大学的一位计算机系的学生,名为Linus Torvalds。在学校期间,接触了Unix系统,当时的Unix系统仅为一台主机,且对应了多个终端,使用时存在操作等待时间很长等不爽的问题,无法满足它的使用需求,就萌发了自己开发一个Unix的想法。
于是,他就找到了谭邦宁教授开发的用于教学的Minix操作系统,将Minix安装到了他的I386个人计算机上。此后,开始陆续阅读了Minix系统的源代码,从Minix系统中学到了很多重要的系统核心程序设计理念和设计思想,从而逐步开始了Linux系统雏形的设计和开发。
Linux的标志和吉祥物为一只名叫Tux的企鹅——Torvalds' Unix
2.1.5 Linux的发展历程
- 1984年,Andrew S.Tanenbaum 开发了用于教学的Unix系统,命名为MINIX
- 1989年,Andrew S.Tanenbaum 将MINIX系统运行于x86的PC计算机平台
- 1990年,芬兰赫尔辛基大学学生Linus Torvalds首次接触MINIX系统
- 1991年,Linus Torvalds开始在MINIX上编写各种驱动程序等操作系统内核组件
- 1991年底,Linus Torvalds 公开了 **Linux内核源码**0.02版(http://www.kernel.org ),注意,这里公开的Linux内核源码并不是我们现在使用的Linux系统的全部,而仅是Linux内核的kernel部分的代码
- 1993年,Linux 1.0 版发行,Linux转向GPL版权协议
- 1994年,Linux的第一个商业发行版Slackware问世
- 1996年,美国国家标准技术局的计算机系统实验室确认Linux版本1.2.13(由Open Linux公司打包)符合POSIX标准
- 1999年,Linux的简体中文发行版问世
- 2000年后,Linux系统日趋成熟,涌现大量基于Linux服务器平台的应用,并广泛应用于基于ARM技术的嵌入式系统中。
2.1.6 Linux系统诞生发展过程中关键代表人物
3. Linux核心概念和知识
3.1 自由软件与FSF
3.1.1 自由软件
自由软件的核心就是 没有商业化版权制约,源代码开放,可无约束自由传播。
自由软件强调的是权利问题,而非是否免费的问题。自由软件中的自由是“言论自由”中的“自由”,而不是“免费啤酒”的“免费”。
自由意味着freedom,而免费意味着free,这是完全不同的概念。
例如:Red Hat Linux自由但不免费,CentOS Linux是自由且免费的。
3.1.2 自由软件基金会FSF
FSF( Free Software Foundation) 是Richard Stallman于1984年发起和创办的。
FSF的主要项目是GNU项目。
它的目标是建立可自由发布和可移植的类Unix操作系统产品。
GNU项目本身产生的主要软件包括:
- Emacs编辑软件
- gcc编译软件
- bash命令解释程序和编程语言
- gawk(GNU's awk)等
3.2 GNU知识
GNU的全程是GUN's not unix,意思是“GNU不是UNIX”,GNU计划,是FSF的主要项目。
GNU类Unix操作系统,是由一系列应用程序、系统库和开发工具构成的软件集合,例如:Emacs编辑软件,gcc编译软件,bash命令解释程序和编程语言,以及gawk(GNU's awk)等,并加上了用于资源分配和硬件管理的内核。
现在的GNU系统通常是使用Linux系统的内核,加上GNU项目贡献的一些组件,以及其他相关程序组成的,这样的组合被称为GNU/Linux操作系统。
1991年Linux内核发布的时候,GNU项目已经完成了除系统内核之外的各种必备软件的开发。
在Linus Torvalds和其他开发人员的努力下,GNU项目的部分组件又运行到了Linux内核之上,例如:GNU项目里的Emacs,gcc,bash,gawk等,至今都是Linux系统很重要的基础软件。
3.3 GPL知识
3.3.1 GPL
GPL(General Public License),通用共同许可,是一个最著名的开源许可协议,开源社区最著名的Linux内核就是在GPL许可下发布的。
GPL许可是自由软件基金会创建的。
GPL许可的核心,保证任何人有共享和修改自由软件的自由,任何人有权取得、修改和重新发布自由软件的源代码权利,但都必须同时给出具体更改的源代码。
虽然整个Linux内核是基于GNU通用公共许可的,但是Linux内核并不是GNU计划的一部分。
4. Linux系统组成
Linux操作系统的**核心为Linus Tarvalds开发的Kernel**,Linux内核之上的组分为几部分:
- 一部分是GNU组件,如Emacs,gcc,bash,gawk等
- 另一些重要组成部分则来自加利福尼亚大学Berkeley分校的BSD UNIX项目和麻省理工学院的X Windows系统项目
- 以及在这之后成千上万的程序员开发的应用程序等
正式Linux内核与GNU项目、BSD Unix和MIT的X11的结合,才使得整个Linux操作系统得以很快形成,并得到了发展,进而组成了今天优秀的Linux系统。
Linux操作系统 = Linux内核+ GNU软件及系统软件 + 必要的应用程序
下图是Linux操作系统组成原理示意图。
4.1 Linux的特点
4.1.1 Linux受欢迎的原因
- 自由软件,不用支付费用可以获得系统和系统的源代码,并可以根据自己的需要对源代码进行必要的修改,无偿使用,无约束地自由传播
- Linux具有Unix的全部优秀特性,任何使用Unix操作系统或想要学习Unix操作系统的人,都可以通过学习Linux来了解Unix,同样可以获得Unix中的几乎所有优秀功能,并且,Linux系统更开放,社区开发和全世界的使用者也更活跃。
5. 如何选择Linux发行版
Linux内核(kernel)版本主要有3个系列:
- Linux Kernel 2.2
- Linux Kernel 2.4
- Linux Kernel 2.6
- Linux Kernel 3.x
- Linux Kernel 4.x
- ...
Linux的发行商包括Slackware,Redhat,Debian,Fedora,TurboLinux,Mandrake,SUSE,CentOS,Ubuntu,红旗,麒麟...
重要的发行版本:
- Red Hat: Red Hat Linux 9.0的内核为2.4.20。在版本9.0后,Red Hat不再遵循GPL协议,成为收费产品(但仍开源),发展的新版本依次为Red Hat 3.x,Red Hat 4.x,Red Hat 5.x,Red Hat 6.x,Red Hat 7.x。
- Fedora:为Red Hat的一个分支,仍遵循GPL协议,可以认为是Red Hat预发布版
- CentOS(Community Enterprise Operating System):Red Hat的另一个重要分支,以Red Hat所发布的源代码重建符合GPL许可协议的Linux系统,即将Red Hat Linux源代码的商标LOGO以及非自由软件部分去除后再编译而成的版本,目前CentOS已被Red Hat公司收购,但仍开源免费。
CentOS是目前国内互联网公司使用最多的Linux系统版本
6. 选择适合自己的Linux系统
- Ubuntu => 桌面系统,不想用盗版,不想花钱购买商业系统软件
- CentOS 或 Red Hat => 服务器端Linux系统,稳定的服务器系统,首选CentOS
- Debian 或 FreeBSD => 系统稳定性、安全性有更高的要求或者是特殊使用偏好的用户
- Fedora => 特别痴迷新技术体验和追求最新的软件版本,但要容忍Fedora潜在的新技术软件的Bug和系统的稳定性的问题
- 麒麟Linux => 更好的中文环境支持
7. 选择CentOS的版本
下面是CentOS的主流版本在国内互联网企业的使用现状说明:
- CentOS5系列:占25%左右,主流版本有CentOS 5.5,CentOS 5.8,CentOS 5.10,CentOS 5.11,不推荐新手学习
- CentOS6系列:占45%左右,主流版本有CentOS 6.2,CentOS 6.4,CentOS 6.6,**CentOS 6.7**,推荐新手学习
- CentOS7系列:刚刚发布不就,目前极少企业正式使用,不建议先去玩它。
8. 搭建学习Linux运维环境
8.1 虚拟机软件介绍
虚拟机Virtual Machine软件就是一套特殊的软件,它可以作为操作系统独立运行,也可以运行于操作系统之上。
若是运行于系统之上的虚拟机软件,在一台电脑上安装虚拟机软件之后,就可以模拟出来若干台相对独立的虚拟PC设备,并且可以在每台虚拟的PC设备上安装运行操作系统,运行网络服务,和真实的计算机设备几乎无任何使用差别。
使用时,需要先在电脑上安装好虚拟机软件,如:VMware Workstation,然后通过安装的虚拟机软件创建一个或多个虚拟机系统,最后在这些虚拟的电脑设备上安装操作系统并进行启动配置。
最终,实现在一台电脑上“同时”运行多个虚拟机设备系统。
另外,还可以将这些虚拟的系统连成局域网,用来部署网站集群架构等更深层次的运维技术,这样的虚拟环境,在后文会涉及。
Windows系统,推荐使用VMware Workstation;
MacOS系统,可以选择Virtual PC;
Ubuntu系统,可以选择Xen、KVM、VMware(linux版本)