Berkeley 二十年 UNIX 历史

作者:Marshall Kirk McKusick

翻译:孔祥波

修订:司徒彦南



关于作者

Marshall Kirk McKusick博士撰写关于Unix以及BSD相关话题的书籍、论文,参考,并教授相关课程。在加州大学伯克利分校(University of California

at Berkeley)时,他实现了4.2BSD快速文件系统,并作为计算机研究科学家在伯克里计算机系统研究小组(CSRG)指导4.3BSD和 4.4BSD的开发和发布。他的研究课题主要是虚拟内存和文件系统,并希望有一天能看到它们无缝地融合。他在康奈尔(Cornell

University)大学电子工程专业学习大学课程,并在加州大学伯克利分校完成了毕业设计,在那里获得了计算机科学及商业管理硕士学位,以及计算机科学博士学位。他曾担任Usenix协会主席,并且是ACM和IEEE的会员。



业余时间,他喜欢游泳,带着潜水器潜水,和收集葡萄酒。葡萄酒存储在地下室特殊结构的酒窖中(在http: //www.mckusick.com/~mckusick/index.html可以看到),在那,他和国内合作长达19年的好友Eric Allman分享品尝美酒带来的快乐。



早期历史

Thompson和Ritchie在1973年Purdue大学召开的操作系统原理研讨会上,发表了第一篇关于UNIX的论文。那时伯克利分校的Bob Fabry教授也在场,他立刻对UNIX产生兴趣,并得到一份拷贝,准备在伯克利做实验。



当时,伯克利分校仅有几台大型主机做批处理工作。因此,伯克利的计算机科学系、数学系和统计系联合订购了一台能够运行当时最新的第四版UNIX的PDP- 11/45。1974年1月,UNIX第四版磁带交付学校使用,并被研究生Keith Standiford安装到这台机器上。



那时,有太多系统需要Thompson维护,但在Purdue大学的Thompson还是没有直接参与伯克利UNIX系统的安装。由于在伯克利安装的系统出现几次奇怪的系统崩溃,这样一来就需要他这样的专家来解决问题。因为伯克利仅有一台300波特的声频偶合式调制解调器,且没有应答功能, Thompson不得不先通过电话通知在机房Standiford,让他将电话线插入调制解调器中,通过这种方法,Thompson得以在新泽西州对崩溃的系统进行远程调试、除错。



系统多次崩溃是由于硬盘控制器不能进行重叠性搜索引起的。相对于普通的文档搜索不同,伯克利的PDP-11/45是Thompson遇到的第一批在同一个控制器上有两个硬盘的计算机。Thompson的远程除错也是伯克利和贝尔实验室合作的一个例子。贝尔实验室积极肯干的研究人员乐于助人,同时也和伯克利分享工作成果,这在很大程度上促进伯克利软件的改进工作。



尽管Unix很快能够运行,并且比较稳定。但计算机系、数学系和统计系开始出现矛盾——数学系和统计系想要运行DEC的RSTS系统。争论之后,他们达成协议:每个系可以每班运行8小时的计算机系统;Unix可以在运行RSTS系统16小时后,再运行8小时。为公平起见,运行的时间段为每天轮换。因此,第一天Unix运行从上午8点到下午4点,然后是第二天的下午4点到午夜,而后是第三天的凌晨到上午8点。尽管有这样离奇的时间安排,参加学习操作系统课程的学生仍然喜欢在Unix而不是批处理机上做项目。



早期的发行版本

此间,对Pascal编译器的错误恢复工作的兴趣使得这一工作被引入了对系统的需求。1977年初, Joy完成了“伯克利发行版(Berkeley Software Distribution)”。这个发行版本包括Pascal系统,以及存放在在Pascal源码的晦涩的子目录下的ex编辑器。又过了一年,作为发行组的秘书的Joy,发放了大约三十份免费的系统拷贝。



随着提供指向显示缓冲区指针功能的ADM-3a终端的出现,Joy最终完成了屏幕编辑器vi,给Berkeley带来了全屏幕编辑器。他很快发现自己处在进退两难的境地。在学校,经费不足是常有的事,旧的设备根本就没有替换掉。他决定放弃进行代码优化和修改几个终端的支持工作,转而通过使用一个小的解释器去重画屏幕,籍此来改善屏幕管理。这个解释器通过描述终端的特性来驱动,这最终导致了termcap的产生。



到1978年中期,软件的发行版已经开始过时,需要修改。对于Pascal系统,日益增长的用户群体反馈了很多意见,根据反馈的意见修改后的系统更加稳定,同时也修改为两遍扫描,使其可以在PDP-11/34上运行,修改的结果定名为“伯克利发行第二版(Second Berkeley Software Distribution)”很快被缩写为2BSD,它包括了增强的Pascal系统,vi编辑器和几个终端的termcap在内。Bill Joy再次独自作了发行版软件的集成,答复用户的电话,并且把客户的反馈也集中在系统中。一年后,又发行了75份系统。然而,接下来的一年Joy转向另一个项目,而2BSD发布还在进行。其最终版本为2.11BSD,是一个至今仍运行在世界各个角落的几百台PDP-11上的完整的系统。



VAX Unix

1978年初,Richard Fateman教授开始寻找拥有更大地址空间的机器,以继续支持他在Macsyma上的研究工作(最初开始于PDP-10)。新发布的VAX- 11/780满足了要求,并出现在预算中。Fateman和三十个同事一同向NSF(美国国家科学基金会,译注)提出建议,并购买了一台VAX。



最初VAX运行DEC的VMS操作系统,但系里一直在使用Unix环境,并希望继续用下去。因此,在VAX交付之后不久,Fateman获得了一份贝尔实验室John Reiser和Tom London移植到VAX上的Unix——32/V。



尽管32/V在VAX上提供了第七版Unix环境,但它没有利用VAX硬件的虚拟内存功能。如同它在PDP-11上运行的先驱一样,它是完全基于交换的系统。对于Berkeley的Macsyma研究组来说,没有虚拟内存意味着进程的地址空间只能局限于物理内存,在新的VAX上,他的大小是一兆字节。



为了解决这一问题,Fateman找到了Domenico Ferrari教授,Berkeley系统学科部成员,来研究为Unix编写虚拟内存支持的可能性。Ozalp Babaoglu,Ferrari的学生之一,开始着手研究在VAX上实现页面系统,由于VAX没有引用位,他的工作遇到了难题。



在Babaoglu接近完成他的第一个实现的时候,他找到了Bill Joy,以寻求在理解错综复杂的Unix内核中遇到的困难的帮助。Joy由于Bill Joy而对这些工作产生了兴趣,并加入到将这些代码集成到32/V,以及后续的调试工作中。



不幸的是,Berkeley只有一台VAX,同时用于系统的开发和日常工作。因此,在圣诞节假期的几周内,富有耐心的用户群体发现他们交替地登录到了 32/V和“Virtual VAX/Unix”上。他们的工作经常在后面的系统中突然地挂起,几分钟之后,32/V的登录提示再次出现。1979年1月,绝大多数问题得到了修正,而 32/V正式成为历史。



Joy认识到32-位VAX很快就会让16-位的PDP-11果实,于是开始将2BSD的软件移植到VAX上。当我和Peter Kessler移植Pascal系统时,Joy移植了ex和vi编辑器,C Shell,以及2BSD中的无数小程序。1979年年底,完整的发行版被集成到了一起。这个发行版包括了虚拟内存内核、标准的32/V实用程序,以及 2BSD新增加的功能。1979年12月,Joy发行了3BSD的近百份拷贝,这是Berkeley在VAX上的第一个发行版。



贝尔实验室发行的最后一个Unix版本是32/V;其后,所有的AT&T Unix版本,从System III开始,以及其后的System V,转而由一个强调稳定的商业发行版本的小组继续维护。随着Unix的商业化,Bell实验室无法继续作为Unix研究的清静所在。随着研究团体对 Unix的继续修改,它发现需要一个能够制作研究性发行版本的组织。由于对Unix的早期影响,Berkeley很快进入了原先由贝尔实验室扮演的角色。



DARPA(美国国防部高级研究局)的支持

同时,DARPA部门的策划人的讨论对Berkeley的工作产生了重要影响。DARPA早期成功的计划是把他们的主要研究中心连在一起,形成一个全国的计算机网络。与此同时,他们也在这些研究中心寻找已到寿命的计算机,并且换掉它们。然而,比巨大的替换开销还大的是把研究的软件移植到新的计算机上。另外,由于硬件和操作系统的多样性,使得很多主机之间不能共享软件。



选择一个单一硬件的卖主是不契合实际的,因为研究小组对多种类型的计算机需要和不能单一的依靠一个制造商。然而,DARPA的决策者决定最好的方案在于操作系统的统一。经过多次讨论之后,由于Unix已被证实的可移植性,被选定为操作系统的标准。



1979年秋,Bob Fabry回应DARPA的关于移向Unix建议,向Berkeley提议,开发一个为DARPA团队使用的3BSD增强版本。Fabry 带着他的建议去参加DARPA图象处理的会议和约见VLSI的承包人,一同去的还有ARPAnet开发者Bolt,Beranek,以及Newman的代表。当时还为Berkeley能否开发一个工作系统心存怀疑;然而,1979年十二月3BSD的发布打消了他们的顾虑。



由于3BSD版本实现了他的承诺,3BSD声誉也随着大大提高,因此Bob Fabry和DARPA签定了一份在1980四月生效的长约18个月的合同。在这份合同的赞助下,Bob Fabry组建了名为“计算机系统研究小组”的组织,或者简写为CSRG。他很快雇佣了Laura Tong处理项目的管理。Fabry把他的注意力转向寻找一位能够管理软件开发的项目经理。Fabry以为已经通过Ph.D.资格考试的Joy,宁愿完成他的学位也不肯当软件开发的职位,然而Joy又有了其他的计划。三月上旬的一个晚上,Joy达电话往Fabry家里打电话,表示对掌管Unix进一步发展感兴趣。尽管这个提议使 Fabry很吃惊,但Fabry梢加考虑就答应了。



项目进展的的很顺利。Tong建立一套发行系统,能够使从Joy早先发行版处理大量的定单。Fabry开始同AT&T的Bob Guffy以及加洲大学的律师合作,制定使用者需要同意使用Unix的条款。Joy将Jim Kulp作业控制机制,还有自动重启动功能,1K-块文件系统,并且支持新型VAX-11/750。到了1980年十月,优化后的系统4BSD发布,包括 Pascal编译器、Franz的Lisp系统,和增强的邮件处理系统。在它9个月的生命周期中,大约卖出150份系统拷贝。许可的管理是通过以公共机构为单位的,而不是以每台机器来收费的;因此这个版本运行在500台以上的机器上。



随着发行版本大量增加,Berkeley Unix的可见性增加。几个评论评论家开始评论BSD。斯坦福研究院的工作人员撰写了一篇主要关于VMS和Berkeley Unix运行测试结果的论文,这些测试结果表明VAX运行Unix的几个严重问题。Joy看到这篇论文,立刻把未来的计划搁置了几个月,着手调整内核。几周以后,他基于Kashtan的测试结果回复一篇文章,表明Unix可以很好地运行在VMS机器上。



4BSD不断发行的同时,仍然处于细微的调整阶段。增加Robert Elz的自动配置代码之后的系统,于1981年6月发布,这个版本称为4.1BSD。在它两年多的生存周期内,大约发行了400份。原计划称为5BSD版本,然而,AT&T反对此事,宣称顾客可能会把它和商业Unix——System V混淆。所以,为了解决这个争端,Berkeley答应在未来版本命名计划中,主版本号停留在4BSD,只增加次版本号。



4.2BSD

随着4.1BSD版本的发行,很多关于性能的疑虑被解决。DARPA非常满意合同的结果。以致于又同Berkeley签定一份两年期的合同,而且这次的基金很多,大约是原来的5倍。这部分资金一半用来资助Unix项目,余下的分给计算机科学系的几个其他研究员。合同要求,主要工作放在系统研究上,以便 DARPA的研究人员可以很好地进行他们的工作。



由于DARPA团队的要求,确定了新的工作,并且开始据此对系统进改进。特别地,新系统希望包含能够适应新的硬盘技术的快速文件系统、支持GB级的进程地址空间、提供灵活的交互处理通讯机制,以支持在分布式系统下的研究工作,并且集成网络支持,这样能够使运行新系统的机器都很容易地连到ARPAnet。



为了帮助确定新系统的方案,Duane Adams作为DARPA在Berkeley合同的监督人,组织了“筹划指导委员会”协助指导设计工作,确保研究DARPA的要求得到满足。这个委员会在 1981年4月到1983年6月,共开了两次大会。委员会包括Bob Fabry、Bill Joy,和Berkeley的Sam Leffler、Alan Nemeth和Bolt的Rob Gurwitz、Beranek和Newman,贝尔实验室的Dennis Ritchie,斯坦福(Stanford)大学的Keith Lantz、卡内基梅隆(Carnegie-Mellon)大学的Rick Rashid,麻省理工(MIT)的Bert Halstead、Information Sciences Institute的Dan Lynch、Duane Adams和DARPA的Bob Baker,以及加洲大学洛杉矶分校的Jerry Popek。1984年初,这些会议被由更多人参加的主题讨论会取代。



1981年7月,在新系统中建议包含特性的原始文档交给“筹划指导委员会”和其他不在Berkeley的人那里,引起了很长时间的讨论。这年夏天,我成为 CSRG的成员,并且参与实现新的文件系统。整个夏天,Joy一直集中设计进程间通讯机制的原型。1981年秋,Sam Leffler也作为全职人员加入CSRG,同Bill Joy一起工作。



当Rob Gurwitz released在Berkeley发布早期的TCP/IP协议,而Joy则把它集成到系统中并优化了其性能。在这项工作中,Joy和Leffler发现新系统不应该只针对DARPA的标准网络协议,还应该支持更多协议。因此,他们重新设计了软件的内部结构,精炼了多个网络协议的接口,以便这些网络协议可以同时使用。



随着内部结构重建的完成,和TCP/IP被集成到IPC功能的原型中,还写了几个简单的程序,让本地用户可以存取远程资源。它们是熟知的rcp、rsh、 rlogin和rwho。它们是作为暂时性工具设计的,以至日后可以被其他更合理的工具替换(所以在命令前加了一个"r")。这个系统,称为4.1a,初次发行是在1982年4月,且仅供内部用户使用,也没有期望它广泛应用,然而它却加速人们对4.2 版本的渴望。



系统4.1a在它完成之前就过时了。但是,用户提供反馈有价值的信息,被用来建立一个修订计划“4.2BSD系统使用手册”。这份文档在1982年2月发行,其中包含将在4.2BSD中实现的为系统调用功能提供的接口的简要描述。



4.1a开发的同时,我完成了新文件系统。在1982年6月,我把它完整地集成到4.1a的内核中。新系统称为4.1b,只运行在Berkeley选定的几台用于开发的机器上。Joy感觉一个面临较大改动的系统连内部发行都应尽量避免,特别是这个变动需要将每台机器的文件系统转储并恢复,以完成4.1a到 4.1b的转换。在证实新的文件系统能够稳定运行之后,Leffler立即着手进行增加有与新的文件系统有关的系统调用的工作,而Joy主要完成交互通讯机制的修订。



1982年暮春,Joy宣布他将参加Sun公司。夏天过后,他将工作分开,一部分时间为Sun工作,另一部分时间为Berkeley工作,他花费大量时间对交互通讯机制进行修订,而且重新组织Unix核心以减小对机器的依赖问题。Joy离开后,Leffler接管整个项目的开发工作。开发的最后截止期限已经被确定,而且Berkeley已经答应DARPA团队1983年春天完成发行版本。由于时间紧迫,对剩余的工作进行了完成评估,而且而且设置优先级别。特别地,增强交互通讯机制和虚拟内存中最复杂的部份都降低优先级(后来完全被搁置)。同时,由于Unix团体的期望高涨,Berkeley认为在最终版本发行之前,有必要分布一个过渡版本。这个系统被称为4.1c,于1983年4月发布;许多厂商准备将4.2BSD移植到他们的硬件上。从4.1c版本开始,Pauline Schwartz被雇来管理发行工作。



1983年6月,Bob Fabry把CSRG管理权交给Domenico Ferrari和Susan Grahamturned,并开始度假,以解放他4年来疯狂的生活节奏。Leffler继续完成系统,实现新的信号机制,增加了网络支持,重做了单独的输入/输出系统以简化安装程序,整合来自Robert Elz的磁盘配额机制,更新所有的文档,修复了自4.1c版以来的bug。在1983年8月,4.2BSD发布。



当4.2BSD发布不久,Leffler离开Berkeley去了Lucasfilm,他的职务被Mike Karels取代。Karels早期发行2.9BSD PDP的经验,给他的新工作提供理想的背景。在我完成博士学位之后,1984年12月,我作为全职工作人员参加了CSRG,同Karels一起工作。



4.2BSD的流行让人印象深刻。在发行的18个月内,签发了1000多份站点许可。随后,又发行大量4.2BSD的发行版,可以说其数量超过以前发行版数量的总和。大部份Unix厂商移植4.2BSD系统到他们的硬件上,而不是移植AT&T的商用System V。因为System V既没有网络也没有Berkley快速文件系统。BSD版的Unix在商用领域占优势的地位长达几年。4.2BSD的改进逐渐被集成到System V中,厂商逐渐又转而移植System V,不过,后来的BSD开发成果仍然继续被System V引进。



4.3BSD

4.1BSD发行不久,很快招致多方面批评。大部份人抱怨系统运行太慢。这个问题 并不令人惊讶,因为新的功能还没有被优化,许多内核中的数据结构和新的功能不能协调工作。Karels和我的第一年完全花费优化系统上。



在花费二年时间调整系统和精炼网络代码之后, 我们如预期的1985年夏天,6月在Usenix会议上宣布了发布4.3BSD的消息。然而我们的发行计划被BBN突然中止。他们及时地指出我们从未用他们的最终网络代码修改4.2BSD,相反,我们仍然在使用他们早先给我们的初始模型,这个模型其后经过了大量的修改。他们向DARPA抱怨,预想的情况应该是Berkeley实现接口,BBN实现协议。因此Berkeley应该在4.3BSD中用BBN设计的TCP/IP代码。



Mike Karels得到了BBN的代码,而且做了自从代码被传递到Berkeley以后的工作进行了评估。他决定最好的计划是把BBN代码的优秀思想结合到 Berkeley代码基础中,但是不要替换Berkeley代码。理由有Berkeley代码已经在4.2BSD中广泛地测试和进行了很大改进。然而,折中处理,他提出两者都包括在4.3BSD的发行版本中,让用户在内核挑选使用那种代码。



检讨Mike Karels的决定之后,DARPA确定发行二个代码基础,那会导致不必要的互操作问题,决定只发布一套代码。为了要决定使用哪中代码作为基础,他们把两者都给Ballistics研究实验室Mike Muuse,作为第三方评估者。在一月评估之后,报告Berkeley代码更有效率,而BBN代码处理阻塞比较好。更重要的一点,Berkeley 代码在各种测试中都能很好地通过,BBN代码在高负荷条件下会菪机。DARPA最后决定,4.3BSD应该使用Berkeley代码基础。



修改一新的4.3BSD最后在1986年6月发布。就向预期的一样,它平息了多数用户的抱怨,就像4.1BSD平息了多数用户对4BSD的抱怨一样。虽然大部份厂商已经开始转向System V,但是4.3BSD的大部份成果还是集成到他们的系统之内,特别是网络子系统。



在1986年10月,Keith Bostic参加了CSRG。他的任务是完成在他的早先工作之上一个项目,要把4.3BSD移植到PDP-11。虽然Karels和我都认为它不太可能,在VAX编译成250 Kbytes的系统,并且能满足PDP-11的64 KB的地址空间的要求。但是,我们还是同意Bostic 可以实现他的这有设想。令我们吃惊的是,移植非常成功,他在PDP-11上使用一组复杂的叠加集合和附加处理。其结果是2.11BSD的发布。该系统由 Casey Leedom和Bostic完成,在1998年仍然在一些PDP-11远行这个系统。同时,显然易见VAX体系已经达成生命的晚年,是该开始考虑在其他的机器上运行流行的BSD时候了。Computer Consoles公司这时制造了一种叫做Power 6/32的新体系的计算机。不幸的是,当公司决定改变它的策略方向的时候,该体系不被支持。然而,他们确实为CSRG提供了能够完成我们工作的一些机器。于是Bill Joy开始,从整个BSD内核中分离依赖机器的那部分代码。这个工作的结果是,1988年6月发布4.3BSD-Tahoe。Tahoe来自 Computer Consoles开发过程中所有的一个名字,他们原本打算将它用于Power 6/32机器上。虽然Power 6/32 机器生命周期很短,但它对BSD向其他机器移植,分离内核代码工作有宝贵的价值。



Networking, Release 1

4.3BSD-Tahoe的发布时,所有的BSD用户必须事先得到AT&T的一份源代码的许可,因为Berkeley从来没有只发行二进的BSD 系统;发行版本完全包含系统每个部分的原代码。Unix系统和BSD系统的历史显示原代码具有强大的威力。用户不是消极地使用系统, 而是积极地修改臭虫,改良性能和完善功能,甚至完全地增加新的特征。



随着AT&T原代码许可费用逐渐增加,那些想要用BSD代码为PC市场开发仅以TCP/IP为基础的网络产品的厂商,发现为每个二进制版本付费是不可能的。因此,他们要求Berkeley把网络代码和实用工具分离出来,在许可条款下,提供该他们,而不再需要AT&T的原代码许可。显然易见,TCP/IP 网络代码不包含在32/V中,完全由Berkeley和它的支持者开发。BSD早期的网络代码和支持工具在1989年6月开始发布,即 Networking, Release 1,首次由Berkeley 发行的可自由再发布的代码。



那许可条款很宽泛。获得许可的人可以发行被修改的代码,不论是以源代码还是二进制的形式发行,Berkeley都不会计较。唯一的要求是源文件中必须包含完整的版权声明,在产品的文档中指明产品中包含来自来加州的大学和它的贡献者的代码。尽管这样,Berkeley还是对每盘磁带收取$1,000费用,任何人都可以从已经得到磁带的人那里免费的到副本。的确,一些大的站点在其发布不久,就建立匿名ftp供人免费下载。由于许可条款很宽泛,大约有几百个组织购买了磁带,发行费用可以帮助进一步项目的发展,CSRG当然很高兴。



4.3BSD-Reno

同时,基础系统的发展仍在继续。虚拟内存系统接口第一次在4.2BSD体系描述文件中出现,最终的已实现。大多数情况下,CSRG总是试着寻找存在的代码然后整和,而不是从头写起。如此,并非设计一个新的虚拟存储系统,我们四处寻找存在的替代方案。我们的第一选择是在Sun公司的SunOS下出现的虚拟存储系统。虽然有关Sun公司对Berkeley贡献代码的一些讨论,但是还是不了而止。因此,我们的第二个选项,卡内基梅隆大学的Mach操作系统的虚拟存储系统被集成到系统中。Utah大学的Mike Hibler将Mach的核心技术同4.2BSD体系中的接口合并(也是被SunOS使用的接口)合并。



那时,在系统中,另一个主要附加的是同Sun公司兼容的网络文件系统(NFS)。CSRG再一次得以避免实际编写NFS代码,这次集成工作是由加拿大的Geulph大学的Rick Macklem完成的。



虽然我们仍然没有完成预发行版本4.4BSD的所有性能,但是CSRG决定发行一个过渡版本,目的是得到新系统的反馈和经验。这个许可过渡版本被叫做 4.3BSD-Reno,在1990年初发行。版本的名字来自内华达州一座大的赌博城市中的一个斜的记念物,提醒用户运行这个版本是一场赌博。



Networking, Release 2

在我们一次每周的团体会议上,Keith Bostic提出可再发布网络版本的普及性的主题,建议发行包含更多BSD代码的扩充版本。Mike Karels和我指出,发行系统的大部份是一件艰巨的工作,但是我们同意,如果他能够重新分类实现几百个实用程序和庞大的C语言库函数,那么我们会处理内核。事实上Karels和我私下里感觉讨论已经结束。



不过,这并没有阻碍Bostic在技术上的探索和大量网络基础上的开发工作。他还要求其他成员依据新发布的Unix实用程序。作为补偿,他们仅要求他们的名字和Berkeley贡献者的名字同时在实用程序中列出。工作进展很慢,而且大部分是一些琐细的实用程序。但是同样完成实用程序列表不断变大,而且 Bostic继续寻找贡献者(例如Usenix的公开场合),贡献者的人数继续增长。很快列表超过过了100多个公用程序,而且在18个月内几乎所有重要的使用程序都被完全重写。



后来,Bostic带着实用程序列表进入Mike Karels和我的办公室,想要知道我们正在核心上的工作进展。我们重新分配工作,Karels,Bostic和我花费以后的几个月详细察检查整个发行版本,一个文件一个文件地删除来自32/V版本的代码。当工作将近结束的时候,我们发现还有六个核心文件,且没有必要重写。我们考虑重写那六个文件,以便我们可以发行一个完全的系统。我们决定改为发行现有的系统,然而,我们需要得到大学行政部门高层人员的许可。经过内部讨论之后,并验证了我们对代码的所有权问题,我们提前发行了新版本。



我们起初的想法是,为我们的的第二个可自由再发行的系统起个全新的名字。然而,我们看到大学律师写的新版许可证,那样完全没有必要,而且可能浪费时间。因此,我们决定对Networking Release 1的许可证进行修订,并且以Networking Release 2来发行我们的系统。就这样,我们在1991年六月发行了扩展后的系统。这个版本的费用同第一版的一样。与以往相同,几百个个人和组织以每份拷贝 $1,000的费用从Berkeley得到它的副本。



Networking Release 2和完整系统的差别不断减小,在发行的六月内,Jolitz已经重写了六个不太重要的文件。他随后就发行了完全编译基于PC体系,可启动的系统。 Jolitz的386/BSD完全在网络上发行。他搭建了匿名FTP,以便用户可以免费下载。在几个星期内,他有了大量的追随者。



不幸的是,由于全职工作的需要,Jolitz不能把所有的时间用于修改BUG和提高386/BSD系统性能。因此386/BSD发行几个月之内,一群热心的386/BSD使用者形成了NetBSD用户组,汇集他们的资源,帮助维护和增强后来的系统。他们的发行的系统就是著名的NetBSD 分支。NetBSD团体选择尽可能地支持大量的体系,延续CSRG的研究风格来发展系统。直到1998年,他们的发布还仅仅限于网络;没有提供发行媒体。他们团体主要目标仍是核心技术用户。NetBSD项目的站点是http://www.netbsd.org。



FreeBSD团体在NetBSD团体成立几个月之后成立,其宗旨是仅支持个人计算机体系,并追求数量更多(较少技术化)的改进,同Linux作法十分相象。他们精心的设计安装脚本,以低廉的价格的CD-ROM发行他们的系统。易于安装和疯狂的网络促销、以及在Comdex大会的表演导致快速的,大量的发行。不可否认,FreeBSD是所有Networking Release 2分支中发行最多的系统。



FreeBSD也曾为Linux的流行而苦恼,因此FreeBSD平台加入Linux模拟模式。这个特征允许FreeBSD使用者运行大量的Linux程序。同时,也促进FreeBSD系统向更加健壮,高兼容性和高性能方向发展。最近,团体开设了一个FreeBSD商城,把FreeBSD社区的许多部份连接起来,包括商业服务、产品、书籍和新闻报道。



在1990年代中期,OpenBSD从NetBSD团体中分离出来。他们的技术上的宗旨瞄准增强系统的安全。他们的推广重点在使系统更容易使用和更广泛地获得。因此,他们开始生产并销售CD-ROM——这一FreeBSD最先采用的发行方式。关于OpenBSD项目的更多信息,可以在 OpenBSD.org找到。



诉讼

在一些组织免费地发放Networking Release 2的磁带的同时,成立了一家公司,Berkeley Software Design公司,主要从事发行提供商业支持的代码的事务(关于这家公司的详细情况清参考他们的网站http://www.bsdi.com)。和其他群体一样,他们开始追加缺少的那6个文件,像Bill Jolitz为386/BSD发行版作的那样。BSDI从1992年1月开始以$995的价格出售他们的系统,包括源代码和编译好的代码。他们于是开始发布广告,吹捧他们的系统相对System V包含源代码的二进制系统之间99%的差价。有兴趣的读者可以拨打1-800-ITS-Unix。



BSDI开始他们的销售战之后不久,他们就收到了来自Unix系统实验室(USL, 一个基本上属于AT&T的,开发和销售Unix的机构)。这封信要求他们停止以“Unix”的名义推广他们的产品,包括他们“欺骗性的”电话号码。虽然电话号码很快被停用,而且他们的公告也解释了他们的产品和Unix只见的区别,USL仍然不满意,并且撰写了起诉书,要求禁止BSDI出售他们的产品。起诉书宣称BSDI出售的产品中含有属于USL的代码。USL同时要求在诉讼宣判之前,中止BSDI的销售,声称BSDI继续销售会给USL造成不可挽回的损失。



调查听证会中,BSDI指出他们只是简单地使用了来自加州大学的免费发行的代码,以及六个附加的文件。他们愿意就这六个文件展开调查,但不希望承担加州大学发行的代码的责任。法官同意了BSDI的主张,并通知USL他们需要修改他们的起诉书,否则将驳回起诉。认识到针对六个文件的起诉将没有意义,USL决定重新撰写起诉书,起诉BSDI和加州大学。和他们先前作的一样,USL要求加州大学停止发布Networking Release 2,当然,也包括BSDI公司的商业产品。



由于禁令的迫近,人们开始积极地准备。CSRG的所有成员和BSDI几乎所有的雇员都宣誓作证。律师们针锋相对,互不相让。Keith Bostic和我不得不亲自撰写材料,我自己也不得不为各种陈词写上几百页的材料。



1992年12月,美国众议院新泽西州选区法官Dickinson R. Debevoise受理了关于发布禁令的要求。尽管法官通常会立即发布禁令,但他认为这样的禁令需要经过深思熟虑。六周后的一个星期五,他签署了一份四十页的意见,表示他拒绝禁令,并驳回除两条之外的其他主张。余下的两条诉求被局限于最近的版权和可能泄漏商业机密的问题。他建议这一案件应当在联邦法院之前被州立法院系统受理。



加州大学根据这一决定,立即在周一提出对USL的反诉。除了加利福尼亚州之外,大学还为联邦法庭的诉讼进行了准备。宪法要求所有州的文件必须在一个州准备,以防止诉讼者自己带着厚重的提包为准备50份材料——每州一份。其结果是,如果USL希望在联邦法庭对大学提起诉讼,他们必须在加州,而不是新泽西做同样的事情。



大学的诉讼声称USL没有尽到作为BSD代码作者尽到的责任,因为System V中BSD代码的署名权已经在先前的许可证中规定了。如果这项主张被证明是有效的,那么大学要求USL重印他们所有的手册,并在主要出版物,如华尔街时报、财富杂志刊登整夜的广告以通知整个商业界。



其后不久,USL被Novell从AT&T买走。Novell的CEO, Ray Noorda,公开表示他宁可在市场上,而不是在法庭上进行较量。1993年夏谈判开始,然而不幸的是,双方都已经陷得很深,以至于谈判进行的异常缓慢。最后,USL一边在Ray Noorda的领导下在一些关键问题上做出了让步,最终于1994年1月达成了协议,其结果是组成Networking Release 2的18,000个文件中的3个被删除,并对其他一些文件进行了细微的修改。同时,加州大学同意在大约70个文件中加入USL的版权,尽管他们仍然被免费分发。



4.4BSD

曲折之后,一个新版本4.4BSD-Lite在1994年6月发布。其许可条款同Networking releases一样。特别地,条款允许以源代码和二进制的形式自由发行,只要完整保留加洲大学版权声明,并且其他人使用时也能得到这个版权声明。同时,发行完全的系统4.4BSD-Encumbered版本, 仍然需要使用者有一份USL源代码许可。



纠纷结果还规定:USL不得控告任何使用4.4BSD-Lite作为他们系统的基础的组织。如此,那时所有发行BSD的团体,包括BSDI,NetBSD 和FreeBSD,必须以4.4BSD-Lite作为他们的代码来源,然后整合系统,提高系统性能。虽然这次重新以4.4BSD-Lite为基础延误了各个团体开发系统的时间,但更幸运的是,Networking Release 2发行三年内,如同CSRG一样,各个分支团体的开发工作必须重新同步。



4.4BSD-Lite, Release 2

由 4.4BSD-Encumbered 和 4.4BSD-Lite release版本发行得到的经费,用来赞助一个兼职的工作人员,来修改臭虫和提高系统性能。这样长达二年的工作,持续到臭虫的比率一直下降和性能已不能提高为止。最终的改变促成4.4BSD-Lite版本在1995年6月发行。这些大多数的变化都是以后其他系统的源代码的基础。



4.4BSD-Lite第二版的发布以后,CSRG同时也被解散。在领航BSD的二十多年中,我们感觉应该让其在新思想和无限的热情中生存和发展。当它可能有单一集中的权威监督系统发展像是最好的时候,用一些团体不同的特许状的主意确定那许多不同的接近将会被尝试。因为系统被以来源代码形式发行, 最好的结果就是它能够容易地被其他团体接受。如果某些改变特别地有效,他们可能最后变成占优势的系统。



今天,开源软件运动正在得到更多的注意和尊敬。虽然Linux系统非常有名,但是其中大约一半以上的程序都来自BSD的发行版本。Linux发布很严重地依赖编译器、调试器以及其他由自由软件基金会所写的开发工具。



总而言之,CSRG,自由软件基金会(Free Software Foundation)和Linux内核开发者已经投身开源软件运动,并以此建立了基础平台。我很骄傲有机会提倡开源软件运动。我盼望有一天,无论身处何处的用户和公司在开发和购买软件的时候都愿意采取这种方式。
 

你可能感兴趣的:(操作系统)