编辑:葡萄媛 | 排版:葡萄媛
转载请在后台输入 授权
引言
Linux的核心是1991年Linux Torvalds写出来的,为何他能够写出Linux操作系统?为什么Linux经久不衰,发展如此迅速?为什么Linux是免费的并且可以自由学习?为什么Linux有那么多的distribution?
这些问题,我们一起从Linux的发展历史中寻找答案吧~
一、 Linux 发展历史
早在Linux出现之前的二十年(1970年代),就有一个相当稳定而成熟的操作系统存在,就是Linux的老大哥Unix。
1.1969年以前:Bell,MIT与GE的Multics系统
早期的计算机很稀有,主机少,用户众多,1960年代初,麻省理工开发“兼容分时系统(CTSS),多用户通过终端机接入主机,分时使用主机CPU资源进行运算工作,当时先进的主机也不过只能连接30个的终端机。
为了把主机的资源提供给更多使用者来利用,贝尔实验室(Bell)、麻省理工学院(MIT)和通用电气(GE)共同发起Multics计划。到1969年前后,计划进度落后,资源短缺,在认为Multics几乎不可能成功之后,Bell实验室退出了该计划的研究工作。不过原本参与Multics计划Bell实验室的Ken Thompson却从该计划中获得一些点子。
2.1969年,Ken Thompson的Unics
Thompson因为自己需求,希望开发一个操作系统移植到“太空游戏”的游戏中,四个星期时间,他将Multics复杂系统进行简化,用汇编语言写出了一套核心程序,以及一个小小的文件系统,这就是Unix的原型,当时称为Unics。
3.1973年,Unix正式诞生
由于Unics是以汇编语言写成的,当时计算机架构并不统一,所以每次要安装到不同的机器都需要重新编写汇编语言。
Thompson和Ritchie合作试图将Unics改成高级程序语言。当时的流行的高级程序语言是B语言,但是由B语言编译出来的核心性能不是很好。Ritchie对B语言进行改写成C语言(没错,就是你所知道的那个大名鼎鼎的C语言),再用C语言重新改写和编译Unics的核心,发行出Unix的正式版本。
相对于汇编语言对硬件的高度依赖,高阶C语言与硬件的相关性就没有那么大,只要取得Unix的原始码,并且针对大型主机的特性进行修改,就可以将Unix移植到不同的主机上。
4.1977年,Unix分支BSD诞生
从1973年开始,Unix开始与高校合作开发,最重要接触的是与加州伯克利大学。加州伯克利大学的Bill Joy在取得了Unix的核心源码后,着手修改成适合自己机器的版本,同时增加了很多工具软件与编译程序,命名为BSD。Bill Joy是后来Sun公司的创始人。
5.1979年,System V架构与版权宣告
由于Unix高度的可移植性和强大的效能,加上Open Source没有版权的纷争,很多公司开始开发与自己主机搭配的Unix操作系统,如AT&T(贝尔隶属于AT&T)的System V、IBM的AIX等。由于早期的硬件公司还没有所谓的“协议”概念,所以每家公司推出的Unix在架构上大同小异,但是仅能支持自身的硬件。
Unix强调的是多人多任务的环境,但早期的286个人计算机架构下的CPU还不能达到多任务的作业,因此并没有人对移植Unix到x86的个人计算机上有兴趣。直到AT&T推出System V的第七版Unix才可以支持x86架构的个人计算机系统。
tips:目前被称为纯种Unix指的就是System V以及BSD。
1979年出现了一段小插曲,AT&T在推出System V的第七个版本的Unix之后,出于商业的考虑,想将Unix的版权收回,因此第七版的Unix中提出“不可对学生提供原始码”的严格限制。
6.1984年 x86的Minux操作系统与 GNU计划、FSF基金
1979年的版权声明中影响最大的是从事Unix核心原始码的相关工作的教授,其中Andrew Tanenbaum教授就是其中之一。1984年Tanenbaum开始编写Minux(Mini Unix)操作系统,并于1986年完成。
Richard Mathew Stallman,从1984年开始GNU计划,目的是建立一个自由、开放的Unix操作系统(Free Unix),但是建立操作系统谈何容易,所以最开始的时候Stallman先写可以在Unix上面运行的免费GNU软件。
Stallman真的很聪明,在GNU计划渐渐打开知名度,他注意到GNU的每个软件的受众不过是一小群人,那什么是大家都需要的软件呢?答案是 将软件编译称为二进制文件的“编译程序”,于是便诞生了现在依然相当有名的C语言编译程序GNU C Compiler(gcc)。后来Stallman还撰写了GNU C library和BASH shell,并成立自由软件基金会(FSF)。
GNU通用公共许可证:
为了避免GNU所开发的自由软件被其他人所利用转成专利软件,Stallman与律师草拟了有名的通用公共许可证GPL,并称为“CopyLeft",相对于专利软件”CopyRight"。
7.1991年,芬兰大学生Linus Torvalds
1991年,芬兰赫尔辛基大学的Linus Torvalds宣称他以bash、gcc等GNU工具写了可以在Intel 386上运行的核心程序。
二、 Linux的发展
1.Torvalds的Linux发展
1988年,Torvalds进入赫尔辛基大学,当时学校中只有一部最新的Unix系统,同时仅提供16个终端机(Terminal),早期的计算机仅有主机具有运算功能,terminal仅负责Input/Output而已。光等待Unix就很耗时,这无法满足Torvalds的需求,于是Torvalds开始自己搞一部Unix来玩~
于是Torvalds购买了多任务处理较好的Intel 386个人计算机,安装类似Unix,并与Unix兼容的Minux操作系统。虽然Minux很好,但是Minux的作者Tanenbaum教授并不愿意加强功能,于是Torvalds开始对Minux进行改写。
GNU计划提供的bash工作环境软件和gcc编译程序等自由软件,让Torvalds可以顺利撰写程序并进行编译,最终写出了他需要的核心程序,并可以在386上面顺利跑起来,同时在BBS上贴了一则消息,希望获得大家的一些修改意见,并将核心程序放在网络上提供大家下载。
有趣的是,由于Torvals放置核心的FTP网站目录为 Linux,所以大家便称这个核心为Linux。
为了让Linux能够兼容Unix,Torvals参考标准的POSIX规范来修改Linux。
POSIX(Protable Operating System Interface,可携式操作系统接口),IEEE发布的一项标准,用于规范核心和应用程序之间的接口,Linux的发展就是依据这个POSIX的标准规范,Unix上面的软件也是遵循这个规则来设计的,这样,Linux就可以做到与Unix的兼容共享互有的软件。
这个正确的决定让Linux起步的时候体质就比别人优良,这也使得很多企业从Unix过渡到Linux的成本更低。
2.Linux虚拟团队的产生
Trovals选择发展Linux的方式是相当务实的,首先,他将发布的Linux核心放置在FTP上面,等用户下载了这个核心并且安装后,如果发生问题,或者是由于特殊需求亟需某些硬件的驱动程序,那么使用者会主动反馈。
而Linux的核心是Open Source的,黑客志工们很容易能够跟随Linux的原本设计架构,并且写出兼容的驱动程序或者软件,由很多人如 Alan Cox、Stephen Tweedie等进行测试并将结果上传给Torvals ,由Torvals做最后加入核心的原始代码的选择和整并。因此Linux的进步很快~
用户要一个虚拟内存的程序,结果不到一个星期推出的新版Linux就实现了~It‘s amazing~
为了应对这种随时都有程序代码加入的状况,Linux逐渐发展成具有模块的功能,将某些功能独立于核心外,在需要的时候加载到核心中,这样,如果有新的硬件驱动程序或者其他协议的程序代码进来时,就可以模块化,增加了Linux核心的可维护性。
这些分布在世界各地素未谋面的虚拟团队在1994年终于完成Linux的核心正式版本 version1.0,1996年推出2.0版,2015年推出4.0版、2019年推出5.0版,发展是非常迅速的~
3.Linux版本
- 发展中版本(development):这种版本主要用在测试与发展新功能,通常这种版本仅有核心开发工程师会用,如果有新增的核心程序代码,会加到这种版本中,等众多工程师测试没有问题后,会加入下一版的稳定核心中。
- 稳定版本(stable):等到核心功能发展成熟后会加到这类版本中,主要用于家庭计算机以及企业版本中,重点在于提供使用者一个相对稳定的Linux作业环境平台。
- 释出版本:是在主、次版本架构不变的情况下,新增的功能累积到一定程度所释放出的核心版本。
旧的版本在新的版本出现之后,会有两种机制来处理:
- 结束开发(End Of Life,EOF),即程序代码已经结束,不会有继续维护的状态
- 维护版本(Longterm)
使用 uname -r 可以查看核心版本
4.Linux distribution
Linux就是一个操作系统最底层的核心及其提供的核心工具,他是GNU GPL授权模式。所以,任何人可以取得源码与可执行的核心程序,并且可以修改,此外,因为Linux参考POSIX设计规范,兼容Unix操作系统,故亦可称为Unix Like的一种。
Linux早期都是由黑客工程师所开发维护的,他们并没有考虑一般使用者的能力,为了让使用者能接触到Linux,于是很多商业公司或非盈利团队,就将Linux Kernel与可运行的软件整合,加上自己具有创意的工具程序,这个工具程序可以让用户以光盘/DVD或透过网络直接安装/管理Linux系统,这个【Kernel Softwares Tools 可完全安装程序】就是Linux distribution。
各大Linux Distributions的分类:
- 使用PRM方式安装的软件系统,如Red Hat,Fedora,SuSE
- 使用Debian的dpkg方式安装软件的系统,包括Debian,Ubuntu,B2D
社群版通常开发者会加入最新的软件,这些软件可能会有一些Bug存在,商业版则是经过一段时间的磨合后,才将稳定的软件放进去。
篇外:Linux吉祥物呆萌企鹅Tux的由来?
Trovals在小时候去动物园被企鹅咬了一口念念不忘,正式版本2.0推出时,大家要他想一个吉祥物,他在想不到什么动物的情况下,就将这个念念不忘的企鹅当成Linux的吉祥物啦~
作者:葡萄媛
编辑:葡萄媛
本文来自程序媛驿站,未经授权不得转载.