【Linux】Linux是如何诞生的?

本文主要讲述Linux的诞生背景以及一些小故事,其中,还清晰地讲述了Unix、BSD、GUN、GPL等名词的含义及来源。


Table of Contents

Unix

C语言

BSD

GUN

GPL

Linux

Linux的内核发展


注意:本文学习整理于网络,具体来源已忘记了,如有侵权,请联系我删除,一切都为了学习和推动行业的进步!

故事,还要从Unix的诞生开始讲起:


Unix

MULTICS项目:

  1. 二十世纪六十年代时,大部份计算机都是采用批处理的方式(也就是说,当作业积累一定数量的时候,计算机才会进行处理)
  2. 那时,我们熟知的美国电话及电报公司(AT&T)、通用电器公司(G.E.)及麻省理工学院(MIT)计划合作开发一个多用途、分时及多用户的操作系统,也就是这个MULTICS,其被设计运行在GE-645大型主机上。
  3. 不过,这个项目由于太过复杂,整个目标过于庞大,糅合了太多的特性,进展太慢,几年下来都没有任何成果,而且性能都很低。
  4. 于是到了1969年2月,贝尔实验室决定退出这个项目

Ken Thompson和Dennis Ritchie:

  • 贝尔实验室中的有个叫 Ken Thompson 的人(如下图),他为 MULTICS 这个操作系统写游戏了个叫“Space Travel”的游戏,在 MULTICS 上经过实际运行后,他发现游戏速度很慢而且耗费昂贵 —— 每次运行会花费75美元。

  • 退出MULTICS项目以后。他为了让这个游戏能玩,所以他找来Dennis Ritchie(如下图)为这个游戏开发一个极其简单的操作系统。这就是后来的Unix

  • 值得一提的是,当时他们本想在DEC-10(可以把它看做是一个硬件平台)上写,后来没有申请到,只好在实验室的墙角边找了一台被人遗弃的 Digital PDP-7 的迷你计算机进行他们的计划,这台计算机上连个操作系统都没有,于是他们用汇编语言仅一个月的时间就开发了一个操作系统的原型。

Unix诞生:

  1. 他们的同事Brian Kernighan非常不喜欢这个系统,嘲笑Ken Thompson说:“你写的系统好真差劲,干脆叫Unics算了。” Unics 的名字就是相对于 MULTICS 的一种戏称,后改成了Unix。
  2. 于是,Unix 就在这样被游戏和玩笑创造了,当时是1969年8月。也就是这一年,Linux 之父 Linus Torvalds 在芬兰出生了。
  3. 1971年,Ken Thompson 写了充分长篇的申请报告,申请到了一台PDP-11/24的机器。于是Unix第一版出来了。在一台PDP-11/24的机器上完成。这台电脑只有24KB的物理内存和 500K 磁盘空间。
  4. Unix占用了12KB的内存,剩下的一半内存可以支持两用户进行Space Travel的游戏。而著名的 fork() 系统调用也就是在这时出现的。

C语言

C语言诞生背景:

  1. 到了1973年的时候,Ken Thompson 与 Dennis Ritchie 感到用汇编语言做移植太过于头痛,他们想用高级语言来完成第三版Unix,对于当时完全以汇编语言来开发程序的年代,他们的想法算是相当的疯狂。
  2. 一开始他们想尝试用Fortran,可是失败了。后来他们用一个叫BCPL的语言开发,他们整合了BCPL形成B语言,后来Dennis Ritchie觉得B语言还是不能满足要求,就是就改良了B语言,这就是今天的大名鼎鼎的C语言
  3. 于是,Ken Thompson 与 Dennis Ritchie 成功地用C语言重写了 Unix 的第三版内核。至此,Unix这个操作系统修改、移植相当便利,为Unix日后的普及打下了坚实的基础。而Unix和C完美地结合成为一个统一体,C与Unix很快成为世界的主导。

Unix的流行:

  1. Unix 的第一篇文章 “The UNIX Time Sharing System”Ken Thompson 和 Dennis Ritchie 于1974年7月的 the Communications of the ACM 发表。这是UNIX与外界的首次接触。
  2. 结果引起了学术界的广泛兴趣并对其源码索取,所以,Unix第五版就以“仅用于教育目的”的协议,提供给各大学作为教学之用,成为当时操作系统课程中的范例教材。各大学公司开始通过 Unix 源码对 Unix 进行了各种各样的改进和扩展。于是,Unix 开始广泛流行。

BSD

BSD的诞生:

  1. 1977 年,Berkeley 大学的 Bill Joy 针对他的机器修改 UNIX 源码,称为BSD(Berkeley Software Distribution),Bill Joy 是 Sun 公司的创始人(就是Java诞生的那个公司)
  2. 1978年,对 Unix 而言是革命性的一年;因为学术界的老大柏克利大学,推出了一份以第六版为基础,加上一些改进和新功能而成的 Unix。这就是著名的“1 BSD(1st Berkeley Software Distribution)”,开创了Unix的另一个分支:BSD 系列。 同时期,AT&T成立USG,将 Unix变成商业化的产品。

 

BSD-Unix和AT&T-Unix:

  1. 从此,BSD的 Unix 便和AT&T 的Unix 分庭抗礼,Unix就分为System IV 和 4.x BSD这两大主流,各自蓬勃发展。
  2. BSD对UNIX最重要的贡献之一是TCP/IP。BSD 有8个主要的发行版中包含了TCP/IP:4.1c、4.2、4.3、4.3-Tahoe、4.3-Reno、Net2、4.4以及 4.4-lite。这些发布版中的TCP/IP代码几乎是现在所有系统中TCP/IP实现的前辈,包括AT&T System V UNIX 和Microsoft Windows中的TCP/IP都参照了BSD的源码。
  3. 1979 年,UNIX 发布 System V,用于个人计算机;
  4. 1984 年,因为 UNIX 规定:“不能对学生提供源码”,Tanenbaum老师自己编写兼容于 UNIX 的Minix,用于教学;

 

Unix的私有商业化:

  1. 这是一个AT&T妄图私有化的Unix的时代。为了私有化Unix,1986年IEEE指定了一个委员会制定了一个一个开放作业系统的标准,称为 POSIX (Portable Operating Systems Interface)。最后加上个X,不知道是为了好听,还是因为这本质上是UNIX的标准。
  2. 当然,AT&T的Unix取得了这个标准制订战争的胜利,还取得了Unix这个注册商标。此时BSD的拥护者自喻为冷酷无情的公司帝国的反抗军。就销售量来说,AT&T UNIX始终赶不上BSD/Sun。到1990年,AT&T与BSD版本已难明显区分,因为彼此都有采用对方的新发明。
  3. 这段时期,从实验室出来的被全世界所分享的Unix,正处于被私有化的关键时期。

 

BSD分支:

  1. FreeBSD: FreeBSD 是最受欢迎的 BSD,针对高性能和易用性。它支持英特尔和 AMD 的32位和64位处理器。
  2. NetBSD: NetBSD 被设计运行在几乎任何架构上,支持更多的体系结构。在他们的主页上的格言是"理所当然,我们运行在 NetBSD 上"。
  3. OpenBSD: OpenBSD 为最大化的安全性设计的 —— 这不仅仅它宣称的功能,在实践中也确实如此。它是为银行和其他重要机构的关键系统设计的。
  • 还有两个其他的重要 BSD 操作系统:
    1. DragonFly BSD: DragonFly BSD 的设计目标是提供一个运行在多线程环境中的操作系统 —— 例如,计算机集群。
    2. Darwin / Mac OS X: Mac OS X 实际上基于 Darwin 操作系统,而 Darwin 系统基于 BSD。它与其他的 BSD 有点不同,虽然底层内核和其他的软件是开源代码(BSD 代码),但操作系统的大部分是闭源的 Mac OS 代码)。苹果在 BSD 基础上开发了 Mac OS X 和 iOS,这样他们就不必写操作系统底层,就像 谷歌在 Linux 基础上开发 android 系统一样。

GUN

诞生背景:

  1. AT&T的这种商业态度(闭源,不开放源代码,还收费,就像是现今的Windows),让当时许许多多的Unix的爱好者和软件开发者们感到相当的痛心和忧虑,他们认为商业化的种种限制并不利于产生的发展,相反还能导制产品出现诸多的问题。随着商业化Unix的版本的种种限制和诸多问题,引起了大众的不满和反对。
  2. 于是,大家开始有组织地结成“反叛联盟”以此对抗欺行罢市的AT&T等商业化行为。

 

Richard Stallman

  • 此时,一个名叫Richard Stallman的领袖出现了(如下图),他认为Unix是一个相当好的操作系统,如果大家都能够将自己所学贡献出来,那么这个系统将会更加的优异!他倡导的Open Source的概念,就是针对Unix这一事实反对实验室里的产品商业化私有化。

  • 尽管Stallman既不是、也从来没有成为一个Unix程序员,但在后1980的大环境下,实现一个仿Unix操作系统成了他追求的明确战略目标。
  • Richard Stallman早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客,他们对代码共享的使命感甚至比那些有更多Unix背景的人强烈。

GNU

  • 1984 年,Richard Stallman开始 GNU(GNU’s Not Unix)项目,计划开发一套与Unix相互兼容的操作系统。Stallman是一个有理想的人,他想建立一个完全自由的操作系统,公开源码,任何人都可以修改该系统。他给这个操作系统取的名字叫GNU

  • 1985 年 Richard Stallman 又创办 FSF(Free Software Foundation)基金会来为 GNU 计划提供技术、法律以及财政支持。
  • 尽管 GNU 计划大部分时候是由个人自愿无偿贡献,但 FSF 有时还是会聘请程序员帮助编写。当 GNU 计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被 Red Hat 兼并的 Cygnus Solutions。

Richard Stallman的GNU项目核心:

  1. 产品:GCC、Emacs、Bash Shell、GLIBC;
  2. 倡导:自由软件;自由软件指用户可以对软件做任何修改,甚至再发行,但是始终要挂着 GPL 的版权; 自由软件是可以卖的,但是不能只卖软件,而是卖服务、手册等;
  3. GNU 的软件缺乏一个开放的平台运行,只能在 UNIX 上运行;

 

  1. GNU组织的建立,延续了当年Unix刚出现时的情形,并为这种情形建立了可靠的法律和财务保障。GNU 工程十几年以来, 已经成为一个对软件开发主要的影响力量, 创造了无数的重要的工具。例如:强健的编译器(如GCC),有力的文本编辑器,甚至一个全功能的操作系统。从那时开始,许多程序员聚集起来开始开发一个自由的、高质量、易理解的软件,让这使得Unix社区生机勃勃,一派繁荣景象。
  2. 要提供一个完整的操作系统,需要包含内核、编译器、编辑工具、C库、Shell等等一系列重要组成部件。自90年代发起这个计划以来,GNU 开始大量的产生或收集各种系统所必备的组件,像是函数库、编译器、调式工具、文本编辑器、网站服务器,以及一个Unix的使用者接口(Unix shell)等等。
  3. 到了1990年左右的时候,GUN社区已经大成气候了,但这时还缺一个内核,Stallman开始开发内核,取名为Hurd,但由于各种原因Hurd被耽误了。所以,GNU一直没有操作系统的kernel。正当Richard Stallman在为操作系统内核伤脑筋的时候,Linux 出现了。

GUN/Linux

  1. 由于Linus Torvalds在1991年开发了的Linux内核,由于也遵循自由软件之精神,跟GUN完美的融合在一起,终于形成了一个完美的操作系统。
  2. 革命成功后总要分江山的,从Stallman的观点来看,Linux仅仅是整个GUN项目的一部分,因此我们目前含义上的Linux操作系统应该叫GUN/Linux,这样才能更加贴切的说明GUN和Linux之间的关系,但这个提法没有多少人真正的响应。

GPL

GPL诞生背景:

  1. 计算机软件作为人类的知识财富,为人类社会的发展起到了巨大的作用,但长期以来软件源码作为个人或公司的私有财产受到严格的保密,很难做到像文学艺术作品一样地进行公开的交流,很大程度上造成软件的低水平,重复劳动严重,在一定意义上制约了软件的发展。
  2. 就像是Microsoft的Windows操作系统,就只有该公司内部能够查看源代码和修改操作。

GPL

  • 1985 年,Richard Stallman提出“应将软件源码看成人类共同拥有的知识财富,应该公开地自由交换、修改”。于是,为了避免 GNU 开发的自由软件被其他人用作专利软件, Richard Stallman创建 GPL(General Public License)版权声明

该授权书主要有以下几点:

  • 自由软件(free software)指的是源码自由,不是价格
  • 自由软件必须附带程序源代码,但可收取费用;
  • 任何人都可以自由分发自由软件并收取费用,但必须列明原创者姓名
  • 任何人都可以修改源代码,但必须列明修改人名字,以保护原创者名誉;
  • 任何人都可以采用源代码中的某一段,但其开发之软件必须也为自由软件(例如,如果 Netscap 是自由软件,而 IE 采用了其中的部份源代码,则 IE 也必须成为自由软件);
  • 任何自由软件的衍生品也必须是自由软件
  • 自由软件没有担保,以保护分发者。
  1. 1991 年,Richard Stallman 对授权做了微小的修改,即所谓的通用公共授权第 2 版。同时,他也推出了更宽松的通用公共授权,用于自由程序库。这一系列的授权有效地保护了自由软件不受商业软件的非法侵犯,例如,1998 年 Netscap 决定采用与 GPL 差不多的 NPL(Netscap Public Liscense),这样一来,Microsoft 就无法将 Netscap 中的源代码运用在 IE 上,除非它们也要成为自由软件。
  2. 至此,在 GPL 下人们就可以自由交流、修改软件源码了,这一协议极大地推动了整个计算机软件行业的发展,并带来了以下明显的益处:
  • 对于广大计算机软件的学习者来说,可以直接从源码中吸取营养,缩短学习的时间,提高学习的效率,少走弯路,再也不必花大量时间去看那些不知正确与否的“未解之谜”了,学习在某种程度上变成了一件轻松愉快的事情了。
  • 可以集中大家的智慧发展软件,避免重复劳动。一个软件只有公开源码,通过很多人的研究才有可能发现其中深藏的错误,大家才能公开探讨相关的问题,并进行改进,在大家的共同“挑剔与监督”下才有可能编写出尽善尽美的软件来。

 

GPL总结:

  1. GPL 协议的核心就是要对源码进行公开,并且允许任何人修改源码,但是只要使用了 GPL 协议的软件源码,其衍生软件也必须公开源码,准许其他人阅读和修改源码,即 GPL 协议具有继承性
  2. 另一个问题就是 GPL 软件并非就是免费软件,这里所说的自由软件是指对软件源码的自由获得与自由使用、修改,软件开发者不但可以通过服务来收费,而且还可以通过出售 GPL 软件来获利
  3. 适应 GPL 协议的软件一般都是自由软件,自由软件是指一件可以让用户自由复制、使用、研究、修改、分发等,而不附带任何条件的软件。

Linux

起源:

  1. 1991 年,芬兰赫尔辛基大学的研究生 Linus Torvalds 基于 gcc、bash 开发了针对 i386 机器的 Linux 内核;Linus Torvalds最初是用汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来从 Minix(Andy Tanenbaum教授所写的很小的 Unix 操作系统,主要用于操作系统教学)得到灵感,进一步产生了自认为狂妄的想法——写一个比 Minix 更好的Minix,于是开始写了一些硬件的设备驱动程序,一个小的文件系统。这样0.0.1版本的 Linux 就出来了,但是它只具有操作系统内核的勉强的雏形,甚至不能运行,你必须在有Minix的机器上编译以后才能玩。
  2. 8月25号 : 21岁的芬兰学生Linus Benedict Torvalds 在comp.os.minix 新闻组上宣布了它正在编写一个免费的操作系统。9月1号 : Linux 0.01在网上发布。
  3. 这时候Linus已经完全着迷而不想停止,决定踢开 Minix,于是在1991年10 月5号发布Linux 0.0.2版本,在这个版本中已经可以运行 bash 和 gcc。

 

  1. 从一开始,Linus就决定自由扩散Linux,包括原代码,随即Linux引起黑客们(hacker)的注意,通过计算机网络加入了Linux的内核开发。Linux倾向于成为一个黑客的系统——直到今天,在Linux社区里内核的开发被认为是真正的编程。
  2. 由于一批高水平黑客的加入,使Linux 发展迅猛,几乎一两个礼拜就有新版或修正版的出现,到1993年底94年初,Linux 1.0 终于诞生了!Linux 1.0已经是一个功能完备的操作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能,在4M内存的80386机器上也表现得非常好,至今人们还在津津乐道。

 

命名:

  1. Linus Torvalds本要把他的发时叫做Freax—“fread”“free”和“x”(暗指Unix)的合成词。Tux.png在开发系统的前半年里,他把文件以文件名“Freax”存储。Torvalds考虑过Linux这个名字,但是因为觉得它过于自我本位而放弃了使用它。
  2. 为便于开发,在1991年9月,他把那些文件上传到了赫尔辛基工业大学(HUT)的FTP服务器(ftp.funet.fi)。Torvalds在HUT负责管理那个服务器的同事Ari Lemmke,觉得“Freax”这个名字不是很好,就在不咨询Torvalds的情况下,把项目的名字改成了“Linux”。
  3. 但是之后,Torvalds也同意“Linux”这个名字了:“经过多次讨论,他承认Linux这个名字更好。在0.01版本Linux的源代码的makefile里仍然使用‘Freax'这个名字,在之后‘Linux'这个名字才被使用。

 

Linux标志:

  1. 1994年发表Linux正式核心1.0的时候,大家要Linus Torvalds想一只吉祥物,他想起曾经在澳大利亚的一个动物园里被企鹅咬过,干脆就以企鹅来当吉祥物了!
  2. 更容易接受的说法是:企鹅代表南极,而南极又是全世界共有个一块陆地,不属于任何国家。也就是说Linux不属于任何商业公司,是全人类每个人都可以分享的一项技术成果。

 

GNU与Linux:

  1. Linux 的历史是和GNU紧密联系在一起的。从1983年开始由Richard Stallman提出的GNU计划致力于开发一个自由并且完整的类Unix操作系统,包括软件开发工具和各种应用程序。
  2. 到1991年 Linux 内核发布的时候,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发。在 Linus Torvalds 和其它开发人员的努力下,GNU组件可以运行于Linux内核之上。整个内核是基于 GNU 通用公共许可,也就是GPL(GNU General Public License,GNU通用公共许可证)的,但是Linux内核并不是GNU 计划的一部分

 

1992年1月5号: Linux v0.12 release 版本的内核重新以GUN GPL的协议发布。

  1. 原来的许可证是禁止任何商业用途的。通过这次协议变更,发布和出售修改或未修改版的Linux成为了可能,只要你将这些复制版本以相同的GPL许可证发布,并且有相对应完整的源代码。
  2. 在后来的一次采访中,Linus对这次许可证的更改说了这样一句话(让Linux遵守GPL绝对是我干过的最正确的事):" Making Linux GPL'd was definitely the best thing I ever did."
  3. 1月29号: Andrew S. Tanenbaum向comp.os.minix邮件列表发送了一封名为LINUX is obsolete的邮件。总的来说,这次被一些人升级为“战火”的争论是关于Linux和内核架构的。Tanenbaum争辩说微内核比宏内核更加高级,所以Linux是过时的。
  4. 4月5号: 第一个Linux新闻组,comp.os.linux由Ari Lemmke提议和开通。
  5. 5月21号: Peter MacDonald 发布第一个独立的Linux安装包SLS。可以通过软盘安装,包括比较前沿的TCP-IP网络支持和X Window系统。建议至少预留10M的磁盘空间来安装。
  • 严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和应用程序的操作系统(也被称为GNU/Linux)。基于这些组件的Linux软件被称为Linux发行版。
  • 一般来讲,一个Linux发行套件包含大量的软件,比如软件开发工具,数据库,Web服务器(例如Apache),X Window,桌面环境(比如GNOME和KDE),办公套件(比如OpenOffice.org),等等。

影响:

  1. 1991至1995年间,Linux从概念型的 0.1 版本内核原型,发展成为能够在性能和特性上均堪媲美专有Unix的操作系统,并且在连续正常工作时间等重要统计数据上打败了这些Unix中的绝大部分。1995年,Linux找到了自己的杀手级应用——开源的web服务器Apache。就像Linux,Apache出众地稳定和高效。很快,运行 Apache 的 Linux 机器成了全球ISP平台的首选。约60%的网站选用Apache,轻松击败了另两个主要的专有型竞争对手。今天的LAMP(Linux ,Apache,MySQL,PHP)已经成为了架构 Web 服务器的主要首选。
  2. 现如今的Linux不但可以装在几乎所有的主流服务器上,当然也包括桌面的X86系统中。其还常常被用于嵌入式系统,机顶盒、手机、交换机、游戏机、PDA、网络交换机、路由器、等等,都是因为 Linux 那精彩的内核。
  3. Linux 的出现,不仅仅给世界带来了一个免费的操作系统,也不仅仅是对 Unix 自由、共享的文化的延续,它的出现带给了计算机世界自 Unix、GNU 以来更为成熟的思想和文化。

Linux的内核发展

来源:https://zh.wikipedia.org/wiki/Linux%E5%86%85%E6%A0%B8

  1. 1991年9月,Linux内核版本 0.01 在芬兰大学和研究网络(FUNET)的FTP服务器(ftp.funet.fi)上发布。它有10,239行代码。在1991年10月,0.02版本的内核发布了。                                    
  2. 1991年12月,0.11版本的内核发布。由于它可以由运行相同内核版本的计算机编译,因此该版本是第一个自托管的 Linux 内核。当托瓦茲于1992年2月发布0.12版本时,他采用了 GNU 通用公共许可证(GPL),而不是以前的自行起草的许可证,原先的许可证不允许商业再分发。
  3. 1992年1月19日,第一篇文章提交给新的新闻组alt.os.linux出现。
  4. X Window 系统随后被移植到Linux上,所以在1992年3月,Linux 0.95 是第一个能够运行X的版本。从0.1x到0.9x的版本号大幅跨越是因为期望没有大的缺失部分的版本1.0的即将出现。然而,这被证明是错误的。从1993年到1994年初,出现了0.99版本的15个开发版本。
  5. 1994年3月14日,Linux内核1.0.0发布,共176,250行代码。随后的1995年3月,有310,950行代码的 Linux 内核1.2.0发布。
  6. 在1996年6月9日发布的 Linux内核2.0版本之后,以2.0为大版本的主要更新有如下这些:
  7. 1999年1月25日 - 发布Linux内核2.2.0(1,800,847行代码)
  8. 1999年12月18日 - 针对2.2.13的 IBM 大型机补丁发布,允许 Linux 内核用于企业级机器
  9. 2001年1月4日 - 发布 Linux 内核2.4.0(3,377,902行代码)
  10. 2003年12月17日 - 发布 Linux 内核2.6.0(5,929,913行代码)
  11. 从2004年开始,发布过程发生了变化,新的内核每隔2-3个月定期发布,编号为2.6.0、2.6.1,直到2.6.39。
  12. 2011年7月21日,Torvalds宣布发布Linux内核3.0:“2.6.<大版本> 的日子过去了”。
  13. 2013年6月发布的Linux内核版本3.10包含15,803,499行代码
  14. 2015年6月发布的4.1版本已发展到超过1950万行代码,由近14000名程序员贡献。

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值