📘 欢迎关注博主的掘金:暮星的主页
正文
早期计算机很原始,输入设备只有读卡机,输出设备只有打印机,用户也无法和操作系统互动(批处理操作系统时代)。
就算是这样,那个时候计算机也不是一般人碰得起的。一个学校可能也就一台主机,很多个人都等着使用,怎么办?于是麻省理工学院开发了一个操作系统:兼容分时系统,它让主机可以连接数个外部终端,这些终端都可以进入主机,并利用主机资源。
此时的终端只具有输入和输出功能,本身不具任何运算或软件安装能力。而且当时比较先进的主机大概也只能提供 30 个左右的终端。于是,Bell(贝尔实验室)、MIT(麻省理工学院)和 GE(通用电气公司)共同发起了 “Multics” 计划。该计划目的是想让大型主机可以实现提供 300 个以上终端用于联机。
在认为 “Multics” 计划不可能成功之后,贝尔实验室退出该计划。 可实验室的一名开发人员醉心于计划中开发的一款叫太空旅游的游戏,由于实验室退出计划他没法玩了(软件与操作系统与底层硬件之间的关系)。他想着把这款游戏移植到自己手上现有的机器上来,于是他以汇编语言,写了一组内核程序,同时包括一些内核工具程序和一个小小的文件系统,这就是 UNIX 的原型。
他写的这个操作系统太好用了,在实验室内部广为流传,当时叫 Unics。但当时是以汇编语言写的,汇编语言具有专一性,加上当时的计算机架构都不太相同,所以每次要安装到不同的计算机上都要重新编写,很不方便。于是他和他一个朋友,想改用高级程序语言来编写。
但是现有的高级程序语言就是 B 语言,由于 B 编译出来的内核性能不是很好,所以他朋友就改写 B 语言为 C 语言,再用 C 重新改写 Unics 内核,最后命名并发行了 UNIX 正式版本。
UNIX 是以高级程序语言 C 写的,与硬件相关性没有这么大,所以 UNIX 很容易通过对其源代码加以定制后移植到不同的机器上面。
由于当时贝尔实验室的隶属公司 AT&T 对 UNIX 持开放态度,人们能拿到 UNIX 的源代码,UNIX 便得以与学术界合作开发,许多学校教授拿源代码来跟学生讲课,同样是没有版权纠纷的原因,很多商业公司也开始了 UNIX 操作系统的开发,且与自家的硬件相结合,如 IBM 的 AIX 系统【现如今很多 IBM 的小型机的操作系统】。
后来出于商业考虑,AT&T 想把 UNIX 的版权收回去。在 1979 年发行第七版 UNIX 中特别提到“不可对学生提供源代码”,影响到了当时在学校教源代码的教授。其中一位教授就手写了 Minix 这个 UNIX-like 的内核程序(1984-1986),为了避免版权纠纷,没参照 UNIX 源代码。
教授很忙,而且他始终认为 Minix 主要应用于教育,便对 Minix 点到为止,它无法在用户需求上上升到更高的程度了。Minix 并不是完全免费,无法在网络上下载,很大程度上影响了它的传播速度。但是购买磁盘的同时,也会附上 Minix 的源代码,意味着用户可以学习其内核程序设计概念,这点为以后 linux 的产生奠定了基础。
斯托曼,一个计算机大牛,在 1983 年后,由于实验室硬件更换,导致他无法以原有的硬件与操作系统自由地编写程序,于是他转战 UNIX。结果他发现他原来已经写好的软件无法在 UNIX 上运行,于是他开始将软件移植到 UNIX 上。为了让软件可以在不同平台上运行,他将源代码公布出来,均编写成可以移植的形式。1984 年,在教授开始写 Minix 的同年,斯托曼开始发起 GUN 计划,这个计划对后来意义重大的自由软件运动起了不可磨灭的推动作用!
GUN 计划的目的是建立一个自由、开放的 UNIX 操作系统。但是操作系统太麻烦,斯托曼就先写可以在 UNIX 上运行的小程序,为 GUN 计划打开知名度。写了一堆免费的 GUN 软件,GUN 计划的知名度也渐渐打开,可是还不够,于是乎斯托曼就想写一个大家都需要的软件。他想到了编译器,于是着手开始写 C 语言的编译器,才有了现在相当有名的 gcc。当时斯托曼还成立了自由软件基金会(FSF),请更多的工程师和志愿者编写软件。
斯托曼先生认为,写程序最大的快乐就是让自己开发的好软件供大家使用。而如果使用者的编码能力比自己强,对方可以把自己的代码修改的更好,之后再回传修改好的代码给自己,无形之中也是一种学习。于是在这种思想的影响下,才有了后来的 GUN 计划和 FSF,而将源代码和软件程序一同发布的举动,引起了后来的自由软件运动。
到了 1985 年,为了避免 GUN 与 FSF 所开发的自由软件被其他人所利用而成为专利软件,斯托曼与律师草拟了有名的通用公共许可证(GPL) ,对这些开源的自由软件都使用 GPL 的版权声明。
GPL 于自由软件而言,强调了自由软件的重点不是指“免费”,而是体现自由度上。它赋予了用户可以自由地执行、复制、再发行、学习、修改与强化自由软件的意义,这点很重要!于是乎,你当然不可以将一个 GPL 软件的授权取消,即便你已经对软件进行了大幅度的修改。但这并不是说自由软件不可以销售,你可以销售,但是不能仅销售该软件,还应同时搭配售后服务与相关手册,就像现在商业版的 linux。
在钱的问题上,有几个概念需要区分。
开源和闭源与免费和收费的关系,开源不意味免费,只是说你在取得软件的同时,能获得源代码。
闭源也不一定以为着收费,很多闭源软件也是供公众免费试用的,只是你并不能取得它的源代码。
免费软件非自由软件,虽然它是免费的,但不见得要公开源代码,这要看发布者的意见。
有个特别一点的叫共享软件,与免费软件相似,它在初期也是免费的,只不顾过了所谓的使用期限后就开始收费了。这种软件都会自行编写失效程序,让你在试用期限后无法试用。
主角登场,1988 年, 林纳斯.托瓦兹在上大学期间接触到了 UNIX 操作系统,但当时整个大学只有一台最新的 UNIX 主机,同时仅能提供 16 个终端。漫长的时间会花费在等待使用上,他就想:为什么不自己搞台 UNIX 来用呢?就像当年斯托曼的 GUN 计划一样,要写一个操作系统内核,谈何容易呀。不过幸运的是,他后来知道了教授的 Minix,Minix 可以完全兼容 UNIX。买了台 Intel386 个人计算机,买了 Minix 的磁盘,托瓦兹将 Minix 安装之后,发现这真的是个很棒的操作系统。
历史总是会为未来埋下关键且精准的伏笔!得益于教授对 Minix 不深入开发的态度,Minix 无法满足工程师在操作系统功能上的需求,于是托瓦兹产生了“既然如此,我为何不自己改写一个我想要的操作系统”的想法。同样得益于,教授会给购买者提供 Minix 源代码的行为,托瓦兹得以通过源代码学习到了很多内核程序设计的概念。最后在 GUN 计划提供的 bash 以及 gcc 编译器等自由软件的辅助下,托瓦兹得以顺利开始编写内核程序。
1991 年,他完成了这个小小的操作系统,linux0.02。不像教授那样,他把这个内核放到了网络上供人下载,同时发布了一则消息,他希望能够得到更多人的建议与反馈来发展这个操作系统。这则消息引起了很多人的注意,大家都去托瓦兹提供的网站上下载这个内核来安装。当时,那个 FTP 网站的管理员,将存放这个内核的目录起名 linux(意即 linus的 UNIX),从此人们便称这个内核为 linux。
为了让自己的 Linux 能够兼容 UNIX 系统,托瓦兹开始将一些能够在 UNIX 上运行的软件拿来在 linux 上运行。不过他发现很多软件没法运行在 linux 内核上。于是这时他有两个选择:1.修改软件,让软件可以在 linux 上运行;2.修改 linux,让 linux 符合软件能运行的规范。很幸运他选择了第二个。
托瓦兹在编写内核时,开始参考标准的 POSIX 规范(一个内核与应用程序间接口的规范)。因为 POSIX 标准主要是针对 UNIX 与软件运行时的标准规范,让 linux 很容易能与 UNIX 兼容共享互有的软件。且 linux 是直接发布到网络上供大家下载的,流通速度很快,导致 linux 的使用率大增,使其大受欢迎。
用户在网上下载使用 linux 后,如果发生问题或由于特殊需求急需某些硬件的驱动程序时,他们都会主动反馈给托瓦兹。托瓦兹在他的能力内,都能对 linux 内核进行很快的更新和除错。可以一个人的力量总是单薄的,加上现实原因有些硬件无法取得,托瓦兹一个人无法进行有些驱动程序的编写和相关软件的改进,由此 linux 的发展进入第二阶段。
linux 是 GUN GPL 授权模式,linux 的内容绝不会涉及专利软件的版权问题。基于此,全世界各地的计算机高手和爱好者加入到 linux 的开发中来,托瓦兹手上没有的硬件,拥有它的各个小伙伴就会编写相关的程序并反馈给托瓦兹整合,导致 linux 的迭代速度很快【这也导致后面托瓦兹写了 git 来管理世界各地传来的代码】。
于是,在这群素未谋面的“团队”共同努力下,1994 年完成了 linux 内核正式版 1.0,1996 年完成了 2.0 版,2011年发布了 3.0 版…
写在最后
One day you’ll leave this world behind. So live a life you will remember ! — Avicii
我是暮星,一枚有志于在前端领域证道的攻城狮。
优质前端内容持续输出中…,欢迎点赞 + 关注 + 收藏。