万字长文!Unix和Linux你不知道的那些历史(详解版)

来源|程序员小乐(ID:study_tech)
00前言
UNIX与Linux之间的关系是一个很有意思的话题 。 在目前主流的服务器端操作系统中 , UNIX诞生于20世纪60年代末 , Windows诞生于20世纪80年代中期 , Linux诞生于20世纪90年代初 , 可以说UNIX是操作系统中的"老大哥" , 后来的Windows和Linux都参考了UNIX 。
现代的Windows系统已经朝着“图形界面”的方向发展了 , 和UNIX系统有了巨大的差异 , 从表面上甚至看不出两者的关联 。
01正文
UNIX的坎坷历史
UNIX操作系统由肯?汤普森(KenThompson)和丹尼斯?里奇(DennisRitchie)发明 。 它的部分技术来源可追溯到从1965年开始的Multics工程计划 , 该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起 , 目标是开发一种交互式的、具有多道程序处理能力的分时操作系统 , 以取代当时广泛使用的批处理操作系统 。
上个世纪六十年代 , 那个计算机还没有很普及 , 只有少数人才能使用 , 而且当时的计算机系统都是批处理的 , 就是把一批任务一次性提交给计算机 , 然后就等待结果 。 并且中途不能和计算机交互 。 往往准备作业都需要花费很长时间 , 并且这个时候别人也不能用 , 导致了计算机资源的浪费 。
说明:分时操作系统使一台计算机可以同时为多个用户服务 , 连接计算机的终端用户交互式发出命令 , 操作系统采用时间片轮转的方式处理用户的服务请求 , 并在终端上显示结果(操作系统将CPU的时间划分成若干个片段 , 称为时间片) 。 操作系统以时间片为单位 , 轮流为每个终端用户服务 , 每次服务一个时间片 。
但是由于Multics项目太复杂 , 加上其他原因导致了项目进展缓慢 , 1969年贝尔实验室觉得这个项目可能不会成功 , 于是就退出不玩了 。
贝尔实验室退出Multics计划之后 , Bell实验室的那批科学家就没有什么事做了 , 其中一个叫做KenThompson的人在研发Multics的时候 , 写了一个叫做太空大战(SpaceTravel)的游戏 , 大概就是一个很简单的打飞机的游戏 , 但是这个游戏运行在Multics上 。 当Bell退出了Multics后 , Thompson就没有了Multics的使用环境了 , 为了能够继续游戏 , 于是他花了一个月的时间写了一个小型的操作系统 , 用于运行SpaceTravel , 当完成之后 , Thompson怀着激动的心情把身边同事叫过来 , 让他们来玩他的游戏 , 大家玩过之后纷纷表示对他的游戏不感兴趣 , 但是对他的系统很感兴趣 。 这个时候的操作系统还是用汇编语言写 。
因为MULTICS是“MultiplexedinformtionandComputingService”的缩写(多路信息计算系统) , 于是他们命名这个系统为:“UNiplexedInformationandComputingService” , 缩写为“UNICS”(没路信息计算系统 , 与Multics相反) 。 后来大家取其谐音 , 就称其为“UNIX”了 。
这个时候已经是1970年了 , 于是就将1970年定为Unix元年 , 因此UTC时间就是从这一年开始计算的 。
后来Unix这个小操作系统就在Bell实验室内部流行开 , 并经过不断地改良最终在1974年7月Unix发展到第5个版本 , Bell实验室公开了Unix , 结果引起了学术界的广泛兴趣并对其源码索取 。 所以 , Unix第五个版本就以“仅用于教育目的”的协议 , 提供给各大学作为教学之用 , 成为当时操作系统课程的范例教材 。 各大学公司开始通过Unix源码对Unix进行了各种各样的改进和拓展 。 1978年学术界的老大伯克利大学 , 推出了一份以第六版为基础 , 加上一些改进和新功能而成的Unix 。 并命名为BSD(BerkeleySoftwareDistribution伯克利分发版) , 开创了Unix的另一分支:BSD系列 , 这就是著名的“1BSD(1stBerkeleySoftwareDistribution)” 。 于是乎Unix就有了两个分支 , 一个就是BSD系列的分支 , 一个就是Bell本身发放的分支 , 当时因为Bell属于AT&T , AT&T受到了美国《谢尔曼反托拉斯法》的影响 , 不能销售除了电话机电报机等之外的商品 , 后来AT&T分解 , Bell可以卖Unix了 , Unix走向了商业化 , 如果想继续使用就需要购买授权 , 一份授权4万美元 。
C语言的诞生和unix的发展密不可分 。 前面提及1969—1970年 , 美国贝尔实验室的KenThompson和DennisRitchie等使用汇编语言编写了第一个版本的UNIX操作系统 。
由于UNIX操作系统良好的性能 , 在其发布初期 , 就得到迅速的推广和应用 。 1973年 , KenThompson和DennisRitchie在做系统内核移植开发时 , 感觉使用汇编语言很难实现 。 后来决定使用一种称为BCPL(BasicCombinedProgrammingLanguage)的语言进行开发 , 在开发过程中 , 他们在BCPL的基础上做了进一步的改进 , 推出了B语言(取BCPL第一个字母) 。
后来发现使用B语言开发的UNIX内核 , 还是无法达到他们的预期要求 , 于是在B语言的基础上 , 做了进一步的改进 , 设计出了具有丰富的数据类型 , 并支持大量运算符的编程语言 。 改进后的语言较B语言有质的飞跃 , 取名为C语言 , 并使用C语言成功重新编写了UNIX内核 。
至此 , 使用C语言编写内核的UNIX版本已相当稳定 , 且具有良好的可移植性 , 为UNIX的进一步推广和普及奠定了坚实的基础 , 也展现了C语言与UNIX的完美结合及C语言在编写系统软件时得天独厚的优势 。
到了1973年 , UNIX系统的绝大部分源代码都用C语言进行了重写 , 这是UNIX的第三版本 , 这为提高UNIX系统的可移植性打下了基础(之前操作系统多采用汇编语言 , 对硬件依赖性强) , 也为提高系统软件的开发效率创造了条件 。 可以说 , UNIX系统与C语言是一对孪生兄弟 , 具有密不可分的关系 。
20世纪70年代初 , 计算机界还有一项伟大的发明——TCP/IP协议 , 这是当年美国国防部接手ARPAnet后所开发的网络协议 。 美国国防部把TCP/IP协议与UNIX系统、C语言捆绑在一起 , 由AT&T发行给美国各个大学非商业的许可证 , 这为UNIX系统、C语言、TCP/IP协议的发展拉开了序幕 , 它们分别在操作系统、编程语言、网络协议这三个领域影响至今 。 肯?汤普森和丹尼斯?里奇因在计算机领域做出的杰出贡献 , 于1983年获得了计算机科学的最高奖——图灵奖 。
随后出现了各种版本的UNIX系统 , 目前常见的有SunSolaris、FreeBSD、IBMAIX、HP-UX等 。
AT&T和BSD的纠纷
前面提及 , 1978年 , 学术界的老大柏克利大学(UCBerkeley) , 推出了一份以第六版为基础 , 加上一些改进和新功能而成的Unix 。
1979年 , AT&T推出第七版SystemV , 支持x86架构 。 但同时特别声明“不可对学生提供源码” 。
虽然AT&T的UnixSystemV也是非常优秀的Unix版本 , 但是BSDUnix在Unix领域内的影响更大 。 AT&T的Unix系统实验室一直关注着BSD的发展 , 在1992年 , Unix系统实验室指控BSDI──一家发行商业BSDUnix的公司 , 违反了AT&T的许可权 , 发布自己的Unix版本 , 并进一步指控伯克利计算机系统研究组泄漏了Unix的商业机密(此时的4.3BSD中来自AT&TUnix的代码已经不足10%) 。
这个官司影响了很多Unix厂商 , 使他们不得不从BSDUnix转向UnixSystemV,以避免法律问题 。 以至于当今大多数商业Unix版本都是基于UnixSystemV的 。
由于最后判决悬而未决 , 这桩法律诉讼将BSD后裔的开发 , 特别是自由软件 , 延迟了两年 , 这导致没有法律问题的Linux内核获得了极大的支持 。 Linux跟386BSD的开发几乎同时起步 , Linus说 , 当时如果有自由的基于386的Unix-like操作系统 , 他就可能不会创造Linux 。 尽管无法预料这给以后的软件业究竟造成了什么样的影响 , 但有一点可以肯定 , Linux更加丰富了这块土壤 。
这场官司一直打到AT&T将自己的Unix系统实验室卖掉 , 这个时候已经是1993年 , 新接手的Novell公司采取了一种比较开明的做法 , 允许BSDI自由发布自己的BSD , 但是前提是必须将来自于AT&T的代码完全删除 , 于是诞生了4.4BSDLite版 , 由于这个版本不存在法律问题 , 4.4BSDLite成为了现代BSD系统的基础版本 。
由于BSD系统已经十分成熟 , 作为对操作系统进行研究的目标已经达到 , 伯克利计算机系统研究组(CSRG)在发布了4.4BSD-lite2之后就解散了 , 小组的科研人员有些进入了Unix商业公司 , 有些继续进行其他计算机领域的研究 。 此时 , 严格意义上的UnixSystemV和BSDUnix都不复存在了 , 存在的只是他们的各种后续版本 。 此后 , BSDUnix走上了复兴的道路 。 BSD的开发也走向了几个不同的方向 , 并最终导致了FreeBSD、OpenBSD和NetBSD的出现 。
Unix的版权曾经为AT&T所有 , 之后Novell拥有了Unix , 再之后Novell又将版权出售给了SCO(这一事实双方尚存在争议) 。 有很多大公司在取得了Unix的授权之后 , 开发了自己的Unix产品 。
开源领袖--斯托曼
AT&T不再开发源码的这种商业态度 , 让当时许许多的Unix的爱好者和软件开发者们感到相当的痛心和忧虑 , 他们认为商业化的种种限制并不利于产生的发展 , 相反还能导制产品出现诸多的问题 。 随着商业化Unix的版本的种种限制和诸多问题 , 引起了大众的不满和反对 。 于是 , 大家开始有组织地结成“反叛联盟”以此对抗欺行罢市的AT&T等商业化行为 。
另一方面 , 关于“大教堂”(集权、封闭、受控、保密)和“集市”(分权、公开、精细的同僚复审)两种开发模式的对比成为了新思潮的中心思想 。 这个新思潮对IT业产生了非常深远影响 。 为整个计算机世界带来了革命性的价值观 。
此时 , 一个名叫RichardStallman的领袖出现了 , 他认为Unix是一个相当好的操作系统 , 如果大家都能够将自己所学贡献出来 , 那么这个系统将会更加的优异!他倡导的OpenSource的概念 , 就是针对Unix这一事实反对实验室里的产品商业化私有化 。
尽管Stallman既不是、也从来没有成为一个Unix程序员 , 但在后1980的大环境下 , 实现一个仿Unix操作系统成了他追求的明确战略目标 。 RichardStallman早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客 , 他们对代码共享的使命感甚至比那些有更多Unix背景的人强烈 。
为了这个理想 , RichardStallman于1984年创业了GNU , 计划开发一套与Unix相互兼容的的软件 。 1985年RichardStallman又创立了自由软件基金会(FreeSoftwareFoundation)来为GNU计划提供技术、法律以及财政支持 。
尽管GNU计划大部分时候是由个人自愿无偿贡献 , 但FSF有时还是会聘请程序员帮助编写 。 当GNU计划开始逐渐获得成功时 , 一些商业公司开始介入开发和技术支持 。 当中最著名的就是之后被RedHat兼并的CygnusSolutions 。
GNU组织的建立 , 延续了当年Unix刚出现时的情形 , 并为这种情形建立了可靠的法律和财务保障 。 GNU工程十几年以来 , 已经成为一个对软件开发主要的影响力量 , 创造了无数的重要的工具 。 例如:强健的编译器 , 有力的文本编辑器 , 甚至一个全功能的操作系统 。 从那时开始 , 许多程序员聚集起来开始开发一个自由的、高质量、易理解的软件 , 让这使得Unix社区生机勃勃 , 一派繁荣景象 。
自90年代发起这个计划以来 , GNU开始大量的产生或收集各种系统所必备的组件 , 像是——函数库(libraries)、编译器(compilers)、调试工具(debugs)、文本编辑器(texteditors)、网站服务器(webserver) , 以及一个Unix的使用者接口(Unixshell)等等 , 等等 。
但由于种种原因 , GNU一直没有开发操作系统的kernel 。 正当RichardStallman在为操作系统内核伤脑筋的时候 , Linux出现了 。 正是因为Unix的不开源路线促成了Linux的诞生 , LinusTorvalids在1991年创造了Linux–这并不是一个简单的Unix克隆版本 , 只不过它长得像Unix(系统结构和功能上) , 该内核和GNU套件整合后形成了如今各式各样的Linux版本 。
GNU
GNU计划 , 又称革奴计划 , 是由RichardStallman在1983年9月27日公开发起的 。 它的目标是创建一套完全自由的操作系统 。 RichardStallman最早是在net.unix-wizards新闻组上公布该消息 , 并附带一份《GNU宣言》等解释为何发起该计划的文章 , 其中一个理由就是要“重现当年软件界合作互助的团结精神” 。
为保证GNU软件可以自由地“使用、复制、修改和发布” , 所有GNU软件都在一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款 , GNU通用公共许可证(GNUGeneralPublicLicense , GPL) 。 即“反版权”(或称Copyleft)概念 。
简介GNU是“GNU'sNotUnix”的递归缩写 。 Stallman宣布GNU应当发音为Guh-NOO以避免与new这个单词混淆(注:Gnu在英文中原意为非洲牛羚 , 发音与new相同) 。 UNIX是一种广泛使用的商业操作系统的名称 。 由于GNU将要实现UNIX系统的接口标准 , 因此GNU计划可以分别开发不同的操作系统部件 。 GNU计划采用了部分当时已经可自由使用的软件 , 例如TeX排版系统和XWindow视窗系统等 。 不过GNU计划也开发了大批其他的自由软件 。
历史1985年RichardStallman又创立了自由软件基金会(FreeSoftwareFoundation)来为GNU计划提供技术、法律以及财政支持 。 尽管GNU计划大部分时候是由个人自愿无偿贡献 , 但FSF有时还是会聘请程序员帮助编写 。 当GNU计划开始逐渐获得成功时 , 一些商业公司开始介入开发和技术支持 。 当中最著名的就是之后被RedHat兼并的CygnusSolutions 。
到了1990年 , GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs 。 GCC(GNUCompilerCollection , GNU编译器集合) , 是一套由GNU开发的编程语言编译器 。 以及大部分UNIX系统的程序库和工具 。 唯一依然没有完成的重要组件就是操作系统的内核(称为HURD) 。
1991年LinusTorvalds编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布 。 Linux之后在网上广泛流传 , 许多程序员参与了开发与修改 。 1992年Linux与其他GNU软件结合 , 完全自由的操作系统正式诞生 。 该操作系统往往被称为“GNU/Linux”或简称Linux 。 (尽管如此GNU计划自己的内核Hurd依然在开发中 , 目前已经发布Beta版本 。 )
许多UNIX系统上也安装了GNU软件 , 因为GNU软件的质量比之前UNIX的软件还要好 。 GNU工具还被广泛地移植到Windows和MacOS上 。
GNU包含3个协议条款 ,
GPL:GNU通用公共许可证(GNUGeneralPublicLicense)
LGPL:GNU较宽松公共许可证(GNULesserGeneralPublicLicense),) , 旧称GNULibraryGeneralPublicLicense(GNU库通用公共许可证);
GFDL:GNU自由文档许可证(GNUFreeDocumentationLicense)的缩写形式 。
这里指的自由 , 并不是价格免费 , 这和价格无关而是使用软件对所有的用户来说是自由的 。 GPL通过如下途径实现这一目标:
1.它要求软件以源代码的形式发布 , 并规定任何用户能够以源代码的形式将软件复制或发布给别的用户 。
2.如果用户的软件使用了受GPL保护的任何软件的一部分 , 那么该软件就继承了GPL软件 , 并因此而成为GPL软件 , 也就是说必须随应用程序一起发布源代码 。
3.GPL并不排斥对自由软件进行商业性质的包装和发行 , 也不限制在自由软件的基础上打包发行其他非自由软件 。
由于GPL很难被商业软件所应用 , 它要求调用它的库的代码也得GPL , 全部开放 , 并且一同发布 , 不能直接连接 。 所以后来GNU推出了LGPL许可证
在GPL与LGPL许可证保护下发布源代码的结果很相似 , 对旧代码所做的任何修改对于想知道这些代码的人必须是公开的 , 唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接 , LGPL允许实体连接私人代码到开放源代码 , 并可以在任何形式下发布这些合成的二进制代码 。 只有这些代码是动态连接的就没有限制 。 (使用动态链接时 , 即使是程序在运行中调用函数库中的函数时 , 应用程序本身和函数库也是不同的实体)
Solaris和FreeBSD
我们重点介绍一下Solaris , 它是UNIX系统的一个重要分支 。 Solaris除可以运行在SPARCCPU平台上外 , 还可以运行在x86CPU平台上 。 在服务器市场上 , Sun的硬件平台具有高可用性和高可靠性 , 是市场上处于支配地位的UNIX系统 。
对于难以接触到SunSPARC架构计算机的用户来说 , 可以通过使用Solarisx86来体验世界知名大厂的商业UNIX风采 。 当然 , Solarisx86也可以用于实际生产应用的服务器 , 在遵守Sun的有关许可条款的情况下 , Solarisx86可以免费用于学习研究或商业应用 。
FreeBSD源于美国加利福尼亚大学伯克利分校开发的UNIX版本 , 它由来自世界各地的志愿者开发和维护 , 为不同架构的计算机系统提供了不同程度的支持 。 FreeBSD在BSD许可协议下发布 , 允许任何人在保留版权和许可协议信息的前提下随意使用和发行 , 并不限制将FreeBSD的代码在另一协议下发行 , 因此商业公司可以自由地将FreeBSD代码融入它们的产品中 。 苹果公司的OSX就是基于FreeBSD的操作系统 。
FreeBSD与Linux的用户群有相当一部分是重合的 , 二者支持的硬件环境也比较一致 , 所采用的软件也比较类似 。 FreeBSD的最大特点就是稳定和高效 , 是作为服务器操作系统的不错选择;但其对硬件的支持没有Linux完备 , 所以并不适合作为桌面系统 。
其他UNIX版本因应用范围相对有限 , 在此不做过多介绍 。
Linux的那些往事
在Unix代码不开源之后 , 有昂贵的授权费用 , 很多大学不得不停止对其研究 , 老师导致上课也不知道讲什么了 。 在1987年荷兰有个大学教授安德鲁写了一个Minix , 类似于Unix , 专用于教学 。 当Minix流传开来之后 , 世界各地的黑客们纷纷开始使用并改进 , 希望把改进的东西合并到Minix中 , 但是安德鲁觉得他的系统是用于教学的 , 不能破坏纯净性 , 于是拒绝了 。
1990年 , LinusTorvalds还是芬兰赫尔辛基大学的一名学生 , 最初是用汇编语言写了一个在80386保护模式下处理多任务切换的程序 , 后来从Minix(AndyTanenbaum教授所写的很小的Unix操作系统 , 主要用于操作系统教学)得到灵感 , 进一步产生了自认为狂妄的想法——写一个比Minix更好的Minix , 于是开始写了一些硬件的设备驱动程序 , 一个小的文件系统 。 这样0.0.1版本的Linux就出来了 , 但是它只具有操作系统内核的勉强的雏形 , 甚至不能运行 , 你必须在有Minix的机器上编译以后才能玩 。 这时候Linus已经完全着迷而不想停止 , 决定踢开Minix , 于是在1991年10月5号发布Linux0.0.2版本 , 在这个版本中已经可以运行bash和gcc 。
从一开始 , Linus就决定自由扩散Linux , 包括原代码 , 随即Linux引起黑客们(hacker)的注意 , 通过计算机网络加入了Linux的内核开发 。 Linux倾向于成为一个黑客的系统——直到今天 , 在Linux社区里内核的开发被认为是真正的编程 。 由于一批高水平黑客的加入 , 使Linux发展迅猛 , 几乎一两个礼拜就有新版或修正版的出现 , 到1993年底94年初 , Linux1.0终于诞生了!Linux1.0已经是一个功能完备的操作系统 , 而且内核写得紧凑高效 , 可以充分发挥硬件的性能 , 在4M内存的80386机器上也表现得非常好 , 至今人们还在津津乐道 。
关于LinuxLogo的由来是一个很有意思的话题 , 它是一只企鹅 。
为什么选择企鹅 , 而不是选择狮子、老虎或者小白兔?有人说因为李纳斯?托瓦兹是芬兰人 , 所以选择企鹅 , 有人说因为其他动物图案都被用光了 , 李纳斯?托瓦兹只好选择企鹅 。 还有一种说法是李纳斯曾经被企鹅咬过手指 。
我更愿意相信以下说法 , 企鹅是南极洲的标志性动物 , 根据国际公约 , 南极洲为全人类共同所有 , 不属于世界上的任何国家 , 可国家都无权将南极洲纳入其版图 。 Linux选择企鹅图案作为Logo , 其含义是:开放源代码的Linux为全人类共同所有 , 可公司无权将其私有 。
严格来讲 , Linux这个词本身只表示Linux内核 , 但在实际上人们已经习惯了用Linux来形容整个基于Linux内核 , 并且使用GNU工程各种工具和应用程序的操作系统(也被称为GNU/Linux) 。 基于这些组件的Linux软件被称为Linux发行版 。 一般来讲 , 一个Linux发行套件包含大量的软件 , 比如软件开发工具 , 数据库 , Web服务器(例如Apache) , XWindow , 桌面环境(比如GNOME和KDE) , 办公套件(比如OpenOffice.org) , 等等 。
1991至1995年间 , Linux从概念型的0.1版本内核原型 , 发展成为能够在性能和特性上均堪媲美专有Unix的操作系统 , 并且在连续正常工作时间等重要统计数据上打败了这些Unix中的绝大部分 。 1995年 , Linux找到了自己的杀手级应用——开源的web服务器Apache 。 就像Linux , Apache出众地稳定和高效 。 很快 , 运行Apache的Linux机器成了全球ISP平台的首选 。 约60%的网站选用Apache , 轻松击败了另两个主要的专有型竞争对手 。 今天的LAMP(Linux , Apache , MySQL , PHP)已经成为了架构Web服务器的主要首选 。
李纳斯?托瓦兹无疑是这个世界上最伟大的程序员之一 , 何况 , 他还搞出了全世界最大的程序员交友社区GitHub(开源代码库及版本控制系统) 。
现如今的Linux不但可以装在几乎所有的主流服务器上 , 当然也包括桌面的X86系统中 。 其还常常被用于嵌入式系统 , 机顶盒、手机、交换机、游戏机、PDA、网络交换机、路由器、等等 , 都是因为Linux那精彩的内核 。
Linux的出现 , 不仅仅给世界带来了一个免费的操作系统 , 也不仅仅是对Unix自由、共享的文化的延续 , 它的出现带给了计算机世界自Unix、GNU以来更为成熟的思想和文化 。
UNIX与Linux的亲密关系
二者的关系 , 不是大哥和小弟 , "UNIX是Linux的父亲"这个说法更怡当 。 之所以要介绍它们的关系 , 是因为要告诉读者 , 在学习的时候 , 其实Linux与UNIX有很多的共通之处 , 简单地说 , 如果你已经熟练掌握了Linux , 那么再上手使用UNIX会非常容易 。
二者也有两个大的区别:
1、UNIX系统大多是与硬件配套的 , 也就是说 , 大多数UNIX系统如AIX、HP-UX等是无法安装在x86服务器和个人计算机上的 , 而Linux则可以运行在多种硬件平台上;2、UNIX是商业软件 , 而Linux是开源软件 , 是免费、公开源代码的 。
Linux受至旷大计算机爱好者的喜爱 , 主要原因也有两个:它属于开源软件 , 用户不用支付可费用就可以获得它和它的源代码 , 并且可以根据自己的需要对它进行必要的修改 , 无偿使用 , 无约束地继续传播;它具有UNIX的全部功能 , 任何使用UNIX操作系统或想要学习UNIX操作系统的人都可以从Linux中获益 。
开源软件是不同于商业软件的一种模式 , 从字面上理解 , 就是开放源代码 , 大家不用担心里面会搞什么猫腻 , 这会带来软件的革新和安全 。
另外 , 开源其实并不等同于免费 , 而是一种新的软件盈利模式 。 目前很多软件都是开源软件 , 对计算机行业与互联网影响深远 。
近年来 , Linux已经青出于蓝而胜于蓝 , 以超常的速度发展 , 从一个丑小鸭变成了一个拥有庞大用户群的真正优秀的、值得信赖的操作系统 。 历史的车轮让Linux成为UNIX最优秀的传承者 。
总结一下Linux和UNIX的关系/区别Linux是一个类似Unix的操作系统 , Unix要早于Linux , Linux的初衷就是要替代UNIX , 并在功能和用户体验上进行优化 , 所以Linux模仿了UNIX(但并没有抄袭UNIX的源码) , 使得Linux在外观和交互上与UNIX非常类似 。
说模仿可能会被人喷 , 你也可以说微创新或者改进 。 相比于UNIX , Linux最大的创新是开源免费 , 这是它能够蓬勃发展的最重要原因;而目前的UNIX大部分都是收费的 , 小公司和个人都难以承受 。
正是由于Linux和UNIX有着千丝万缕的联系 , 所以人们把Linux叫做“类UNIX系统” , 下节我们将会着重讲解 。
UNIX/Linux系统可以粗糙地抽象为3个层次(所谓粗糙 , 就是不够细致、精准 , 但是便于初学者抓住重点理解) , 如图3所示 。 底层是UNIX/Linux操作系统 , 即系统内核(Kernel);中间层是Shell层 , 即命令解释层;高层则是应用层 。
UNIX/Linux系统结掏层次概要
1)内核层内核层是UNIX/Linux系统的核心和基础 , 它直接附着在硬件平台之上 , 控制和管理系统内各种资源(硬件资源和软件资源) , 有效地组织进程的运行 , 从而扩展硬件的功能 , 提高资源的利用效率 , 为用户提供方便、高效、安全、可靠的应用环境 。
2)Shell层Shell层是与用户直接交互的界面 。 用户可以在提示符下输入命令行 , 由Shell解释执行并输出相应结果或者有关信息 , 所以我们也把Shell称作命令解释器 , 利用系统提供的丰富命令可以快捷而简便地完成许多工作 。
3)应用层应用层提供基于XWindow协议的图形环境 。 XWindow协议定义了一个系统所必须具备的功能(就如同TCP/IP是一个协议 , 定义软件所应具备的功能) , 可系统能满足此协议及符合X协会其他的规范 , 便可称为XWindow 。
现在大多数的UNIX系统上(包括Solaris、HP-UX、AIX等)都可以运行CDE(CommonDesktopEnvironment , 通用桌面环境 , 是运行于UNIX的商业桌面环境)的用户界面;而在Linux上广泛应用的有Gnome(见图
4)KDE等 。
XWindow与微软的Windows图形环境有很大的区别:UNIX/Linux系统与XWindow没有必然捆绑的关系 , 也就是说 , UNIX/Linux可以安装XWindow , 也可以不安装;而微软的Windows图形环境与内核捆绑密切 。 UNIX/Linux系统不依赖图形环境 , 依然可以通过命令行完成100%的功能 , 而且因为不使用图形环境还会节省大量的系统资源 。
作为服务器部署 , 绝大多数Linux并不安装或并不启用图形环境.
Linux的发行版本
我们知道Linux或者Unix是一个操作系统 , 1991年的LinusTorvalds公布的是Linux的内核(kernel) 。 但是要注意的是 , 公布的是源码 , 并不是编译好的直接可安装的操作系统 , 我们如何安装一个操作系统呢?很简单啊 , 就是先下载一份源码 , 然后进行编译安装 , 但是编译的时候程序需要运行在操作系统上啊 , 操作系统呢?还没有编译呢 。 于是就陷入了一个死循环中 , 就是我们要安装操作系统 , 就需要编译 , 编译的时候需要操作系统 , 这样就是鸡生蛋 , 蛋生鸡 。
这里就需要引入交叉编译了 , 具体做法是假设我们要在电脑上安装Linux , 我们把A的硬盘拆下来 , 放到已经安装了操作系统的电脑B上 , 然后编译 , 将编译好的操作系统放到硬盘上 , 再把硬盘装回去 , 开机启动 , 这就是交叉编译安装系统 。
这得有多难啊 , 入门难度实在太高了 , 所以我们迫切需要一种简单的方式来安装 。 于是就出现了这么一种公司 , 他们将已经公开好的Kernel(内核)再加上一些开源的周边软件收集起来编译成二级制文件放到网上供别人使用 , 其中RedHat(红帽)就是其中著名的一家 。 我们知道Linux是遵循GPL协议的 , 也就是公开免费的 , 那么他们怎么盈利呢?既然不能卖软件 , 那么就卖服务呗 , 比如说 , 发现了Linux漏洞 , 然后RedHat修复 , 如果你买了我们的服务 , 我们就将补丁程序给你 , 并指导你安装 , 所有问题都帮你解决 。
世界上总是不缺好事者 , RedHat既然可以这么做 , 为什么就不能有好心人免费做呢?是的 , 有这样一个社区 , 他们把RedHat的源码拿过来 , 然后编译成操作系统放出去 , 这就是CentOS , 就是社区版的RedHat , 所以基本RedHat的补丁包出来一个月之后 , CentOS就出现对应的补丁包了 。 这对于RedHat是好事还是坏事呢?这恐怕只有当事人知道了 , 不过在2014年年初传来消息 , RedHat收编了CentOS的团队 。 就像MSDNITELLYOU上面都是微软的正版软件 , 可以随便下载 , 但是这不也是为微软做了免费宣传吗 。
当别人说Linux的版本时 , 一般来说有两个版本 , 一个是内核的版本 , 一个是发行的版本 。 例如登录到我的ubuntu终端执行命令uname-a:
root@AI-Machine:~#uname-aLinuxAI-Machine4.13.0-36-generic#40~16.04.1-UbuntuSMPFriFeb1623:26:51UTC2018i686i686i686GNU/Linuxroot@AI-Machine:~#4.13.0是内核版本 , 16.04是指ubunut发行版本 。
【万字长文!Unix和Linux你不知道的那些历史(详解版)】现在常见的linux操作系统有:ubuntu、红帽、深度、Centos 。


    推荐阅读