Linux之前,Unix的历史

在1969年以前,电脑还不像如今一样普遍,不是一般的人可以碰得起的。它主要是用于军事领域,学术单位或者高科技用途。不但如此,早期的电脑还很难使用,因为那时输入设备只有读卡机,输出设备只有打印机,使用者也无法和操作系统互动。

那时候的程序员也非常可怜,因为他们写程序是在读卡纸上打洞,然后在由读卡机读取。如果打错一个洞,哈哈~那就非常惨了。

在那之后,由于硬件和操作系统的发展,使得后来用键盘进行信息的输入。但是在学校里面计算机只有一台,如果很多人要使用,还是非常不方便的。在1960年代初期,麻省理工学院(MIT)开发了一个系统,叫做“Compatible Time-Sharing System”,翻译为兼容分时系统。它可以让数个终端机连接到一台大型主机,类似于如下图:

在这里插入图片描述

此时的终端机,只有输入和输出的功能,并没有任何的运算能力,而且比较先进的主机也只能提供30个不到的终端机使用。因此在1965年左右,由贝尔实验室(Bell),麻省理工学院(MIT)和奇异公司(GE,或称为通用电气)共同发起了multics的计划。关于multics的详细计划可以参考http://www.multicians.org/网站的内容。在1969年左右,由于计划进度落后,和资金短缺等问题,贝尔实验室退出了该计划的研究工作。

1969年:Ken Thompson开发了一个小型的文件系统(file server system)
在1969年左右,Ken Thompson所在的贝尔实验室有一部闲置的机器没有人使用(DEC公司的PDP-7)。于是Ken Thompson想把一个游戏“宇宙大战”移植到这台机器来。但是他发现移植起来很困难,于是他就希望开发一个迷你操作系统来满足自己的需求。而在当时Ken Thompson的老婆和孩子去了美国西部探亲。经过一个月的奋斗,Ken Thompson使用汇编语言(Assembler)写了一组核心程序。该程序包括了一个文件系统和几个工具。这个系统就是Unix的雏形。当时称为:Unics

该操作系统有两个重要的概念延用至今:
1、所有的程序或者设备都是文件
2、程序只有一个目的:有效的完成目标

1973年:Unix正式诞生,Ritchie等人以C语言写出第一个正式的Unix核心
因为Ken Thompson写的操作系统是在太好用了,所以在贝尔实验室里面广为流传,并且经过多次改版。但是由于使用汇编语言来写的,所以可移植性很差。而在当时Ritchie根据当时的B语言,开发出来了C语言,然后和Ken Thompson合作,使用C语言来编写Unix的核心,最后正式命名Unix,并且发行。

1977年:重要的Unix分支–BSD诞生
贝尔实验室是隶属于美国的AT&T公司,当时AT&T公司对Unix采取的态度比较开放。在加上Unix使用C语言来编写,使他的可移植性非常强。在1973年以后,Unix便和学术界合作开发。最重要的合作伙伴就是加州伯克莱大学(Berkeley)

伯克莱大学拿到了Unix源码后,在Unix基础上增加了很多软件和编译程序,最终将它命名为BSD。Sun公司以BSD版本为核心,发布了商业版的Unix版本。

1979年:重要的System V架构和版权宣告
由于当时Unix的可移植性,并且没有版权纠纷,很多商业公司基于Unix开发自己的操作系统。如AT&T,IBM,HP和DEC等,都推出了和自己服务器相匹配的Unix系统。

因为操作系统的核心必须和硬件匹配,早期也没有所谓的“协议”这个概念,所以各个厂商产出的硬件也是不同的。因此他们操作系统只能在自己的硬件上面跑。当时也没有厂商针对个人电脑来开发Unix,所以早期也没有Unix出现在个人电脑上面。

直到1979年,AT&T公司推出了system V第七版的Unix后,这个情况得到了改善。最大的一个特色就是支持x86架构的个人计算机上。当时AT&T由于对商业因素的考虑,收回了Unix的版权。特别提到了不能对学生提供原始代码,同时还引爆了很多的商业纠纷

1984年之一:x86架构的Minix操作系统开始编写
在1979年的版权声明中,影响最大的就是就是学校里面教Unix源码的教授。Andrew Tanenbaum(谭宁邦)完全不看Unix源码,自动动手写了一个Minix。他从1984年开始写,到1986年完成并且出版相关书籍。

当时Minix不是全部免费的,网络上也无法下载,必须通过磁盘购买。磁盘中还会附上源码,供使用者学习。谭宁邦教授认为Minix主要用在教学方面,因此没有去修改Bug和打补丁。

1984年之二:GNU计划于FSF基金会的成立
Richard Mathew Stallman(史托曼)在1984年发起的GNU计划,目前我们所使用得很多自由软件,几乎均直接或间接受益于GNU这个计划。GNU计划的目的:建立一个自由、开放的Unix操作系统(Free Unix)

当时Richard Mathew Stallman(史托曼)只有一个人孤军奋战,要建立一个自由、开放的Unix操作系统是十分困难的,于是他就开始先写可以运行在Unix上面的小程序。开发期间史托曼绝不看其他软件的原始码, 以避免吃上官司。后来一堆人知道免费的GNU软件,并且实际使用后发现与原有的专利软件也差不了太多,于是便转而使用GNU软件, 于是GNU计划逐渐打开知名度。

虽然GNU计划渐渐打开知名度,但是能见度还是不够。这时史托曼又想:不论是什么软件, 都得要进行编译成为二进制文件(binary program)后才能够执行,如果能够写出一个不错的编译程序,那不就是大家都需要的软件了吗? 因此他便开始编写C语言的编译程序,那就是现在相当有名的GNU C Compiler(gcc)!因为当时C语言编译程序版本众多,但都是专利软件, 如果他写的C编译程序够棒,效能够佳,那么将会大大的让GNU计划出现在众人眼前!

但开始编写GCC时并不顺利,为此,他先转而将他原先就已经写过的Emacs编辑器写成可以在Unix上面跑的软件,并公布原始码。 Emacs是一种程序编辑器,他可以在用户编写程序的过程中就进行程序语法的检验,此一功能可以减少程序设计师排错的时间! 因为Emacs太优秀了,因此,很多人便直接向他购买。

此时因特网尚未流行,所以,史托曼便借着Emacs以磁带(tape)出售,赚了一点钱 ,进而开始全力撰写其他软件。并且成立自由软件基金会(FSF, Free Software Foundation),请更多工程师与志工撰写软件。终于还是完成了GCC,这比Emacs还更有帮助! 此外,他还撰写了更多可以被呼叫的C函式库(GNU C library),以及可以被使用来操作操作系统的基本接口BASH shell! 这些都在1990年左右完成了!

GNU的通用公共许可证
到了1985年,为了避免GNU所开发的自由软件被其他人所利用而成为专利软件, 所以他与律师草拟了有名的通用公共许可证(General Public License, GPL), 并且称呼他为copyleft(相对于专利软件的copyright!)

在这里,必须要说明的是,GNU开放了几款重要的软件:
1、Emacs
2、GNU C (GCC)
3、GNU C Library (glibc)
4、Bash shell

但是GNU的最初构想是建立一个自由的Unix操作系统,仍然无法实现,因为这些自由的软件都是基于又专利的Unix平台,直到Linux的问世。

1988年:图形接口XFree86计划
鉴于用户对图形化界面的需求,1984年由MIT与其他第三方首次发表了X Window System ,并且更在1988年成立了非营利性质的XFree86这个组织。所谓的XFree86其实是 X Window System + Free + x86的整合名称呢! 而这个XFree86的GUI界面,在1994年Linux的核心1.0版于中正式发布使用。

1991年:芬兰大学生Linus Torvalds的一则简讯
到了1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息, 宣称他以bash, gcc等工具写了一个小小的核心程序,这个核心程序可以在Intel的386机器上面运作, 让很多人很感兴趣!从此开始了Linux不平凡的路程!并且在1994年,发布了Linux的1.0版本。


GNU计划
自由软件:将软件本身和软件的源代码一起公布出来的软件。因为史托曼同时认为,如果你将你程序的Source code分享出来时,若该程序是很优秀的,那么将会有很多人使用, 而每个人对于该程序都可以查阅source code,无形之中,就会有一票人帮你除错啰! 你的这支程序将会越来越壮大!越来越优秀!

为了避免自己的开发出来的Open source自由软件被拿去做成专利软件, 于是Stallman同时将GNU与FSF发展出来的软件,都挂上GPL的版权宣告

自由软件的真谛:Free Software(自由软件)是一种自由的权力,并非是价格! 史托曼说自由度的意义是: 使用者可以自由的执行、复制、再发行、学习、修改与强化自由软件。

你所拿到的软件可能原先只能在Unix上面跑, 但是经过原始码的修改之后,你将可以拿他在Linux或者是Windows上面来跑!总之, 一个软件挂上了GPL版权宣告之后,他自然就成了自由软件!这个软件就具有底下的特色:
1、取得软件与原始码:你可以根据自己的需求来执行这个自由软件;
2、复制:你可以自由的复制该软件;
3、修改:你可以将取得的原始码进行程序修改工作,使之适合你的工作;
4、再发行:你可以将你修改过的程序,再度的自由发行,而不会与原先的撰写者冲突;
5、回馈:你应该将你修改过的程序代码回馈于社群!

但是你不能做如下操作:
修改授权:你不能将一个GPL授权的自由软件,在你修改后而将他取消GPL授权~
单纯贩卖:你不能单纯的贩卖自由软件。

那么自由软件也不能贩卖吗?当然不是!之前史托曼便借着Emacs以磁带(tape)出售,赚了一点钱。自由软件是可以贩卖的,不过,不可仅贩卖该软件,应同时搭配售后服务与相关手册。 这些是需要工本费的。

现在所有的Linux开发商,贩卖的都不是GPL授权的Linux,而是售后服务。如果你购买了Linux的安装光盘,他们会提供相关的手册说明文件, 同时也会提供你数年不等的咨询、售后服务和软件升级等服务。

因为既然是Open Source的自由软件,那么你的程序代码将会有很多人帮你查阅, 如此一来,程序的漏洞与程序的优化将会进展的很快!所以,在安全性与效能上面, 自由软件一点都不输给商业软件。此外,因为GPL授权当中,修改者并不能修改授权, 因此,你如果曾经贡献过程序代码,那么你将名留青史。

对于程序开发者来说,GPL实在是一个非常好的授权,因为大家可以互相学习对方的程序撰写技巧, 而且自己写的程序也有人可以帮忙排错。

对于我们这些广大的终端用户,GPL有没有什么好处啊?
当然有! 虽然终端用户或许不会自己编译程序代码或者是帮人家排除错,但是终端用户使用的软件绝大部分就是GPL的软件, 全世界有一大票的工程师在帮你维护你的系统,这难道不是一件非常棒的事吗?

Logo

更多推荐