类 Unix 发展历史
Unix 系统
大概 1969 年,贝尔实验室开始开发 Unix 操作系统,一开始是汇编语言编写,为了方便移植 Unix 系统到不同硬件上,还设计开发了高级语言 C 语言来进行重写。
BSD 项目
由于 Unix 源码开放、具有可移植性,吸引了不同组织对它进行扩展。其中最著名的是 1977 年 Berkeley 大学对其的改造适配,同时增加了许多功能,命名为 BSD,代表伯克利软件发行版。后来 FreeBSD 就是由 BSD 分支发展而来的。类似的一些商业公司也推出了自己的 Unix 系统,但只能支持自己的硬件。
POSIX 标准
大概 1988 年,随着 Unix 的派生系统越来越不一致,应用要支持不同系统的工作量变大,为了更方便地让不同软件轻松移植到不同的 Unix 系统,IEEE 协会制定了 POSIX(Portable Operating System Interface)标准,规范了 Unix 系统的接口。
类 Unix 系统
类 Unix 系统(Unix-like; UN*X 或 *nix) 指各种 Unix 的派生系统,继承了原始 UNIX 的特性,一定程度遵循 POSIX 标准的系统,如 Linux、BSD、MacOS。
Stallman 的 GNU 项目
1984 年,Richard Stallman 为了建立一个自由、开放的类 Unix 系统,成立了 GNU 项目[1]。一开始他开发了一些简单的程序,由于可以免费替代专利软件,逐渐积累了知名度。接着编写了 GNU 里最著名的 GNU 工具链,包括 GCC、glibc 等,以及 Bash shell。
GPL 协议
1989年,Stallman 为保护 GNU 软件的自由,撰写了 GNU 通用公共许可证(GNU General Public License),简称 GPL。GPL 是一个 Copyleft 许可协议(是的,和 Copyright 相反😉),意味着项目的某个部分是以 GPL 发布,则整个项目和派生作品都需要用相同许可分发。
GPL 协议授予使用者权利(自由):
- 可以自由地运行代码
- 可以自由地修改代码
- 可以自由地发布代码
- 可以自由地传播代码
GPL 协议限制使用者权利(限制):
- 必须在修改后的代码中保留 GPL 协议(意味着如果发布给其他人使用,就要授予他们以上自由)
Linus 和 Linux 系统
1991 年,由于还没有免费支持个人电脑(x86)的类 Unix 系统,因此 Linus Torvalds 决定搞一个适合自己电脑的类 Unix 版本。他以 MINIX 为模板、利用 GNU 工具(bash, gcc)写出第一版内核。但发现一些在 Unix 上可以运行的软件不能在他的系统上运行,于是他修改代码使其符合 POSIX 标准,来适配更多的软件。
这个系统后来被命名为 Linux。Linus 把它放到网上分享后,因为其开源小巧,许多极客自发地为各种硬件编写驱动来运行 Linux。之后,Linux逐渐发展成熟,现在的绝大多数服务器都运行着它。
感想
写这篇笔记,参考了好些资料[2][3][4][5],看的过程感觉工业界人文历史也蛮有意思。。我想要记录某个技术是「怎么来的」,「怎么发展的」,而不是单纯记录技术原理、细节。有时候更偏向于记录推动事情的最初动机、让项目得以顺利发展的因素。
从后来者的角度看,他们不知不觉就推动了伟大事业,如果我在了解上下文的情况下,我是不是也有能力做“这些事”,我能不能想到要做“哪些事情”?这样反思,或许能帮助我在未来做出更好的「去做什么事情」、「怎么做事情」的决策!
总结一下,制定标准、开源免费(带来的快速推广、自发共建)、市场有需求、用有限精力先提供基础的工具,方便别人共建,这些可能是成功的因素。当然,拿 Windows 对比看的话,人家闭源也一样成功。
