【转载】闲话操作系统(二)
VAX是一种32位的小型机,因为它惊人的寻址能力(达4GB,尽管由于成本关系,大多数VAX机器也只配备了1M内存),DEC为它设计了革命性的换页技术,的确让Unix有点赶不上趟,但这项让DEC引以为傲的技术优势并没有保持多久,仅仅一年之后,一个叫做Bill Joy的来自Berkeley(加州大学伯克利分校,University of California
at Berkeley)的学生就在Unix上实现了这一技术。
Berkeley是一所很牛的大学,做为一所州立大学,它在很多领域都能和那些财大气粗的私立学校相抗衡,它不仅拥有数以十计的诺奖得主,而且还是许多社会潮流的源头,比如嬉皮文化、反越战运动等。在九十年代末的一次美国大学评比中,它的不少专业都名列前茅,比如文学、新闻等,当然,更值得说的是,它的电脑和电子工程技术专业名列全美第一,甚至把更鼎鼎大名的MIT、Stanford都甩到了后面。Berkeley与Bell Labs似乎关系不错,早在Thompson发表那篇宣言般的论文之前,就搞了一份Unix来用,还专门为此买了一台PDP-11/45,比较丢人的是,他们鼓捣了几天也没把Unix装上去,最后还得劳动Thompson亲自出马,呵呵。其实原因是出在Unix自身,因为他们买的那台PDP太高级,竟然配备了双硬盘,Unix那时还不支持。
其实早在此之前,Joy就已经致力于Unix的研发。在1997年年初,Joy就编写并发布了一个以BSD(Berkeley Software Distribution)命名的Unix版本(有个传说,说最初Joy用三天时间就写成了一个简陋但可用的Unix,忍不住怀疑搞操作系统的都是一伙超人~~~~:),BSD后来影响如此之大,足可与AT&T的原版相提并论。在第一版的BSD中,Joy就搞出了些新意思,他写了Unix中的第一个Pascal编译器(Pascal由瑞士的Niklaus Wirth教授于1970年发明,是一种影响深远的语言,许多现代语言,例如Java都受过它的影响,尤其以应用于教学著称,当然也应用于许多实际的项目,著名的如Delphi,它甚至被用来写操作系统,Apple早期的MAC系统就是用他们自己的特殊版本的Pascal写的),以及Unix中的第一个全屏编辑器VI(到现在仍是Unix中最常用的程序之一,虽然编辑器出了无以数计,但能与VI相提并论的,大概也只有Emacs了,这又关涉到另一个大牛人,先按下不表:),另外,他还写了一个重要的C语言函数库termcap(也流行了好多年)。
AT&T于1983年发布了System V(简称SVR1,意为System V的第一版,在Bell Labs原版的基础上吸收了一些来自其它版本的技术),此后便一直沿用这一名称。直到1993年AT&T将UNIX卖给Novell之后(连同拥有UNIX产权的子公司USL,Unix System Laboratories),Novell仍使用了一段时间,最后一个System V版本是Novell于1993年12月推出的SVR4.2MP(MP是“多处理器”的意思)。而最先的那个版本(以Version x命名)Bell Labs仍继续发展了一段时间,直至1990年推出的Version 10。但SV系列推出后,这一系列影响就小了,大多数UNIX的变种都是源自SV系列和BSD系列,而SVR4本身就吸收了BSD系列的一些东西(主要是TCP/IP协议栈)。
UNIX技术虽然广受欢迎,但这一商标本身似乎并未创造很大的价值,AT&T大概是因为受条约限制,据说在它身上只赚了几亿美元,而Novell也没能很好地利用它,Novell后来将自己的Netware与SVR4相结合,推出了Unixware,随后就将UNIX的商标权卖给了X/Open
Company。到了1995年,干脆把Unixware也卖给了SCO(Santa Cruz Operation,这家公司好象不太厚道,前两年因为Novell转向发展Linux,SCO以不太站得住脚的原因起诉Novell侵权,同时还告了IBM,因为诉讼对Linux非常不利,激起公愤,我记得当时《电脑报》以很少见的激烈言辞在头版予以报道)。
X/Open Company在1996年与OSF (Open Softare Foundation)合并,成立了The Open Group。这个非赢利组织到目前为止拥有着UNIX的商标权,实际上,经过这么一番复杂的变迁,UNIX这一名称似乎已经谈不上有多大的商业价值了,更多的是一种标准和象征。The Open Group负责发布和维护Single Unix Specification(UNIX规范),后来ISO(国际标准化组织)发布的UNIX标准主要就是照这个来的。关于UNIX还有一个重要的标准,就是由IEEE(电气和电子工程师协会)发布的POSIX(Portable Operating Systems
Interfaces for Computer Environment,Linux最初就是照着这个葫芦画瓢来实现与UNIX的兼容的:)
有关AT&T的叙述告一段落,再说两句Thompson和Ritchie,与这两位牛人告别:)。就象顶尖的物理学家只对大问题感兴趣一样(一般是在证明一种理论后就转向研究其它,那些细枝末节的问题就交给那些实验物理学家了),在发明UNIX之后,他们并没有在这上面花费太多功夫,除了做一些本职工作的研究之外(例如IP电话),他们还继续对操作系统进行探索。由于UNIX的核心设计完成的如此之早,Thompson他们虽然天纵英才,却也没能料到计算机的发展如此日新月异,UNIX最初是作为一个基于单机的分时系统来设计的,这显然不符合当今潮流,虽然仗着它高效、稳固以及灵活的可扩充性设计,在今天的网络时代仍挑着大梁,但在新兴应用层出不穷的情形下不时表现出的核心技术的滞后让Thompson他们颇为不爽,于是他们决心搞一个新玩意。
在80年代后期,Thompson和Ritchie开始开发Plan9(1995年推出)。这个看上去与UNIX颇为相似、仍旧以C语言编写的操作系统是全新的,它面向网络和分布式计算,在一定程度上,它提出的概念有点类似上世纪末Oracel和SUN他们提出的NC(NetWork Computer),或者叫“瘦客户端”,核心理念就是把网络里的运算能力集中起来,客户机则用不着太快。在Plan9系统的网络里,有一个“CPU服务器” ,它来处理大多数的运算请求,然后将结果返回到各客户端。这一构想很早就有人提出,所以Thompson他们也好,Oracel他们也好都不算是发明创造,在今天,这种应用也很普遍(比如Google,海量信息的搜索和查询请求的处理就是在服务器端完成的,大多数网络开发技术都是基于服务器端),但在系统级的架构上实现这一理念,Plan9首开先河。而且令人兴奋的是,Plan9顺应了开源软件的大潮,大家可以去Bell Labs或者Vita Nuova(经营Plan9和Inferno的公司)的网站上下载到它附有源码的版本。
后来,Thompson和Ritchie还主持编写了一个叫做Inferno的系统(1996年推出),这个系统基于一种叫做Limbo的语言(这个主要是Sean Dorward设计的,Thompson曾特意声明,大家别搞错了,呵呵:),在概念上与JAVA比较类似,它有一个通过Limbo语言接口的交互层,即可以做为一个单独的操作系统安装,也可以作为一个应用程序在别的操作系统中运行——就象JAVA虚拟机(SUN也曾做过纯JAVA的操作系统,不过好象效率低下,没能推广开),Inferno比JAVA推出的略晚一些,但考虑到研发的时间因素,分不清谁先谁后,不过Thompson说Limbo要比JAVA清爽,当然这只是一面之辞:)。
除了计算机之外,Thompson和Ritchie的爱好就不大相同了。Ritchie喜欢古典音乐,但并不发烧,通常只在收音机里听听,Thompson喜欢流行音乐,而且非常发烧,他收集了几万首上过排行榜的流行歌曲——以一种Bell Labs发明的叫做PAC的压缩格式,音质远超MP3,而且他透露大多是“非法”取得的(相信不少同志有过类似行为:)。Ritchie喜欢旅行,规规矩矩的那种,比较出格的也就是开开大卡车,Thompson就比较猛,他喜欢开飞机,而且水平不错,在前苏联时代,曾经开着飞机过去跟他们的米格-29比试了一番。现在Thompson己经退休,当上了飞机教练,Ritchie则还在Bell Labs工作,当上了领导,负责系统软件研发部门,主要工作不再是写代码,改成了开支票(按咱们时下的流行理论,这也算是程序员修成了正果,呵呵)。Ritchie曾经与Brian W.Kernighan合写了《The C Programming Language》,是计算机科学的经典名著(单就发行量似乎不如谭浩强那本,但影响不可同日而语),世界上最著名的程序--“Hello,World.”,就是在这本书里首次亮相:)。Ritchie低调而自负,自称没有偶像,唯独对Thompson赞赏有加,他拒不承认对UNIX的贡献与Thompson一样多,并声称Thompson的编程水平自己望尘莫及。而Thompson似乎是个乐天派,他自称做过的几乎所有事情都是出于个人爱好——我真希望自己也能说出同样的话来。
1983年,Thompson和Ritchie荣获图灵奖,首开以软件工程师而不是计算机科学家的身份获奖的先例,并促使图灵奖开设了一个新奖项——软件系统奖;199年,他们俩又获得了“全美技术勋章”,作为程序员,他们获得的荣誉可算是登峰造极了。但Thompson对当今计算机业的看法却不太令人鼓舞,他说计算机业已经进入了中世纪,不再那么令人兴奋,他建议自己的儿子选择生物工程,而不是计算机,顺便说一句,Thompson曾经细读过Linux的源码,对这个新一代的传奇评价不高,进而对整个计算机业的技术发展似乎都比较失望。比起二、三十年前,现如今的IT业的确商业味更浓,而革命性的创新鲜见,如果真如Thompson所言,如今是处于计算机业的“中世纪”的话,真希望能早点等到“文艺复兴”的到来:)。
Joy从小是个天才儿童,5岁就开始做高等数学习题——计算机牛人好象都是小时了了、大了亦佳:),比如Neumann,也是很小的时候,大概念小学的年纪,就可以玩转微积分。H.Poincare曾说数学家是天生的,不是造就的,计算机科学家也差不多,天分可能更重要一些(我可没说努力不重要)——15就考上大学。他考研时立志学计算机,当时计算机系最牛的几个大学,Stanford、CIT(California Institute of Technolog,加州理工学院)还有Berceley都录取了他,选择Berceley则是因为那儿的计算机设备最差,Joy觉得这样有利于自己发挥创造才能(牛人果然是与众不同:)。但Joy大概是因为忙于搞开发,Ph.D读了6年也没搞到手(拿一个正经的学位确实不容易,Linus一个硕士也读了好多年:),Joy一看,还不知道得念到什么时候,就把心一横,跟着别人开公司去了(辍学也是牛人们一个传统的说:)。
当时搞UNIX研发的并非只有Berkeley一家,只因Berkeley出了Bill Joy这么个大牛人,一下子把别人都压下去了,到第三版(就是可以完美支持VAX机的那一版)推出后,风头之健,更是盖过了Bell Labs,成为UNIX技术发展的中心,因为这样的优势地位,不久之后,一个巨大的机遇找上门来。
1979年,DARPA(Defens Advanced Research Projects
Agency,美国国防部高级研究计划局)开始着手一项计划,全面更新他们的ARPAnet(一个用于连接他们散落在美国各地研究中心的计算机的网络
,Internet的前身)。早期运行ARPAnet的都是些PDP-10,现在已是风烛残年,该退休了,DARPA准备换上新型的VAX机来接班,加上前两年开发的TCP/IP协议(Transimission Control
Protocol/Internet protocol)也得借这次机会登台亮相,这将是一次脱胎换骨的大换血。DARPA首先想到的是找DEC,毕竟VAX就是他们的产品,但他们需要对操作系统进行大幅度的修改,想到DEC对于自家VMS的保守态度,上门搞不好要碰个大钉子,自己动手吧,又没下嘴的地方——正犹豫间,BSD的出现让他们眼前一亮——完全支持VAX,可获得源码,可定制,可移植,简直就是个度身定做的系统!
于是他们找上了Berkeley。Berkeley当然是有见识的,这么有意义的活计上哪去找,共襄盛举那是求之不得啊,于是在1980年两家就签订了一个合同,由DARPA资助Berkeley发展UNIX,以满足DARPA的需要。Berkeley为此专门成立了一个小组叫做CSRG(Computer System Research Group),由Bob Fabry教授负责(就是将UNIX引入Berkeley的那位),Fabry当然很想Joy参加进来,但当时Joy刚通过Ph.D.的考试,为其学业着想,Fabry也不好意思去找他,但没多久Joy就主动找上门来了(一点不奇怪,他不参加倒真奇了怪了:)。
且说DARPA的一个主要要求就是要将TCP/IP协议集成到UNIX中,他们此前就找了一家叫BBN的公司写好了协议栈,CSRG就安排Joy来做集成工作。没想到的是,没过几天,Joy就完成了——这没什么稀奇,稀奇的是,他根本没用BBN写的协议栈,他居然自己重写了一个,原因竟是,他嫌BBN的那个写得太烂!要知道BBN的那玩意可是一项巨额合同的成果,BBN和DARPA这下觉得太没面子了,肯定有内情,就开会研究,请Joy参加。且说Joy穿着件T恤,蓬头垢面的就进了会议室,满坐西装革履,看着这小子不觉有点发呆,回过神来就问他,你是怎么写出来的(估计还存着念头,以为他以前做过相关研究什么的)?没想到回答简直让他们喷血,Joy说,这个嘛,很简单,你读协议,然后编码,就行了。:)
最早集成Joy所写的TCP/IP模块的BSD版本是4.1a,跟BSD之间隔了两个版本,4.0和4.1。这两个版本的进步不算大,4.0版主要是加进去一个Lisp系统(Lisp是一种资格极老的语言,由MIT的John McCarthy教授于1958年发明,仅比史上最早的高级语言——1957年由IBM开发的Fortran——晚了1年而已,这种设计理念奇异的语言非常与众不同,它对程序与数据不加区别,对其缺乏了解的人看到它浑然一体、遍布密密麻麻括号的源程序肯定会一头雾水,但它有着强大的表达能力,尤其适合符号和文字处理,是AI(Artificial Intelligence,人工智能)领域的首选语言——目前可能是它的一个变种Scheme用得更多些,著名的AutoCAD自带的脚本语言AutoLisp就是基于它,还有著名的Emacs也是Lisp写的,还附带一个完整Lisp版本——Emacs Lisp),以及一个增强的邮件处理系统,这个版本的生存期只有几个月,因为它存在一些严重隐患,大家抱怨颇多,于是CSRG很快就推出了4.1版,这个版本主要是对4.0版做了些修修补补,此外大一点的改动就是增加了自动配置代码功能。
本来按Berkeley的命名规则,4.0版过后就应该是5.0版,但这时AT&T有意见了,因为他们自己推出的UNIX就叫System V,两个5容易混淆。BSD本来就是从AT&T那儿发展来的,人家一直都很宽容,况且到当时为止,AT&T的代码都还没替换干净,吃人家的嘴短,当然不好争什么,于是Berkeley决定,4字头就不往上升了,以后的版本只升小数点以后的数字(有点致敬的意思,好比芝加哥公牛队在乔丹退役后就不再使用23号球衣:)。
而4.1a这个版本相当于现在软件的α版(内部测试版),Joy不仅为它集成了TCP/IP,还增加了多网络协议的支持能力,多个网络协议可以同时使用,这在以后成为操作系统的设计标准。因为4.0版的失败,所以CSRG决定发布新版本要慎重一点,所以先自己试用,但与现在的情形一样,这个版本还是流传了出去,并勾起了大家的兴致,不少FANS开始对4.2版充满期待。
但4.2版的诞生颇为艰难,自1982年4月4.1a版发布开始,又过了1年零4个月,中间经历了4.1b和4.1c两个非正式版本,经历了Bob Fabry(还记得他吗?CSRG的BOSS,UNIX由他引入Berkeley,他的离去很大程度上是因为不堪重负——这种高强度的开发工作是很折磨人的)和Bill Joy(他于1982年以唯一一名技术人员的身份与Scott McNealy等4名Stanford的学生一起创办了SUN公司,如你所知,这是当今最著名的生产UNIX机器的公司,但他关于BSD的工作仍持续了好几年)的离去,才于1983年8月正式发布。
这一版本非常成功(尽管问题也不少,主要是因为一堆新增的功能还没有很好的优化),发行量超过以往版本的总和,并且打败了AT&T的System V,成为广大UNIX厂商制作移植版本的首选,著名的如SunOS 4就是基于它,AT&T在SV的后续开发中也集成了4.2版的许多精华(抄袭是最好的赞美,谁说的来着:)。事实上,这一版本影响如此深远,尤其是其网络模块,此后几乎所有重要的操作系统都从中借鉴,更有一些是直接拿过来用。
除了骄人的网络功能,4.2版还有许多其它方面的重大进步,如:新的、更强大的文件系统以及磁盘配额机制,新的信号机制,以及独立出来的输入/输出系统,还有全新的文档——这些都是大动作,而且就这还是迫于发布压力进行了妥协,不然还准备对交互通讯机制和虚拟内存管理模块开刀:)。
所有人都表示赞赏——除了BBN(就是那个写了最初的TCP/IP协议栈并被Joy给否了的公司)。他们对Joy的那一箭之仇一直耿耿于怀,于是不停地向DARPA抱怨,说自己的理念是如何先进,设计又是如何优秀,BSD如果采用了我们的模块一定会跑得更欢云云~~~~,DARPA也不禁动了心,就责成CSRG重新评估BBN的代码,CSRG的高手一看,也确实有可取之处啊,但要说把自己的代码给换掉,也未见得可行,毕竟自己的代码此时已是经过考验的,于是就提出一个折衷方案,把两套代码都包含进去,由用户选择。但这下DARPA又不同意了,这可是网络模块,搞两个政府,自立山头,不是明摆着添乱吗?坚决不行!公说公有理,婆说婆有理,这也不是办法,于是干脆,DARPA请了个第三方的专家——Ballistics实验室Mike Muus来做评估。Muus忙乎了一个月之后,结果出来了,Joy的代码通过了所有测试,而BBN的呢,在高负荷的时候时不时会死给你看:)。于是DARPA拍板,新版本继续使用Joy的代码,BBN这下郁闷死了~~~:)。
4.3版过了三年才发布(1986年6月),尽管间隔时间如此之长,但这一版远没有4.2版那么富于革命性,它主要是对4.2版做了些修补和优化,虽然反响不错,但也仅此而已,对业界的影响远不能与4.2版相提并论。比较值得一提的是,在发布后的晚些时候,CSRG的两个牛人,叫做Casey Leedom和Keith Bostic的,对这一版做了一次匪夷所思的移植。
从第3版开始,BSD就是基于VAX机在搞开发,VAX是32位机,通常配有1M内存(两个内存块,每块面积有4分之1平方米,还可以配更大,寻址能力4GB,即2的32次方)及高速的磁盘(容量通常为5MB或10MB,很惊人的说~~~~),所以BSD可以实现诸如内存换页以及新文件系统等技术革新,而Leedom和Bostic现在要做的,是将4.3版移植到PDP-11上。PDP-11我们应该都比较熟悉了,UNIX的第一个正式版本就是在它上面完成的,它是DEC经典的16位机,作为那个年代流传最广的廉价计算机之一,可以理解,它拥有为数众多的FANS。但无可否认,到了1986年,它早已落后了(事实上这时连VAX机都已年满8岁,颇显老态,1年前连微处理器都发展到了32位的Intel 386),以它可怜的64K的内存寻址能力(即2的16次方,这个限制对促进UNIX短小精悍的应用程序设计风格意义重大,不得不说,硬件的简陋往往能促生优秀的软件设计,这一点在Palm系统上也得到了证明)、512K的磁盘要跑4.3BSD简直是说梦话,CSRG里的大多数人虽然都很怀疑,但还是支持他们两个试试看(这么好玩的事换我也会支持,想想看,谁要是能把Windows NT移植到286上面~~~~,呵呵)。让人大跌眼镜的是,这两个牛人不仅移植成功,居然还跑得很好——UNIX的可移植性真不是吹的:)。这个跑在PDP-11上的新系统被命名为2.11BSD(2BSD原本是最后一个在PDP-11上开发的版本),具备和4.3BSD差不多相同的功能,很受PDP-11用户的欢迎,一直陪伴许多PDP-11工作到寿终正寝,据说直到今天,在世界上的某些角落,偶尔还可以找到跑着2.11BSD的PDP-11(PDP-11起码也有30多岁了,不管是作为一台计算机还是作为一个电子设备,这样的高寿都很值得骄傲的说,而2.11BSD作为一个软件,20多年的寿命倒不算太难得,一些行业用户的程序往往非常古老,比如一些银行系统里大型机上的Cobol代码,有三四十年历史也不稀奇)。
4.4版的BSD于1994年6月发布,这一BSD的最终版本距离4.3版足有八年之久(Vista有望一比,巧的是,微软也吹风说Vista可能是传统Windows的收关之作,集大成者想来是得多些时间酝酿),虽然间隔如此之久,但4.4版也说不上有太大的技术进步(大概是4.2版用力过猛,加上别的问题困扰,CSRG一直没缓过劲来),但它解决了一个很关键的非技术问题,可说是意义非凡。这八年中曲折甚多,值得一说。
截止1986年,4.3BSD除了一个BT的PDP-11移植版外,并没有向其它机器移植,一定程度上是因为系统中有许多针对 VAX特有硬件的设计,移植并不容易,而此时VAX已日薄西山,开拓***域迫在眉睫,CSRG想一劳永逸地解决这个问题,于是由Joy操刀,将BSD的内核分离成两块,一块依赖于机器,一块则独立于机器,这样可以大大简化移植工作的难度。这项工作于1988年完成,CSRG发布了一个叫作4.3BSD-Tahoe(Tahoe是加州的一个高山湖,旅游胜地)的版本,于是许多移植工程就基于这一版展开了。
这时另一个问题又暴露出来,因为BSD中包含有AT&T的代码,如果想获得BSD代码的使用权,你还得向AT&T购买一份源代码许可证,随着BSD越来越受欢迎,AT&T的价码也是越来越高(最初只要一万多美元,后来涨到好几万),许多人就开始抱怨,尤其是那些计算机公司。他们多半看中的是BSD中的网络模块,而这一部份根本不关AT&T的事(实际上AT&T自己的SVR都是用的BSD的网络代码),现在却非得去出这一份冤枉钱,实在是太亏了。于是许多人都建议CSRG把AT&T的代码去掉,把网络模块单独拿出来卖,或者干脆搞一个完全属于自己的版本(著名Hacker,自由软件的倡导者Richard Stallman早在1987年就向CSRG提出过这种建议,当然他是站在更高的立场,是为了让UNIX摆脱商业公司的束缚)。
完全去除AT&T的代码的代码是一项大工程,所以CSRG先拿出了一个叫做Networking Release 1的东东。这不是一个完整的系统,而仅仅是一个网络模块,该版本于1989年发布,同时发布的,还有CSRG对这一版本拟定的一个许可协议。也许是受了Stallman的GPL(General Public License)的影响,这个协议鼓励修改源码和再次发布,而且它非常宽松,比GPL宽松得多,它允许再次发布时只发布二进制版本,而不附带源码(这在GPL中是不允许的),只需附带完整的版权声明即可(“完整”的意思是,要把该软件的渊源交待清楚,包括它来自Berkeley,以及中间还经过谁谁的修改——怎么觉得有点象纪念碑,呵呵)。后来在Networking Release
2发布时仍使用了这一协议,到4.4版发布时,这一协议演变为BSD License,后来FreeBSD又将其修改为FreeBSD License,基本上也都大同小异(因为许可太宽松,所以很多人都把FreeBSD拿过来,修改一番再拿去卖,比如前些时闹的沸沸扬扬的所谓国产操作系统“麒麟”,只是国防科技大学他们(还有其他几个公司,不一一点名)的做法未免有失厚道,不遵守版权协议也就罢了,还企图掠人之美、瞒天过海)。
这样宽松的许可协议,等于认可一个人买下后,就可以无限制的Copy给其他人,事实上也正是这样,刚一发布,就有一些著名的FTP站点提供开始匿名下载。虽然如此,CSRG还是卖出了几百份Copy,每份定价$1000,算下来也有几十万美金,在那些财大气粗的公司看来这点小钱简直不值一提,但CSRG的人还是很开心:)。
1991年,CSRG发布了Networking Release 2。与Networking Release 1一样,这个版本完全由CSRG的代码构成,不同的是,它的内容要比Release 1要丰富的多,接近于一个完整的系统。
在这两年里,CSRG除发布了一个试验性质的4.3BSD- Reno之外(这个版本比较奇怪,它的主要改进是加入了来自Mach操作系统的虚拟存储模块,以及来自SUN的网络文件系统(NFS),不仅代码是采取拿来主义,连集成工作也是由来自别的大学的志愿者捉刀,Reno是Lasvegas的一座纪念建筑,用意在于表明选用这一版本的风险),大量的精力被用来剔除AT&T的代码,这一工作主要由Keith Bostic、Mike Karels和Marshall McKusick完成,事实上到Networking Release 2发布时,AT&T的代码已经被替换的差不多了,仅剩下6个核心文件没有重写。
Release 2被CSRG当作发布完全自主版本的一个尝试,沿用了Release 1的发行方式,虽然加了很多料,但定价一样,销量也差不多。在发布6个月之后,Bill Jolitz把剩下的6个文件也重写了一遍,并把整个系统移植到386架构上(在此之前己经有BSD的PC移植版,但影响不大),发布了一个新版本,叫做386/BSD 0.1(Linux发布之初,也采取了这样谨慎的命名方式),它完全免费,Jolitz还专门建了一个Ftp提供下载。这时PC早己是星火燎原、深入人心,可以想象,这一举措受到了热烈欢迎。
当前流行的所有BSD版本都是源自386/BSD,但386/BSD自身发展的却并不好,照Jordan Hubbard(FreeBSD和Darwin的创立者之一)的说法,在NetBSD、FreeBSD诞生之后,它很快就象渡渡鸟一样绝迹了。Jolitz技术上很牛X,但似乎缺乏人际交往和组织管理方面的能力,因此386/BSD的开发团队很快就分崩离析了,我看到Hubbard在一次访谈中对他抱怨颇多(人无完人,其实技术牛人出现这种状况也很常见,更著名的如William Shockely,这个大牛人、晶体管的发明者之一,甚至在当公司老板时获得了诺贝尔奖,但终因傲慢与独裁,导致手下的人才流失殆尽,本来前途无量的公司最终落得个惨淡收场,但另一方面,Fairchild和Intel倒也可说是拜他所赐 :);还有,John Carmark,这个许多人眼中最牛的程序员,在管理和沟通方面也曾陷入困境,如日中天的ID
Soft差点被他整熄火,但他运气不错,最后算是跌倒了又爬起来:)。
此外还有一些别的版本,比如Apple的NeXTStep(本来是Jobs自立门户期间一个野心勃勃的项目,NeXT于1996年被Apple收购,Jobs借此机会归了队,NeXTStep的设计后来被融入osX),以及MACos X的核心Darwin(尽管MACos X是一个专有系统,但Darwin本身其实是一个开源项目),还有一个2003年才推出的版本DragonflyBSD,它源自FreeBSD4.X,因为有一伙人对FreeBSD5的发展方向不满,于是就派生了这么个分支。
以上这些现在只简单提两句,后面会作进一步介绍,回过头接着说BSD的事。
Networking Release 2发布几个月后遇到了一点麻烦。一个新成立的公司BSDI(Berkeley Software Design)自作主张,把Networking Release 2缺少的那6个文件补了上去(应该就是直接用的 AT&T的代码),凑了一个相对完整的版本拿出来卖,价格只要$995,当然也带源码,他们做了些夸张的广告,声称比System V要便宜99%云云。于是USL(就是AT&T的那家子公司)一怒之下,就把它告了。但BSDI辩称自己用的是BSD免费发行的代码,要说有问题也就那6个文件可能有点问题,于是USL捎带着把加州大学(Berkeley是它的分校)也告上了,要求他们停止发布被认为是侵权的软件。Berkeley也被惹火了,稍后对USL提出了反诉,借口是System V使用了BSD代码的署名权问题。
经过一番热热闹闹、缠夹不清的诉讼程序之后(其间USL被Novell从AT&T买走,Novell对此案件的态度比较温和),两家还是坐下来用谈判解决问题,最终在1994年1月达成协议,Networking Release 2的18,000个文件中有3个被删除,还有几个作了少量修改,另有70个加上了USL的版权声明,但仍免费发放。总而言之,没怎么伤筋动骨,这场经历了两年多的热闹最终是雷声大雨点小。
CSRG现在总算有精力干点正经事了。1994年6月,他们终于发布了4.4BSD,而且同时发行了两个版本,一个叫4.4BSD-Lite,一个叫4.4BSD-Encumbered,这完全是因为版权问题。4.4BSD-Lite完全是自有代码(而且终于获得了USL的认可),但功能不太完整,Encumbered则是一个功能完整的版本,但仍需要用户买一份USL的源代码许可。不出意料的是,仍是那个功能单薄点、但完全自由的4.4BSD-Lite更受欢迎,它成为BSDI、NetBSD、FreeBSD等发行版本新的代码来源。
1995年6月,4.4BSD-Lite release2发布,从版本号就看得出来,这是一个缝缝补补的版本,实际上这期间CSRG已经没怎么搞开发,仅仅有一个人在兼职搞善后罢了。release2发布的同时,CSRG宣告解散,官方说法是,BSD已发展的相当成熟,对于操作系统的研究目标已经达到。十五年的光辉岁月,大量牛人出没其中,并在此扬名立万,CSRG这个名字在计算机历史上已堪称不朽。