The Origin of Linux

Linux 是一种自由和开源的类 Unix 操作系统。

严格意义来说 Linux 是一种操作系统的内核(Kernel)。因操作系统中包含了许多图形用户界面(GUI)和其他实用工具。如今 Linux 常用来指基于 Linux 的完整操作系统,内核则改以 Linux 内核 称之。

说到 Linux 的起源,就不得不说 Unix。正如其定义:类 Unix 操作系统。

而说到 Unix 就也不得不说 C 语言。

Unix 的起源

上世纪六十年代时,大部份计算机都是采用批处理的方式(也就是,当作业积累一定数量的时候,计算机才会进行处理)。

Unix 的前身为 1964 年开始的Multics。贝尔实验室于 1965 年时,加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作的被设计运行在 GE-645 大型主机上的多用途、分时及多用户的操作系统的计划。由于目标庞大,开发进度缓慢,且性能较低。贝尔实验室于 1969 年退出了该项计划。

当时为了开发 Multics 而招募的肯·汤普逊(Ken Thompson),加入不久,计划就中止了,但是 GE-645 还保留在贝尔实验室,于是他继续在该机器上开发软件。当时他编写了一个太空旅行游戏,实际运行后发现游戏速度很慢且耗费昂贵(每次运行会花费 75 美元),随后 GE-645 被搬走。Ken 在实验室中找到几台没人用的 PDP-7,在丹尼斯·里奇(Dennis Ritchie)的帮助下,Ken 用 PDP-7 的汇编语言重写了这个游戏。(当时 PDP-7 没有操作系统,为了运行游戏,顺便开发了一个简易的操作系统,也可以当成是 Unix 的雏形)

在游戏开发完成后,Ken 提议在 PDP-7 上开发操作系统的计划,Multics 当时的项目组成员都加入其中。在团队合作下,最终做出了一个分时多任务系统,称为第一版的 Unix。

因为 PDP-7 的性能不佳,Ken 和 Dennis 将第一版 Unix 移植到了 PDP-11/20 的机器上,开发了第二版的 Unix。Ken 和 Dennis 嫌用汇编语言做移植太麻烦,他们整合 BCPL(Basic Combined Programming Language)形成了 B 语言(取 BCPL 的第一个字母)。

当时第一版和第二版的 Unix,一些应用都是通过 B 语言和汇编语言编写的。麻烦,编写效率低。于是 Ken 和 Dennis 对 B 语言进行改造,于 1971 年发明了 C 语言(取 BCPL 的第二个字母)。1973 年用 C 语言重写了 Unix,形成了第三版的 Unix。

Unix 的第一篇文章The UNIX Time Sharing System由 Ken 和 Dennis 于 1974 年 7 月的 the Communications of the ACM 发表。Unix 自此面世,Unix 被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。

Unix 的发展

自 1974 年 Unix 面世后,到 1979 年相继发布到第 7 个版本。第 7 个版本被称为是“最后一个真正的 Unix”,之后虽然发布了 8、9、10 版本,但是只授权给了少部分的大学使用。

期间,各教育机构或公司对 Unix 进行了不同的更改,开创了多个分支。其中比较著名的就有 BSD 和 AT&T 的 UNIX System。

1978 年,加州大学伯克利分校(University of California, Berkeley)推出了基于 Unix 版本 6,加上一些改进和新功能而成的 Unix。这就是著名的“1 BSD(1st Berkeley Software Distribution)”

1982 年,AT&T 基于版本 7 开发了 UNIX System Ⅲ的第一个版本,这是一个商业版本仅供出售。为了解决混乱的 UNIX 版本情况,AT&T 综合了其他大学和公司开发的各种 UNIX,开发了 UNIX System V Release 1。这个新的 UNIX 商业发布版本不再包含源代码,所以加州大学伯克利分校继续开发 BSD UNIX,作为 UNIX System III 和 V 的替代选择。

这 3 个分支发布过后,其他一些公司也开始为其自己的小型机或工作站提供商业版本的 UNIX 系统,有些选择 System V 作为基础版本,有些则选择了 BSD。BSD 的一名主要开发者,Bill Joy,在 BSD 基础上开发了 SunOS,并最终创办了 Sun Microsystems。

1969~2005 的 Unix 发展史:https://www.levenez.com/unix/
现在的文献中提到 Unix 基本上是说,由 Ken Thompson 和 Dennis Ritchie 共同开发的。
通过历史发现,Unix 主要是由 Ken Thompson 写下的。但在学术界,Dennis Ritchie 的名字往往被排在了 Ken Thompson 前面的。这是因为,Dennis Ritchie 不但发明了 C 语言,而且当时他设计 Unix 操作系统的设计思想,影响了整个世界,直到今天。
当时,他们开发 UNIX,没有正式立项,是 Ken Thompson 和 Dennis Ritchie 等少数几个人偷偷干的,如一切从头从新设计,几乎是不可能的,所以 Unix 借鉴了 Multics 的经验,并进行了创新。

下面是 Unix 的特点:

  • Everything(including hardware)is a file(所有的事物(甚至硬件本身)都是一个文件。)
  • Configuration data stored in text(以文本形式储存配置数据。)
  • Small, single-purpose program(程序尽量朝向小而单一的目标设计。)
  • Avoid captive user interfaces(尽量避免令人困惑的用户接口。)
  • Ability to chain program together to perform complex tasks(将几个程序连结起来,处理大而复杂的工作。)

Linux 的起源

Unix 的发展停滞

1982 年,AT&T 意识到了 Unix 的商业价值,为了私有化 Unix,1986 年 IEEE 指定了一个委员会制定了一个一个开放作业系统的标准,称为 POSIX(Portable Operating Systems Interface)。AT&T 的 Unix 取得了这个标准制订战争的胜利,还取得了 Unix 这个注册商标。

1991 年,一群 BSD 开发者(Donn Seeley、Mike Karels、Bill Jolitz 和 Trent Hein)离开了加州大学,创办了 Berkeley Software Design,Inc(BSDI)。BSDI 是第一家在便宜常见的 Intel 平台上提供全功能商业 BSD UNIX 的厂商。后来 Bill Jolitz 离开了 BSDI,开始了 386BSD 的工作。386BSD 被认为是 FreeBSD、OpenBSD 和 NetBSD、DragonFlyBSD 的先辈。

1992 年,USL(AT&T 的附属公司 UNIX Systems Laboratories)正式对 BSDI 提起诉讼,说 BSD 剽窃他的源码。最终了结了好评如潮的 BSD 系统。

这场官司一直打到 AT&T 将自己的 Unix 系统实验室卖掉,新接手的 Novell 公司采取了一种比较开明的做法,允许 BSDI 自由发布自己的 BSD,但是前提是必须将来自于 AT&T 的代码完全删除。这桩诉讼最终在 1994 年 1 月了结,于是 BSD 一系列的开发也被延迟了两年。

Minix

Minix,是一个迷你版本的类 Unix 操作系统,由塔能鲍姆教授为了教学之用而创作,采用微核心设计,以 C 语言写成,与 Version 7 Unix 兼容,全部的代码共约 12,000 行,并置于他的著作《操作系统:设计与实现》(Operating Systems: Design and Implementation,ISBN 0-13-637331-3)的附录里作为示例。

因为 AT&T 的政策改变,在 Unix 版本 7 推出之后,发布新的使用许可协议,将 UNIX 源代码私有化,在大学中不再能使用 UNIX 源代码。塔能鲍姆教授为了能在课堂上教授学生操作系统运作的实务细节,决定在不使用任何 AT&T 的源代码前提下,自行开发与 UNIX 兼容的操作系统,以避免版权上的争议。他以小型 UNIX(mini-UNIX)之意,将它称为 MINIX。

第一版于 1987 年发布。

GNU Project

1983 年,理查德·马修·斯托曼创立 GNU 计划。这个计划有一个目标,是为了发展一个完全自由的类 Unix 操作系统。在 1985 年,理查德·马修·斯托曼发起自由软件基金会,并且在 1989 年撰写 GPL 协议(GNU General Public License,GNU 通用公共许可证)。1990 年代早期,GNU 开始大量的产生或收集各种系统所必备的组件,像是库、编译器、调试工具、文本编辑器、网页服务器、用户界面。但是由于底层环境——内核,设计异常复杂,发展进度缓慢,一度陷入停滞。

Linux

1991 年,林纳斯·托瓦兹(Linus Benedict Torvalds)在赫尔辛基大学(University of Helsinki)上学时,不满于当时使用的 386 计算机上的 MS-DOS(MicroSoft Disk Operating System)。于是获取了 Minix 来使用。又对 Minix 在当时只允许教育使用不满,便开始写他自己的操作系统。

1991 年 9 月,发布 Linux 0.01 版。大学 FTP server 管理员 Ari Lemmke 发布在 Internet 上,最初 Torvalds 称这个内核的名称为”Freax”,意思是自由(”free”)和奇异(”freak”)的结合字,并且附上”X”这个常用的字母,以配合所谓的类 Unix 的系统。但是 FTP 服务器管理员嫌原来的命名“Freax”的名称不好听,把内核的称呼改成“Linux”。当时仅有雏形,且必须在有 Minix 的机器上编译以后才能玩。

1991 年 10 月,发布 Linux 0.0.2 版本,这个版本中已经可以运行 bash 和 gcc。

在当时由于 BSD 的发展陷入停滞,Linux 的开放源代码在网络中传播,引起了黑客们的注意。一批高水平的黑客加入编写,使 Linux 发展迅猛,几乎一两个礼拜就有新特性的版本或修正版本的发布。

1993 年底,1994 年初,Linux 1.0 发布。Linux 1.0 已经是一个功能完备的操作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能,在 4M 内存的 80386 机器上也表现得非常好。

Linux 的标志和吉祥物是一只名字叫做 Tux 的企鹅,标志的由来是因为 Linus 在澳洲时曾被一只动物园里的企鹅咬了一口,便选择企鹅作为 Linux 的标志。更容易被接受的说法是:企鹅代表南极,而南极又是全世界所共有的一块陆地。这也就代表 Linux 是所有人的 Linux。

Linux 的发展

到 1991 年 Linux 发布时,GNU 已经具有了除系统内核外的各种必备软件。后来 Linus 及其他开发人员使用 GNU 的软件来代替 Minix 的软件,将 GNU 的各种组件运行于 Linux 之上,并将 Linux 的开源协议修改为 GNU 的 GPL,以使其能够在商业上使用。

1994 年 3 月,Linux1.0 版正式发布,Marc Ewing 成立了 Red Hat 软件公司,成为最著名的 Linux 分销商之一。

到 1995 年,Linux 已经发展成为能够在性能和特性上均堪媲美专有 Unix 的操作系统,也由于开源的 Web 服务器 Apache 的稳定和高效,Linux + Apache 的搭配也成了全球服务器的首选。

Linux 的影响

自从 Unix 的出现,黑客文化随之而来。以对 Unix 的自由和跨平台移植为追求和乐趣。Unix 在 AT&T 准备私有化和商业化,并在 Unix 的法律纠纷之时。不仅是 Unix 受到了打击,整个黑客文化也受到了打击。GNU 的发起者 Richard Stallman 主张的是完全自由化,反商业化。Linus 不认同 Richard 的观点。Linux 的出现与发展,表现出了对自由软件的追求,和商业软件的认同。自此 Linus 成为了黑客文化新一代的领袖,也造就了今天的 Linux 火红的局面。更促使了网景公司(Netscape Communications)公布了其 Mozilla 浏览器的源码。

黑客(Hacker)最早是指非科班出身,但又对计算机(计算机科学、编程、设计)具有高度深入理解的人。后泛指对计算机(计算机科学、编程、设计)具有高度深入理解的人。

Unix 的影响

在那充满激情的 Unix 的岁月里,大伙为了科研目的或个人兴趣在 Unix 上进行各种开发,并且不计较金钱利益,将这些源码公开,互相共享。在那里,开发和自由成为主题,正因为如此,当今的世界才如此丰富多采。在 40 年 Unix 文化和技术积淀的里面,蕴涵着比较纯正的计算机文化和思想。

纵观整个 Unix 的历史过程中,许许多多的程序员、工程师前辈们在 Unix 中所摸爬滚打,他们的辛勤地、他们呕心沥血地跟随 Unix,努力建立一个繁荣的计算机世界的文明。Unix 不是一个简简单单的操作系统。有人说,Unix 是程序员设计给程序员的,一点没错。Unix 的近 40 年历史造就了它的博大精深,它给程序员们带来的绝不仅仅只是技术上的知识。它的失误,它的无奈,它的精神,它的荣耀,它从技术和思想上都启迪着我们。对于程序员来说,学习 Unix 就等同于向前辈程序学习。无论你是什么样的程序员,你都应该了解 Unix,这是开发人员的根,前面的开发者造就了它,而它又在引领后面的开发人员,它是前辈程序员们交给我们的一份礼物,一个接力棒,它是开发人员赖以生存的土壤,是上一辈程序员留给我们这一代程序员开启未来的钥匙。Unix 就像一个程序员教父一样,理当受到我们的尊敬和崇拜。

BSD 的分支

三个“主流”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 系统一样。

Linux 的分支(发行版)

  1. Debian 系,大多主桌面使用,安装包格式.deb,安装命令dpkg,包管理工具apt-get

    • Debian GNU/Linux
    • Deepin,深度,武汉深之度科技有限公司开发
    • Ubuntu
      • Linux Mint
      • Elementary OS
  2. Red Hat 系,大多主服务器使用,安装包格式.rpm,安装命令rpm,包管理工具yum

    • Red Hat Enterprise Linux(RHEL),Red Hat 商业维护
    • CentOS(不包含 Red Hat 商业应用的 Red Hat),社区维护
    • Fedora,Red Hat 及社区维护
    • SUSE/open SUSE,德国产
    • Oracle Linux,针对 Oracle 系应用优化
  3. Slackware 系,UNIX 风格

    • Slackware
  4. 其它系

    • Arch Linux,极简风,只包含最基本的系统软件。安装已经打包好的软件。
    • Gentoo,极简风,只包含最基本的系统软件。下载源码编译安装。

参考文献