前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >书籍 | 《鸟哥的Linux私房菜》第二章

书籍 | 《鸟哥的Linux私房菜》第二章

作者头像
用户3946442
发布2022-04-11 18:28:52
1.2K0
发布2022-04-11 18:28:52
举报
文章被收录于专栏:程序媛驿站

编辑:葡萄媛 | 排版:葡萄媛

转载请在后台输入 授权

引言

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的吉祥物啦~

作者:葡萄媛

编辑:葡萄媛

本文来自程序媛驿站,未经授权不得转载.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序媛驿站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档