1 Linux 从哪里来
1960 年代初期, MIT 开发出兼容分时系统 (Compatible Time-Sharing System, CTSS) ,可以让大型主机供数个终端 (terminal)联机,利用主机资源运算。 CPU 在各使用者之间迅速切换,仿佛同时工作一样。 1965 年前后, MIT 联合 Bell 、 GE 共同发起基于 CTSS 的 Multics 计划。不过到了 1969 年,进度落后、资金短缺,虽然计划仍在继续,但 Bell 宣布退出了。
不过此事激发了 Bell 工程师 Ken Thompson 的灵感。刚好当年 8 月 Thompson 的妻儿远行探亲, Thompson 便趁这段时间用汇编语言写出了操作系统 Unics ,以移植自己心爱的 star travel 小游戏。 Unics 太好用了,在 Bell 内部广为流传。由于汇编语言在不同机器上并不一致, Thompson 与 Dennis Ritchie 合作用高级语言 B 语言重写 Unics ,然而效果并不理想。于是 Ritchie 先是将 B 语言改造成了 C 语言,再用 C 语言重写 Unics ,第一版正式 Unix 核心由此诞生。
Unix 与学术界展开深入合作,尤其是 Berkeley 大学的 Bill Joy ,他在 Unix 的基础上大量增补并发行了 Berkeley Software Distribution (BSD) 。后来又创立 Sun 公司,以 BSD 为核心开发 Unix 商业版本。当时既没有版权的纠纷,又没有协议的概念,各公司推出的 Unix 商业版本五花八门。 Bell 的母公司 AT&T 试图收回版权,在 1979 年发行的第七版 Unix 中特别提到了“不可对学生提供源码”的限制。此举严重影响了学校的教学进度,教授 Andrew S.Tanenbaum 不得不自己动手写了一个 Unix Like 核心程序 Minix 。可惜 Minix 不提供网络下载,没有得到广泛传播。
1984 年,黑客 Richard Mathew Stallman 发起 GNU (GNU’s Not Unix 的递归缩写) 计划,想打造一个自由开放的 Unix 操作系统生态环境。他参考现有软件开发免费的仿制品,还借机写出大名鼎鼎的 C 语言编译工具 GNU C Compiler (GCC) !一开始 GCC 的开发并不顺利, Stallman 便以磁带的形式出售自己所写的 Emacs 文本编辑器,用挣来的钱创立了自由软件基金会 (FSF, Free Software Foundation) ,邀请更多人通力合作,最终完成 GCC 。同期完成的还有操作系统基本接口 Bash Shell 。 1985 年,为了避免 GNU 所开发的自由软件被移花接木变成专利软件,他与律师草拟了通用公共许可证 (General Public License, GPL) 。相对于专利软件的copyright , GPL 称为 copyleft 。
但是这与 Stallman 的初心“打造一个自由开放的 Unix 操作系统生态环境”仍然相去甚远,因为它的基础 Unix 操作系统是有专利的。直到 1991年, Linus Torvalds 汲取 Minix 的设计,发布了一个可以在 Intel 的 386 机器上运行的 Unix Like 核心程序,从此开启了 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 🙂
为了让所有的软件都可以在 Linux 上执行, Torvalds 开始参考标准的 POSIX (Portable Operating System Interface) 规范,如此一来, Linux 就可以与 Unix 互通有无。“先有后优”的心态使得 Linux 飞速发展,仅靠 Torvalds 一人整合已经难以为继,虚拟团队应运而生。大家要 Torvalds 找一个吉祥物,他一时想不出好点子,就将小时候在动物园咬了自己一口企鹅任命为 Linux 的吉祥物。
2 Linux 如何学习
Distributions 是 Linux 核心和常用软件的套装。选择发行版往往是新手们耗时最久的事情。其实这些发行版核心来源一致,软件高度重合,任意选择一款即可。更多信息参考 DistroWatch 。
Netman 的建议:
- 有系统地设计文件目录,不要随便到处保存以致以后不知道放哪里了, 或找到文件也不知道为何物。
- 养成一个做记录的习惯。尤其是发现问题的时候, 把错误信息和引发状况以及解决方法记录清楚,同时最后归类及定期整理。别以为您还年轻,等你再弄多几年计算机了, 您将会非常庆幸您有此一习惯。
- 在网络上看到的好文章,自留一份。
- 作为一个使用者,要人迁就机器;作为一个开发者,要机器迁就人。