本文来源:正厚软件沙老师

Linux 的发展历史

1991年林纳斯.托瓦兹开发了Linux内核,宣布它的诞生。

1999年,IBM宣布于RedHat公司建立伙伴关系,以确保RedHat在IBN机器上的正确运行。

2001年,IBM决定投入10亿美元扩大Linux系统的运用,引得许多站点纷纷从windows操作系统转向Linux操作系统。

2002年,Linux企业化,内核开发者宣布新的Linux系统支持64位的计算机。

2003年,NEC宣布将在其手机中使用Linux操作系统,代表着Linux进军手机领域。

1、Multics

MULTiplexed Information and Computing System

1965年前后,由贝尔实验室(Bell),麻省理工学院(MIT)和通用电气公司(GE)共同发起了 Multics 的项目,Multics 项目的目的是想让大型主机可以同时提供300台以上的终端机连接使用的一套多用户(multi-user)、多任务(multi-processor)、多层次(multi-level)的操作系统。但到了1969年前后,项目进度落后,资金短缺,所以虽然项目在继续,但是Bell实验室退出了该项目的研究。

2、Unics

1969年,原本参与该项目的人员中,Ken Thompson因为自己的需要(想移植一套之前开发的能用于 Multics 系统的名为 " star travel " 的游戏),并总结之前失败的教训,用汇编语言开发出了一个小的文件系统,并戏称这套只能支持两个使用者的系统为 Unics(UNiplexed Information and Computing System)。该系统即是Unix的原型。

这个文件系统有两个 重要的概念:

● 所有的程序或系统装置都是 文件

● 不管构建编译器还是附属文件,写程序只有一个目标:有效地完成任务

3、Unix

1973年,因为 Thompson 写的操作系统太好用了,所以在 Bell 广为流传,但因为用的是汇编语言写的,因此对硬件的依赖性很强。后来Thompson与同事Ritchie合作将 Unics 用高级语言 B 语言重写,但最后发现效果不好,于是 Dennis Ritche 将 B 语言重写改成 C 语言,再用 C 语言重新改写 Unics 的内核,最后发行出 Unix 的正式版本。

4、Unix 的重要分支 —— BSD

1977年,因为 Unix 用C语言编写,所以可移植性较强。于是 Unix 与学术界合作开发,最重要的接触是 Berkeley 大学的合作。最后 Berkeley 的 Bill Joy 开发出一套系统,命名为 Berkeley SoftWare Distribution (BSD) 。Bill Joy 也是 Sun 公司的创始人。

BSD UNIX 最终版本即 BSD 4.3 ,它是混合开源的,即有开源部分也有闭源部分。由 BSD UNIX 衍生出最初的 SCO Xenix( Microsoft 及 SCO 共同开发)、Sun OS( SunMicroSystems 开发,即 Solaris 前身)、 NEXTSTEP( NeXT 开发)等 UNIX 版本,这些 UNIX 版本均闭源且受专利保护。

BSD UNIX 对现代操作系统的产生与发展产生了巨大的影响,并将开源闭源的争议摆在了人们面前。拥护闭源专利的代表 Bill Gates 领导创建了 Windows 等软件获得了巨大成功,并垄断了桌面以及服务器市场,从而极大丰富了软件产业。而捍卫开源共享的代表 Richard Stallman 开展自由软件运动,创建 GNU 工程,使自由软件精神深入人心,并促使了 GNU/Linux 等开源操作系统的普及。

5、版权纠纷

因为 Unix 的高度可移植性与强大的性能,且当时并没有版权的纠纷,所以很多商业公司都开发 Unix 。但 Bell 实验室所隶属的美国电话电报公司 AT&T 出于商业的考虑,将 Unix 的版权收回。

1990年, AT&T 起诉 BSD 侵犯了 Unix 的版权,这也是当代版权制度最恶劣的应用之一。

首先,起诉者其实与 Unix 毫无关系。这是 AT&T 经理层的决定,而不是开发者的决定。事实上,包括 Ken Thompson 在内的技术人员一直希望公司能够公开源码。他们完全有理由这么要求,因为 Unix 从来不是 AT&T 的业务重点,最初是个人项目,后来也没有占用公司太多资源。销售 Unix 的利润,在公司全部业务中,几乎可以忽略不计。何必为了一点点钱,去打击一个使许多人受益的产品呢?

其次,AT&T 根本不关心 Unix 的发展。它真正关心的是金钱和削弱对手。1994年,官司还没有结束,它就把 Unix 卖给了 Novell 公司,从此不再与 Unix 发生关系,官司也因此不了了之。既然这个产品可有可无,当初为什么要提起诉讼呢?

最后,所谓的侵权几乎是不存在的。因为 Novell 从 AT&T 买下 Unix 版权后,检查了 BSD 的源码,在18000个组成文件中删除了3个,并对其他文件做了一些小修改,然后 BSD 就重新获得了自由发布源码的许可。这意味着,至多只有千分之一的 BSD 代码有版权问题,但是就因为这千分之一的问题,导致百分之百的产品被迫中断,完全不符合比例原则。

所以,这场版权官司就是一家利益至上的公司,以微不足道的理由,为了一个自己根本不在乎的产品,悍然发动一场损人不利己的战争。

这场战争给 Unix 和 BSD 带来毁灭性的打击。

从八十年代中后期开始,AT&T 固执地捍卫 Unix 版权,完全不顾它的创造者和开发者的愿望,导致 Unix 丧失活力、一蹶不振,大量开发者无法参与,只好离开了这个平台。

而 BSD 在1992~1994年期间,开发处于停滞,错过了发展的黄金时机。官司结束以后,又不幸发生分裂,变成了 FreeBSD、NetBSD 和 OpenBSD 三个版本。这些原因导致 BSD 直到今天,都还在操作系统的竞争中处在落后地位。

如果换个时间,官司的损失也许还没这么大。偏偏90年代初是计算机工业决定性的年代,错过了那几年,从此就很难翻身了。因为从80年代末期开始,Intel 的 80x86 芯片有巨大的发展,性能快速上升,而成本快速下降,个人电脑的年代就要到来了。市场迫切需要能够运行在386芯片上的操作系统,但是 Unix 和 BSD 忙于打官司,都没有去做移植操作系统这件事。其他两个这样做的人,改变了人类历史。

一个是比尔·盖茨,他推出了Windows,占领了个人电脑市场,后来赚了几百亿美元。另一个是芬兰大学生 Linus Torvalds ,他想学习 Unix ,但是买不起工作站,就自己写了一个能在386上运行的 Linux 操作系统,现在全世界超过一半的网络服务器都在使用这个系统。Linus Torvalds 后来说,如果他早知道 BSD 没有法律问题,并且可以被移植到386,他就会加入 BSD 的开发,而不是自己写一个。

Novell 买到 Unix 版权后,也没在手里放多久,1995年又转手卖给了别人。从此,Unix 原始版本的开发正式结束。

以后的发展集中在两个方向,一个是各个商业公司自己修改的 Unix 版本,比如 Sun 的 Solaris ,HP 的 HP-UX ,IBM 的 AIX ,另一个则是开源项目的开发,比如 BSD 和 Linux 。

6、X86 架构的 Minix

1979年,AT&T 由于在商业上的考虑,以及在当时现实环境下的思考,于是想将 Unix 的版权收回去。因此, AT&T 在1979年发行的第七版 Unix 中,特别提到了不可对学生提供源码的严格限制。

1984年,一位大学教授 Andrew Tanenbaum 谭宁邦为了教学,在完全不看 Unix 核心源代码的情况下,开发出了能够兼容 Unix 的Minix ( mini unix )。

7、GNU 项目

Richard Mathew Stallman(史托曼)在1984年发起 GNU 项目,对于现今的自由软件风潮有不可磨灭的地位。GNU 项目的目的是创建一个自由、开放的Unix操作系统(Free Unix)。GNU 是GNU is not Unix的缩写。(无限递归定义)

为了避免GNU所开发的自由软件被其他人所利用而成为专利软件,所以拟定了有名的通用公共许可证(General public license,GPL)。

GNU 几个重要的软件:

Emacs

GNU C Complier(GCC)

GNU C Library (GLIBC)

Bash Shell

在谭宁邦教授撰写minix 时,同时进行的还有另外一件事。那就是 GNU 计划。GNU 计划是由Richard Mathew Stallman (史托曼) 发起的,这个计划对于现今的自由软件风潮,具有不可磨灭的作用。

Richard Mathew Stallman (生于1953年) 从小就很聪明。他在1971 年的时候,进入黑客圈中相当出名的人工智能实验室(AI Lab.),当时的黑客圈对于软件的着眼点几乎都是在"分享",所以并没有专利方面的困扰, 这个特色对于史托曼影响很大。不过,后来由于管理阶层的问题,导致实验室里优秀黑客离开该实验室, 并进入其他商业公司继续发展优秀的软件。但史托曼不服输,仍然持续在原来的实验室开发新的程序和软件。 后来,他发现自己一个人无法完成所有的工作,于是想要成立一个开放的团队来继续努力。

1983 年以后,因为实验室硬件的更换,使得史托曼无法继续以原有的硬件和操作系统继续自由程序的撰写。 而且他进一步发现到,过去他所使用的 Lisp 操作系统,是麻省理工学院的专利软件, 是无法共享的,这对于想要成立一个开放团体的史托曼是个阻碍。于是他便放弃了 Lisp 这个系统。 后来,他接触到 Unix 系统,并且发现,Unix 在理论上与实际上,都可以在不同的机器间进行移植。虽然 Unix 依旧是专利软件, 但至少 Unix 架构上还是比较开放的!于是他开始转而使用 Unix 系统。

1984 年,史托曼开始 GNU 计划, 这个计划的目的是:建立一个自由、开放的 Unix 操作系统(Free Unix) 。 但是建立一个操作系统并不容易。尤其是当时的 GNU 只有史托曼孤军奋战。

聪明的史托曼干脆反其道而行,既然操作系统太复杂,史托曼便先写可以在 Unix 上面运行的小程序。史托曼开始参考 Unix 上面现有的软件,并依据这些软件的作用开发出功能相同的软件,在开发期间史托曼绝不看其他软件的原始码, 以避免吃上官司。后来大家知道有免费的 GNU 软件,开始实际使用后发现与原有的专利软件相比差不了太多,于是便转而使用 GNU 软件, GNU 计划逐渐打开知名度。

虽然 GNU 计划渐渐打开知名度,但是能见度还是不够。这时史托曼又想:不论是什么软件, 都得要事先编译成为二进制文件 ( binary program ) 后才能够执行,如果能够写出一个不错的编译程序,那不就是大家都需要的软件了吗? 因此他便开始撰写 C 程序的编译程序,那就是现在相当有名的 GNU C Compiler (gcc) ,它是 linux 著名的编译器。在撰写过程中,他成立自由软件基金会 ( FSF, Free Software Foundation ) 。此外,他还撰写了更多可以被呼叫的 C 函式库 ( GNU C library ) ,以及可以被使用来操作操作系统的基本接口 Bash Shell 。这些都在 1990 年左右完成了!

到了 1985 年,为了避免 GNU 所开发的自由软件被其他人所利用而成为专利软件, 所以他与律师草拟了有名的通用公共许可证 ( General Public License, GPL ), 并且称呼他为 copyleft ( 相对专利软件的 copyright ) 。

由于有 GNU 所开发的几个重要软件( 比如 GCC,Glibc , bash shell )造成后来很多的软件开发者可以藉由这些基础的工具来进行程序开发,进一步壮大了自由软件团体。不过,对于 GNU的最初构想“建立一个自由的 Unix 操作系统”来说,这些优秀的程序是仍无法满足。 因为,当下并没有“自由的 Unix 核心”存在。所以这些软件仍只能在那些专利的 Unix 平台上工作,一直到 Linux 的出现。

1991 年,芬兰的赫尔辛基大学的的 Linus Torvalds 在 BBS 上面贴了一则消息, 宣称他以 bash ,gcc 等工具写了一个小小的核心程序,这个核心程序可以在 Intel 的 386 机器上面运作, 让很多人很感兴趣!从此开始了 Linux 不平凡的路程!

Linus Torvalds ( 托瓦兹, 1969 年出生 )的外祖父是赫尔辛基大学的统计学家, 他的外祖父为了让自己的小孙子能够学点东西,所以很小就将托瓦兹带到身边来管理一些微计算机。 在这个时期,托瓦兹接触了汇编语言(Assembly Language),那是一种直接和芯片对谈的程序语言,也就是所谓的低级语言。必须要很了解硬件的架构,否则很难以汇编语言编写程序。

在 1988 年间,托瓦兹顺利地进入了赫尔辛基大学,幵选读了计算机科学系。在就学期间,因为学业的需要和自己的兴趣, 托瓦兹接触到了 Unix 这个操作系统。当时整个赫尔辛基只有一部最新的 Unix 系统,同时仅提供 16 个终端机 ( terminal )。 早期的计算机仅有主机具有运算功能,terminal 仅负责提供 Input/Output 而已。在这种情况下, 实在很难满满足托瓦兹的需求,因为光是等待使用 Unix 的时间,就很耗时。为此,他不禁想到:我何不自己弄一部 Unix 来用?不过,就如同 Stallman 当年的 GNU 计划一样,要写核心程序,谈何容易~不过,幸运之神并未背离托瓦兹,因为不久之后,他就知道有一个类似 Unix 的系统, 并且和 Unix 完全兼容,还可以在 Intel 386 (就是教科书上的 I386 咯) 机器上面跑的操作系统, 那就是我们上面提过的,谭宁邦教授为了教育需要而撰写的 Minix 系统!他在购买了最新的 Intel 386 的个人计算机后,就立即安装了 Minix 这个操作系统。 另外,Minix 这个操作系统是有附上原始码的, 所以托瓦兹也经由这个原始码学习到了很多的核心程序的设计概念。

托瓦兹跟在研究Minix的过程中,发现 Minix 虽然真的很棒,但是谭宁邦教授就是不愿意进行功能的加强,导致一堆工程师在操作系统功能上面达不到需求。 这时,年轻的托瓦兹想:既然如此,那我何不自己来改写一个我想要的操作系统?于是他开始了操作系统核心程序的撰写。

撰写程序需要什么呢?首先需要的是能够进行工作的环境,再来则是可以将原始码编译成为可执行文件的编译程序。 好在有 GNU 计划提供的 bash 工作环境软件以及 gcc 编译程序等自由软件, 让托瓦兹得以顺利地撰写核心程序。他参考 Minix 的设计理念和书上的程序代码,然后仔细研究出 386 个人计算机的性能优化, 然后使用 GNU 的自由软件将核心程序代码和 386 紧紧地结合在一起,最终写出他所需要的核心程序。 而这个小玩意竟然真的可以在 386 上面顺利地跑起来,还可以读取 Minix 的文件系统。 真是太好了!不过还不够,他希望这个程序可以获得大家的一些修改建议, 于是他便将这个核心代码放置在网络上提供给大家下载,同时在 BBS 上面贴了一则消息:(这就是 Linux 出现时的宣言吧)

Hello everybody out there using minix. I'm doing a (free) operation system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. I've currently ported bash (1.08) and gcc (1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people want. Any suggestions are welcome, but I won't promise I'll implement them :-)

他说,他完成了一个小小的操作系统,这个核心是用在 386 机器上的, 同时,他真的仅是好玩,并不是想要做一个跟 GNU 一样大的计划! 另外,他希望能够得到更多人的建议与回馈来发展这个操作系统!这个概念跟 Minix 刚好背道而驰。 这则新闻引起很多人的注意,他们也去托瓦兹提供的网站上下载了这个核心来安装。 有趣的是,因为托瓦兹放置核心的那个 FTP 网站的目录为:Linux, 因此,大家便称这个核心为 Linux 了。(此时的 Linux 只是现在 linux 的 kernel )

关于 Linux 的吉祥物,也有个有趣的故事:托瓦兹因为小时候去动物园被企鹅咬了一口念念不忘, 而正式的Linux 2.0 推出时,大家要他想一个吉祥物。他在想也想不到什么动物的情况下, 就将这个念念不忘的企鹅当成Linux的吉祥物了。

【正厚软件】0基础学IT,来Linux的发展历史吧相关推荐

  1. 正厚软件 | 为什么要转行IT?

    正厚软件-洪老师的技术分享 我们经常会听到"跳槽穷半年,转行穷三年",但如果生活很糟糕,不转行会不会穷一辈子?作为一个毕业专业对口常年混迹IT行业的工程师,我认为我是幸运的,火爆行 ...

  2. IT培训从业6年, 正厚软件魏老师说些真心话(篇一)

    其实每个行业都有一些为人知和不为人广知的信息, 称之为"路子",只要说话发声吧总会有人不满意.引发的廉价的口水战, 更有甚者不知其居心的人愤然的各种神一般的操作, 我也见怪不怪了- ...

  3. 0基础学原画多久入行?看看你还差什么?

    0基础学原画多久入行?看看你还差什么?许多人认为学习原画的必要因素不是零基础,滴水石穿,基础是历练出来的,学习的自制力也是很重要的,能不能在零基础的情况下学习原画,要看你有没有学习的决心. 学习原画的 ...

  4. python难学嘛-终于明白0基础学python难吗

    Python语言是一种典型的脚本语言,简洁,语法约束少,接近人类语言.有丰富的数据结构,例如列表.字典.集合等.具有可移植性,支持面向过程和面向对象编程,并且开源.以下是小编为你整理的0基础学pyth ...

  5. list选取多个元素 python_【幼儿园级】0基础学python一本通(上)——AI未来系列1...

    在未来面前,每个人都是学生 江海升月明,天涯共此时,关注江时! 引 子 本篇为AI未来系列第一篇.为什么要研究学习python?python是未来屠龙的屠龙宝刀,再辅助以我们的高中数学基础(足够用的屠 ...

  6. 【python教程入门学习】学python要多久,0基础学python有多难

    学python要多久,0基础学python有多难,这是很多想学习python语言同学绕不开的问题,都害怕花完钱最终没有应有的回报!对于毫无经验0基础的同学来说学习python什么最重要,方向选对坚持下 ...

  7. 零基础学python难吗-终于明白0基础学python难吗

    Python语言是一种典型的脚本语言,简洁,语法约束少,接近人类语言.有丰富的数据结构,例如列表.字典.集合等.具有可移植性,支持面向过程和面向对象编程,并且开源.以下是小编为你整理的0基础学pyth ...

  8. 0基础学python有多难-0基础纯小白学Python,请注意这2个坑

    0基础的纯小白学Python有哪些坑需要避免?有没有适合小白的Python教材推荐? 很多纯0基础,毫无编程经验的小白在学习Python的过程中总是无法坚持下来,究其原因,其实就是因为毫无经验,方向不 ...

  9. 0基础学Java需要多久?

    0基础学Java需要多久?黑马程序员零基础系统学习的Java课程课时348小时,至少要学习5-6个月的时间,不同的课程大纲课时也不一样,具体课看课程的详情:Java基础课程课时在5-20小时不等,根据 ...

最新文章

  1. Lora模块项目01:简述物联网的各大无线通信技术
  2. oracle非常量不能用于privot_Oracle 行转列(pivot、wm_concat、decode)使用总结(转载)...
  3. 即时通讯:XMPP基础
  4. GaussianBlur函数
  5. 计算机网络恶搞图片,网络恶搞图片遭-搜狐新闻
  6. vue-cli webpack配置分析 - chenBright - SegmentFault 思否
  7. java实现关键词云_Java synchronized 关键词详细说明
  8. JAVA与SAP数据交互的方式总结
  9. ajax提交前先验证,jQuery验证AJAX之前提交(jQuery validation before AJAX sub
  10. 数据挖掘-二手车价格预测 Task04:建模调参
  11. Pixel 3a 开箱及 Google Fi 服务评测视频
  12. deepin linux字体设置,在deepin系统中如何安装系统字体? - Deepin深度系统用户手册...
  13. Toshiba Folio + CWM +CM
  14. PHP QQ网页三方登录
  15. Oracle,emc,emulex联合测试T10
  16. java算球体积的代码_java - 球体体积法不起作用 - 堆栈内存溢出
  17. 解决:测试HDFS读写性能时出现错误
  18. Flutter的原理及美团的实践(下,100%好评
  19. ubuntu下高通平台模组串口驱动及使用
  20. 微软surface屏幕测试软件,Soomal作品 - Microsoft 微软 Surface Go平板电脑屏幕测评报告 [Soomal]...

热门文章

  1. 【LINUX】本地安装宝塔+花生壳端口映射搭建网站
  2. 如何下载矢量建筑楼块轮廓为CAD文件
  3. 程序源码分享-51单片机用LCD1602显示MPU6050角度数据
  4. 洗衣泡泡纸是什么原理
  5. 【多媒体课件制作软件】Focusky教程 | 设置多个对象同时播放动画
  6. HTML----网页设计(淘宝产品页)
  7. 致命错误,遇到在搜索预编译头文件时遇到意外的文件结尾
  8. 分享一套完整的汽车维修订单管理系统源码 带数据库文档
  9. MVC分层+JDBC+数据库+Servlet实现JSP文件上传和显示+模糊查询+分页
  10. 地址线,数据线,控制总线