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发行版

5.1 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版本)

Linux系统介绍与环境搭建准备的更多相关文章

  1. 第一章 Linux系统介绍与环境搭建准备

    1.操作系统: Operating System,简称OS,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心. 操作系统就是处于用户与计算机系统硬件之间用于传递信息的系统程序软件. ...

  2. Linux vagrant+virtualbox环境搭建步骤

    Linux vagrant+virtualbox环境搭建步骤 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用. 我们可 ...

  3. win10子系统linux.ubuntu开发环境搭建

    移步新博客... win10子系统linux.ubuntu开发环境搭建

  4. s3c6410 Linux 驱动开发环境搭建

    s3c6410 Linux 驱动开发环境搭建 -- 既然你是做Linux开发的,你还用虚拟机? 非常多人都在win下做开发,于是SD_writer.exe之类的烧写工具"大行其道" ...

  5. linux下LAMP环境搭建

    ++++++++++++++++++++++++++++++++++++++++++++++ linux下LAMP环境搭建 ++++++++++++++++++++++++++++++++++++++ ...

  6. Linux交叉开发环境搭建 —— 效率之源

    楼主今天终于把所有Linux开发环境需要的软件下载完毕了.虽然以前也是搭建过的,时间久了又折腾了一晚上. 交叉环境: Windows.Linux文件共享 SecureCRT 连接虚拟机终端 工具: V ...

  7. RocketMQ在linux平台下环境搭建

    RocketMQ在linux下部署运行和window类似,只不过启动namesrv和broker是通过mqnamesrv.sh 和 mqbroker.sh来启动的. 一.  环境搭建 需要jdk1.6 ...

  8. linux下PHP 环境搭建

    linux下环境搭建   第一步 安装Apache2 sudo apt-get install apache2   第二步 安装PHP模块 sudo apt-get install php5   第三 ...

  9. linux下scrapy环境搭建

    最近使用scrapy做数据挖掘,使用scrapy定时抓取数据并存入MongoDB,本文记录环境搭建过程以作备忘 OS:ubuntu 14.04  python:2.7.6 scrapy:1.0.5 D ...

随机推荐

  1. CAS单点登录系列之极速入门于实战教程(4.2.7)

    @ 目录 一. SSO简介 1.1 单点登录定义 1.2 单点登录角色 1.3 单点登录分类 二. CAS简介 2.1 CAS简单定义 2.2 CAS体系结构 2.3 CAS原理 三.CAS服务端搭建 ...

  2. CVPR2018关键字分析生成词云图与查找

    今日目标:爬取CVPR2018论文,进行分析总结出提到最多的关键字,生成wordCloud词云图展示,并且设置点击后出现对应的论文以及链接 对任务进行分解: ①爬取CVPR2018的标题,简介,关键字 ...

  3. Struts2-学习笔记系列(12)-set集合

    3.1编写类型转换器  只需实现 converFromString方法 public class UserConvert extends StrutsTypeConverter { @Override ...

  4. AJ学IOS(39)UI之核心动画之CABasicAnimation(基础动画)

    AJ分享,必须精品 一.CABasicAnimation简介 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPat ...

  5. AJ学IOS(33)UI之Quartz2D雪花飘落效果刷帧

    AJ分享,必须精品 效果: 可以加入随机数实现真的飘落效果哦. 代码: -(id)initWithCoder:(NSCoder *)aDecoder { //请注意这里一定要先初始化父类的构造方法 i ...

  6. sql server临时删除/禁用非聚集索引并重新创建加回/启用的简便编程方法研究对比

    前言: 由于新型冠状病毒影响,博主(zhang502219048)在2020年1月份从广东广州工作地回到广东揭阳产业转移工业园磐东街道(镇里有阳美亚洲玉都.五金之乡,素以“金玉”闻名)老家后,还没过去 ...

  7. Docker-None & Host 网络

    本节介绍None&Host网络. 1.前言 点击此处回到docker系列文章目录 前面我们介绍了bridge network,本小节继续介绍none和host.这两个比较简单,也不太常用.安装 ...

  8. PHP函数:debug_backtrace

    debug_backtrace()  - 产生一条 PHP 的回溯跟踪(backtrace). 说明: debug_backtrace ([ int $options = DEBUG_BACKTRAC ...

  9. Prometheus监控 Redis & Redis Cluster 说明

    说明 在前面的Prometheus + Grafana 部署说明之「安装」文章里,大致介绍说明了Prometheus和Grafana的一些安装使用,现在开始如何始部署Prometheus+Grafan ...

  10. Apache solr velocity模块 漏洞复现

    0x01 Solr简单介绍 Solr是建立在Apache Lucene ™之上的一个流行.快速.开放源代码的企业搜索平台. Solr具有高度的可靠性,可伸缩性和容错能力,可提供分布式索引,复制和负载平 ...