简介编辑本段回目录
Berkeley二十年Unix历史--从AT&T拥有版权到自由在发布
原作者 Marshall Kirk McKusick
翻译:孔祥波 修订 司徒彦南
邮件: yarshure@163.net
出处: http://www.oreilly.com/catalog/opens...k/kirkmck.html
关于作者
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分享品尝美酒带来的快乐。
早期历史编辑本段回目录
1973年11月,在Purdue大学召开的"操作系统原理研讨会"上,Ken Thompson 和Dennis Ritchie发表了第一篇关于Unix的论文。 当时California大学Berkeley分校的Bob Fabry教授也正好在会场上,他立刻对此发生了兴趣,并得到了一份操作系统的拷贝,准备在Berkeley分校进行实验。
当时,Berkeley仅有大型的计算机主机系统在做一些批处理工作。因此这项事业的第一个定单是得到一台PDP-11/45计算机,以运行当时的Unix Version 4。 Berkeley的计算机系、数学系和统计系共同出资购买了这台PDP-11/45。 在1974年元月份,第四版本(Version 4)的Unix 磁带交付学校使用,学校当时指定当时上研究生的Keith Standiford将这个操作系统安装到了这台机器上。
尽管身在Purdue的Ken Thompson没有参与在Berkeley安装这一操作系统,因为他要负责在其他地方的安装系统,但是在Berkeley安装的系统上出现了几次奇怪的系统崩溃,因此很快就需要像他这样富有经验的专家来帮助解决。 当时Berkeley仅有一台300-波特率的声频耦合式的调制解调器,且没有自动应答功能,所以Thompson需要事先通过电话通知机房的Standiford,让他将电话线插入调制解调器中。 通过这种方法,Thompson可以从新泽西州远程地对崩溃了的系统进行调试。
许多次系统崩溃的原因在于磁盘控制器不能可靠地执行叠加搜索,与通常的文档搜索不同,Berkeley 的PDP-11/45计算机是Thomspson所遇到的首批在同一个控制器上有两个磁盘的系统之一! Thompson的远程调试也是后来延续的Berkeley和Bell实验室之间合作的第一个例子,Bell实验室的研究人员乐意助人,他们同意将他们的工作成果与Berkeley进行分享,这极大地加快了Berkeley软件的改进工作。
尽管Unix很快就开始运行起来,而且很可靠,但Berkeley计算机系、数学系和统计系之间的冲突很快就导致了新的问题:数学系和统计系想运行DEC的RSTS系统。经过多次讨论后,他们达成了妥协,每个系可以有每班8个小时的时间运行计算机系统,即Unix运行8个小时后,再运行16个小时的RSTS。 为促进公平性,运行时间段的切换每天进行,因此第一天Unix从上午8点运行到下午4点,然后是从第二天的下午4点到第二天的午夜,接着是第三天的凌晨到上午8点。 尽管这个时间表异乎寻常,但是学习操作系统课程的学生们更喜欢在Unix系统上做项目,而不是在批处理机上。
Eugene Wong教授和Michael Stonebraker教授都感到在批处理环境限制下的工作很别扭,因此他们的INGRES数据库项目成为第一组从批处理机移至Unix交互环境下开发的项目,但他们很快就发现了缺乏机器运行时间,而且在PDP-11/45上的需要在奇数小时才能进行工作的确让人忍受不了,因此在1974年的春天,他们购买了一台PDP-11/40以运行新的Unix Version 5。 随着1974年秋天第一个INGRES分发版的发行,INGRES项目小组成为计算机系中第一个发行软件的小组,在随后的六年中,他们一共交付了几百份INGRES磁带,大大地帮助了Berkeley在设计和建立真正系统领域树立起了良好的信誉。
尽管INGRES项目组后来不再使用PDP-11/45,但对使用机器的学生来讲,仍然存在运行机器时间的不足,为了弥补这种缺陷,Michael Stonebraker教授和Bob Fabry教授,从1974年6月开始着手为计算机系购买两台供教学使用的PDP-11/45。 1975年初,钱已到位,但几乎在同时,DEC发布了PDP-11/70,一种显得比PDP-11/45更高档的机器,因此原本计划在1975年秋天购买两台PDP-11/45的钱转而购买了一台PDP-11/70。 PDP-11/70交付学校使用时,碰巧Ken Thompson决定作一年的休假。California Berkely分校是Ken Thompson的母校,Ken Thompson决定去Berkely分校当访问教授。 后来Thompson 同Jeff Schriebman与Bob Kridle三人一道在新安装的PDP-11/70上合作开发了后来的Unix Version 6。
1975年的秋天,来了两位当时还不出名的研究生,他们是Bill Joy和Chuck Haley,两人立刻都对这一新的系统产生了兴趣,最初他们开始在一个Pascal系统上工作,该系统由Thompson在PDP-11/70机房调试时与机器集成在一起,他们扩展了并有效地改进了Pascal解释器,并使它成为学生们一个可选的一个编程系统,因为它具有极好的错误恢复机制和快速编译时间及运行时间(compile and execute time)。
随着Model 33 teletypes被ADM-3屏幕终端所取代,Joy和Haley开始感到ed编辑器存在的局限性,他们从伦敦的Queen Mary学院George Coulouris教授那里得到了一个名为em的编辑器,并开始着手开发一种每次一行的编辑器,名为ex。
1976年夏末,Thompson离开了Berkeley,而此时Joy和Haley开始对Unix的内核发生了浓厚的兴趣,在细心的Schriebman教授关照下,他们将来自 Bell实验室的经过了"五十次变化"磁带的修正和改进部分第一次成功地安装到了系统上。 他认真地研究了源代码,并建议完成几处小的改进,以在某种程度上解决内核瓶颈的问题?
早期发行版本
在人们对Pascal编译器上错误恢复工作感兴趣的同时,人们也开始提出了系统拷贝的需求。在1971年初,Joy完成恕?erkeley Software Distribution"的合并。 这个第一发行版包括Pascal系统,而且在Pascal源代码的一个难懂的子目录下,附上了编辑器ex。 过了一年,Joy作为发行组的秘书,寄出了大约三十份免费的系统拷贝。
这时出现了一些ADM-3a终端,它们提供屏幕定址光标的功能,Joy最终开始编写vi,为Berkeley带来一种基于屏幕的编辑器,但很快他就发现自己遇到了麻烦。在学校里,经费捉襟见肘是常有的事,老的设备从不会立刻被替换掉,Joy没有进行优化和更新几个不同终端的支持工作,而是决定采用一个小的解释器以重画屏幕,从而加强屏幕管理,此解释器由终端特性描述所驱动,此项工作的后来的结果是产生了termcap。
到1978年中期,软件发行版显然需要升级了,用户社团一直在不断扩大,在用户反馈意见的基础上,修改后的Pascal系统已明显变得更加健壮,并且它被分成了两个分支,以使其能运行在PDP-11/34s上,更新的结果就产生了"第二版Berkeley软件发行版",这一名称很快就被简称为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环境,并想继续使用Unix, 所以在VAX到来不久, Fateman得到了由Bell实验室的John Reiser和Tom London开发的将Unix移植到VAX的32/V的拷贝。
尽管32/V在VAX机上提供了UnixVersion 7环境,但它不能很好地利用VAX硬件的虚拟内存能力,正象PDP-11系列中的早期机器一样,它是一种完全基于转换(swap-based)的系统。对于Berkeley的Mascsyma小组来说,缺少虚拟内存就意味着进程地址空间受限于物理内存的大小,在新的VAX机器上,最初物理内存为1 MB。
为了减轻这个问题所带来的矛盾, Fateman与Domenico Ferrari教授进行了讨论,Domenico Ferrari教授是Berkeley系统委员会的成员,他开始调查让Fateman的小组为Unix写一个虚拟内存系统的可能性。Ferrari教授有一位学生,名叫Ozalp Babaoglu,他开始寻找一些关于在VAX机器上实现设置分页系统的方法。 由于VAX机缺少参照位(reference bits),因此他的工作变得非常复杂。
当Babaoglu接近于完成他的第一个方法时,他与Bill Joy取得了联系,请Bill Joy帮助他理解Unix内核的复杂内容。 与Babaoglu的交流使Joy对其工作发生了兴趣,并帮助Babaoglu将代码集成到32/V中,后来又接着帮助进行调试工作。
不幸的是,Berkeley仅有一台VAX机, 这台机器既要用于系统开发,又要用于一般的工作。因此,在圣诞节的假期后几个星期里,具有忍耐心的用户群体发现他们自己开始交替地登录到32/V和"虚拟VAX/Unix"系统上。他们在后一种系统上运行时有时会突然中止,几分钟后紧随着就出现了32/V登录提示信息。到1979年元月,大部分臭虫被解决,32/V便已被载入历史而废弃了。 [ 相约加拿大:枫下论坛 www.rolia.net/forum ]
Joy看到32位的VAX很快会取代并淘汰掉16位PDP-11,于是开始将2BSD软件移植到VAX机器上,当时Peter Kessler和我移植了Pascal系统。Joy 移植了 ex和vi编辑器、C Shell和其它2BSD发行版中大量的小程序。1979年末,一个完整的发行版本被集成在一起。这个发行版本包括了虚拟内存内核,标准32/V实用程序,以及2BSD中的一些附加程序。1979年12月,Joy 首先发布了将近100份拷贝的3BSD,即Berkeley的第一个VAX发行版。
Bell实验室的最后版本为32/V,以后来自AT&T的所有Unix版本,从最初的System III到后来的System V,都由注重稳定性的商业版本的不同组织管理。伴随着Unix的商业化,Bell实验室的研究员开始感到作为兴起的Unix研究的源头有些力不从心了。当研究社团继续修改Unix系统时,他们发现需要有一个组织能开发研究版。 由于Berkeley对Unix开发的介入很早,且具有发布基于Unix实用程序的历史,Berkeley很快步入并取代了先前Bell实验室的角色。
DARPA 支持编辑本段回目录
此时,在国防部高级研究项目署(Defense Advanced Research Projects Agency,DAPRA) 的规划者们的办公室里展开了一场对Berkeley工作起着重大影响的讨论,DARPA的早期成果之一是成功地建立了一个覆盖全国范围的计慊 纾 粤 铀 械闹饕 芯恐行摹?在那时,他们发现许多研究中心使用的计算机已经接近最后使用期限,并开始更新,而更新过程中最为耗费资金的部分是将研究软件移植到新机器上。 另外,许多地点不能共享他们的软件,因为硬件和操作系统不 ?
因为研究目的广泛而且不同研究小组的计算需求不同,他们无意依赖于单一某个生产厂商,因此仅选择一家硬件供应商是不切实际的,因此DAPRA的规划者们认为最好的解决方法是在操作系统这个级别进行统一工作。 经过多次讨论后,因为Unix被证实具有可移植性,所以规划者们决定采用Unix作为标准。
在1979年秋,Bob Fabry应DARPA对Unix发生的兴趣,写了一份提议书,建议说Berkeley可以开发了一种增强版本的3BSD给DARPA使用。Bob Fabry将其提案作了一份拷贝并带到了DARPA图象处理和VLSL 承包商的会议上,并给了ARPAnet的开发者代表,Bolt Beranek和Newman。当时有一种保守的看法是Berkeley是否能研制出一种工作系统,但是1979年12月3BSD的发布后,这些疑虑便烟消云散了。
随着3BSD版本日趋增长的良好信誉,更加确定了Bob Fabry的断言。Bob Fabrvy和DARPA签订了一份从1980年4月开始,共18个月的合同,这份合同要求Berkeley按DARPA 承包商的需要增加一些特性。在这份合同的赞助下,Bob Fabry建立了一个小组,命名为计算机系统研究小组(Computer System Research Group),或简称为CSRG。他立刻雇用了Laura Tong负责项目管理,Fabry转而将注意力放在找到一个项目领导者以管理软件开发,Fabry认为Joy刚刚通过他的博士学位(Ph. D)资格考试,他会将精力集中于完成学位上,而不会考虑软件开发的位置,但Joy有他的自己的想法。三月上旬的一天晚上,Joy给Fabry打了一个电话,表示他有兴趣负责进一步开发Unix。 尽管 Fabry对这个想法感到惊讶, 但Fabry考虑后还是立创鹩α薐oy的请求。
于是项目立刻开展起来,Tong建立了一套发行系统,能够比从前Joy的发行系统处理更大容量的定单。Fabry开始同AT&T的Bob Guffy及California大学的律师合作,制定所有人都能接受的正式Unix版本的条款。Joy集成了Jim kulp的作业控制机制,并增加了自动重启动功能,1K块文件系统,及宰钚耉AX机器(VAX-11/750)的支持。到1980年10月时,推出了一个粉饰一新的发行版本,称为4BSD,其中包括Pascal编译器,Franz Lisp系统,和一个增强的邮件处理系统。在其9个月生命期中,差不多发行了150份拷贝。版权的控制是以大学为单位的,而不是以每台机器为基础来计算,因此该发行版在近500台机器上运行。
随着发行版数量快速而且广泛地增加,以及Berkeley的 Unix的能够指望具有可见性,几个尖锐的问题开始冒了出来,Stanford研究院的David Kashtan 写了一篇论文,描述了他在运行VMS和Berkeley Unix 的测试结果。这些测试显示出在VAX机运行Unix系统的几个性能问题。于是Joy将他未来的计划暂时搁置在一旁,在长达几个月的时间中,他系统地优化了Unix的内核。后来他又花了几个星期写了一篇应答文章,说明在Kashtan的测试点上运行Unix时的性能可以达到良好的状态,并能等同于VMS。
后来Berkeley没有继续发行4BSD,而是在优化后的系统加上Robert Elz的自动配置代码,在1981年的6月发布了4.1BSD。 在随后的两年时间里,大约交付了400份的发行版。最初Berkeley准备之称为5BSD,但是遭到AT&T的抵制, 因为AT&T觉得用户会将它与他们的Unix版本 -- Unix System V相混淆。所以,为了解决该问题,Berkeley同意改变其将来版本的命名规定,将版号仅保留在4BSD上,以后只增加小的版本号。
4.2BSD编辑本段回目录
4.1BSD发布后,许多关于性能的疑问被解决,DAPRA非常满意第一个合同的结果。紧接着又与Berkeley签订了一个为期两年的合同,并且合同资助额翻了五倍,合同金额的一半用于Unix项目的开发,其余部分用于计算机系的其它研究。合同的目的是要能在系统上完成主要工作,使DAPRA的研究社团能够很好利用它进行工作。
根据DAPRA社团的需要,Berkeley很快就制定出了对系统的进行修改的工作目标,在新系统中,特别强调要求包含一个更快速的文件系统,以使其吞吐量能够适应磁盘技术所达到的速度,支持处理几个GB地址空间的需求,提供灵活的进程间通信机制,以允许研究者能在分布式系统上工作,并能集成网络支持功能,以使运行新系统的机器能很容易地加入到ARPAnet中。
为帮助定义这一新系统,Duane Adams作为DAPRA在Berkeley的合同监督人,组成了一个小组称为"掌舵委员会"(Steering Committee),以协助指导设计工作,并确保研究社团的需求能得到满足。这个委员会在1981年4月到1983年1月间每年聚会两次,它的成员包括了Caifornia 大学Berkeley分校的Bob Fabry、Bill Joy和Sam Leffler;Bolt的Alan Nemeth、Rob Gurwitz、Beranek和Newman; Bell实验室的Denis Ritchie; Stanford大学的Keith Lantz;Carnegie-Mellon大学的Rick Rashid; MIT的Bert Halstead;Information Sciences Institute的Dan Lynch;DARPA的Duane Adms和Bob Baker; 以及California大学Los Angeles分校的Jerry Popek。从1984年开始,这种会议增加了几个工作室,规模得到了扩大,而且人数也越来越多。
1981年7月,在新系统中建议所包含特性的原始文档提交给了"掌舵委员会"和Berkelely以外的人员,引起了许多长时间的争论。 1981年夏天,我开始介入到CSRG的工作中,并参与了新的文件系统的设计工作。在那个夏天,Joy集中精力于设计进程间通信机制的原型版本。1981年秋天,Sam Leffler加入到CSRG中,并作为一名全职人员与Bill Joy一同工作。
当Rob Gurwitz在Berkeley发布了早期的TCP/IP协议后,Joy将其集成到系统中并优化了其性能,此项工作使得Joy和Letfller清楚地意识到新系统应不仅针对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觉得系统中还存在几个重要的悬而未决的问题需要解决,因此最好是避免发行,即使在Berkeley内部也不发行,最关键的问题是它要求每台机器的文件系统被转储和备份,并完成从4.1a到4.1b的转换。 在文件系统的稳定性被证实后,Leffler继续添加与新文件系统相关的系统调用,而Joy则花时间修订了进程间通信机制功能。
在1982年的春末,Joy 宣布他开始进入Sun Microsystems公司工作,夏天过后,他将工作分开,一部分时间为Sun工作,另一部分时间为Berkeley工作,他花费了大量的时间修订了进程间通信机制,并重组了Unix的内核源码以减小对机器的依赖性。Joy离开后,Leffler接管了整个项目的开发,开发的最后完成期限已被设定,而且Berkeley汛鹩 APRA社团将在1983年春天发行完成的版本。由于时间所迫,Berkeley对开发所剩下的工作进行了评定,并设定了各项工作的优先级,特别需要指出的是,增强虚拟内存和进程间通信中最复杂部分的设计都降至低的优先级(后来被完全搁置)。 同时,在Unix系统完成一年后,Unix社团的期望值也更为高涨,Berkeley决定在最终的系统完成之前,需要推出一个中间状态的版本,以使人们保持对它的关注。这个系统就是4.1c,在1983年四月发布,许多厂商使用该版本准备将4.2移植到他们的硬件上。从4.1c版本开始,Berkeley 聘用了Pauline Schwartz接管发行工作。
1983年6月, Bob Fabry将CSRG的管理控制权变给了Domenico Ferrari教授和Susan Graham,并开始休假,以结束他前四年紧张而狂乱的生活。 Leffler继续完成系统,实现了新的信号机制,加入了网络支持功能,重做了单独的 I/O系统以简化安装过程,集成了从Robert Elz处得到的磁盘配额功能 (disc quota),更新所有文档,跟踪从4.1c版本后出现的臭虫。在1983年8月,Berkeley发布了正式的系统,这就是4.2BSD。 < r o l i a. n e t >
当4.2BSD完成后, Leffler离开Berkeley去了Lucasfilm,他的位置由Mike Karels取代,Karels早期发行2.9BSD PDP-11软件时积累的经验为他的新工作提供了理想的背景。1984年12月,我获得了博士学位,并加入Karels的工作组,成为CSRG的一名全职工作人员。
4.2BSD的知名度是令人印象深刻的,在18个月内,就签发了1000多份站点许可证。可以说,随后发布了更多数量的4.2BSD的发行版,其数量超过了Berkeley先前所有软件发行版数量的总和。 大部分的Unix厂商愿意发行4.2BSD,而不是商业版本的AT&T的System V,原因在于System V既无网络功能,又无Berkeley的快速文件系统。 BSD版的Unix在商业市场上占主导地位的情况只持续了几年,随后又回到最初的状态,因为后来System V中集成了网络功能和其它一些4.2BSD所增强改进部分,所以厂商们通常又回到最初的选择。不过,后来的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 Karel拿到了BBN代码,并对其自从BBN将初始原型交付Berkeley以来的工作进行了评估。 他决定最好的计划是将BBN代码中体现好的想法集成到Berkeley的基础代码中,而不是替换Berkeley的代码基础。 保留Berkeley代码基础的原因在于,在4.2BSD广为发行之后,代码基础已经得到了大量的测试和改进。 但是,作为折衷方案,他提出在4.3BSD发行版本中包含两者的代码,由4.3BSD的用户自己在内核中选择使用哪一种代码。
在考虑了Mike Karel的决定后,DARPA认为发布两套代码基础会导致不必要的互操作性问题,并最终决定只发布一套代码。为了决定选择究竟采用哪套代码基础,他们将两者都交给了Ballistics 研究实验室的Mike Muuse作为独立的第三方进行评估。 经过一个月的评估,Mike Muuse提供了一份评估报告,报告中认为Berkeley的代码更为有效,但BBN代码在处理堵塞(Congestion)时效率更高。但是有一点最关键: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上。骋用他的一个条件是,允许他完成他这个项目。 那时Kanel和我都不相信能得到一个系统,可以在VAX上编译成250KB,并满足PDP-11 的64KB地址空间的要求,但我们同意Bostic可以尝试实现他的这一设想。 让我们大为惊奇的是,移植工作非常地成功,他使用了一个复杂的叠加集(set of overlays)和在PDP-11上的辅加处理器语句(auxiliary states states),其结果是发布了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 Console公司在开发过程中使用的名字,他们原计划将它最终发布为Power 6/32用于机器上。 尽管Power 6/32有用的生命期不长,但将BSD内核分为"依赖于机器"和"独立于机器"两部分是非常有价值的,它可使BSD移植到众多的体系结构中。
Networking,Release 1编辑本段回目录
到4.3BSD-Tahoe版本的发布时,所有的BSD用户必须先得到一份AT&T的源代码许可证,这是因为Berkeley 从来没有仅以二进制方式发行过BSD系统,发行版本总是包含了系统每个部分完整的源码。 Unix系统和BSD系统的历史表明,给用户提供源代码具有强大的威力。 用户们不是被动地使用系统,而是可以积极地修改臭虫,提高性能和功能,完善功能,甚至添加一些崭新的持性。
随着AT&T源代码许可证的费用增加,一些希望能够使用BSD代码为PC市场制造独立的基于TCP/IP联网产品的厂商们发现,按照每个二进制拷贝交费是行不通的。于是他们要求Berkeley将联网的代码和实用程序从BSD发行版中分离出来,并且给他们签发许可证条款,而不需要AT&T的源代码许可证。 显然,TCP/IP联网代码不存在于32/V中,所以它完全是由Berkeley和Berkeley的一些贡献者开发的, BSD最初的联网代码和支持性实用程序在1989年6月作为"Networking Release 1"发布,这是第一套由Berkeley发布的"自由可再发行"(freely-redistributable)的代码。
这个许可证的条款是宽大的,它允许被授权的用户以源代码或二进制形式发布修改过的、或未修改过的代码,并且可以不向Berkeley申报财务报告和版税,唯一的要求是在源代码文件中原封不动地保留Berkeley的版权声明,并且含有Berkeley代码的产品需在文档中声明其产品包括来自于加州大学和其贡献者的代码。 尽管从Berkeley那里得到一份磁带需付1000美元的费用,但任何人都可自由地从已经获得了Berkeley拷贝的人那里获得新的拷贝,实际上,许可证条款公布后不久,就有几个大的站点已将代码存放在匿名FTP机器上。因为许可证的条款如此宽容,所以几百个组织购买了磁带拷贝,CSRG当然很高兴,因为这笔收入有利于今后进一步的开发工作。
4.3BSD-Reno编辑本段回目录
同时,基础系统的开发仍在继续。虚拟内存系统(virtual memory system)的接口是在4.2BSD体系的文档中首次得到了描述的,虚拟内存系统最终被BSD采用。在大多数情况下,CSRG常常是试图发现一些现成的代码,并将其集成到系统中,而不是从头编写代码。 所以,我们没有设计一个新的虚拟内存系统,而是四处寻找已有的代码。 我们的第一个选择来自Sun Microsystems的SunOS系统中的虚拟内存低常 」芤欢扔幸恍┕赜?un想将代码提供给Berkeley的讨论,但后来便不了了之。于是我们作出了第二种选择,将 Cornegie-Mellon大学的MACH操作系统的虚拟内存系统集成到BSD中,Utah大学的Mike Hibler完成了将MACH的核心技术与4.2BSD体系手册中描述的用户接口进行合并(该接口也被SunOS选用)。
当时另外一个主要的补充是加进了与Sun兼容的网络文件系统(NFS)版本。 同样,CSRG也是避免了去动手编写实际的NFS代码,此项工作是由加拿大的Geulph大学的Rick Mocldem完成的。
尽管那时我们没有完整特性的4.4BSD可发布,但是CSRG仍决定发布一个过渡性版本,以取得另外的对这两个主要附加项功能的反馈和经验。此授权的过砂姹境莆?.3BSD-Reno,并在1990年早些时候发布,该版本是在内华达州的一个大的赌城被命名的,似乎向用户提供了某种暗示,表明运行过渡版本是多少有些赌博意味的。
Networking,Release 2编辑本段回目录
在一次CSRG的小组每周例会上,Keith Bostic提出了自由可再发行版(freely-redistributable)普及性的主题,并要求做一个扩展版以包括更多的BSD代码。Mike karel和我向Bostic指出,要发行系统中的那些大的部分是一项巨大的工作,但我们同意,如果他能处理怎样重新实现几百个实用程序和巨大的C Library,那我们就可以解决内核。karel和我私下里都觉得讨论到此结束,不会再有什么结果。
但这并没有妨碍 Bostic进行技术上的探索和大量的基于网络的开发工作,他要求其成员依据发布的描述从头改写Unix的实用程序。 作为补偿,他们仅要求能在Berkeley 贡献者列表上每一相应改写的实用程序旁列出他们的姓名。 此项工作开始进展很慢,并且大部分工作是琐碎的实用程序。 但是完整实用程序列表的不断增长,Bostic持续在一些像Usenix这样一些公众场合下向外寻找的贡献者。 贡献者的比例也保持继续增长,因此列表上的实用程序数量很快就在18个月内超过100个,几乎所有的重要实用程序和库都被重写。 { 枫下论坛 www.rolia.net/forum }
后来,Bostic自豪地走进Mike karels和我的办公室,手里拿着清单,他想知道我们如何对内核做工作。 我们重新设定了我们的工作任务,Kavels,Bostic和我花了几个月的时间回顾整个发行版本,一个一个文件地看,去掉最初从32/V版本中产生的代码,当所有不必要的文件清除后,我们发现仅有6个内核程序仍然具有32/V版本的影响,而且重写起来很费劲。当时我们想如果我们能重写这6个文件,那么我们就能发布一个完整的系统,我们决定先是发布我们现有的程序。 但是,我们的确从Canifornilia大学行政管理部门的较高层人士那里寻求过对我们扩展版本的许可。经过多次内部讨论,并验证了我们对具有专有权利的代码的判断方法后,学校准许我们继续进行工作。
我们最初的想法是给我们第二个自由可再发行版本起一个全新的名字,但是我们知道要得到一个全新的版权并由大学律师批准,势必会有不必要地浪费资源屯涎邮奔洌 晕颐蔷龆ǎ 掳姹境莆狽etworking Release 2,因为我们可以在Networking Release 1版权许可证协议的基础上作一些修正。 于是,我们的第二个经过大量扩充的自由可再发行版本在1991年6月推出,Networking Release第二版的条款和花费与Networking Release第一版相同。和以前一样,几百个个人和组织付了每套1000$的费用从Berkeley购买了发行包。
在Networking Release 2发行版到完整的功能系统之间的间隙得到弥补以后,也就是在版本发布后的6个月时间内,Bill Jolitz已经重写了那6个漏掉的文件,他很快就发布了完整的可运行在386PC体系上的编译过和可启动的系统,他称之为386/BSD。 Jolitz的386/BSD发行版本几乎全是在网络上完成的。他把它放在匿FTP站点上,让任何需要使用它的人都能自由地下载。几个星期内,他就有了大量的追随者。
不幸的是,要保证一份全职工作的需要就意味着Jolitz不能够分出更多的时间来处理大量的臭虫和改进386/BSD。 所以,在386/BSD版本发布的几个月内,一群具有敏锐目光的386/BSD用户成立了一个小组,他们收集资源以帮助维护和增强后来的系统。他们的版本后来成为NetBSD 。 NetBSD小组侧重于支持尽可能多的平台,并继续按照CSRG所创立的研究风格进行开发。 直到1998年时,他们的发行版本仍仅能在网上传播,没有任何介质,他们的小组继续以最关键的核心技术用户为对象。有关NetBSD项目的详情,可参见http://www.netbsd.org。
在NetBSD小组成立后几个月,FreeBSD小组成立,其宗旨是仅支持PC体系并追寻一个数量更多(但更少技术化)的高级用户组,正如Linux所做的那样。 他们建立了精致的安装脚本并开始以低成本的CD-ROM发行他们的系统。 系统易于安装、强大的网上促销,以及像在Comdex上这样一些关键的贸易展览会上频频露面,这一切有机地结合在一起,掀起了又快又大的增长浪潮。 毫无疑问地,现在的FreeBSD的安装数量在所有Release 2派生系统中最多。
在Linux逐渐风靡的过程之中,FreeBSD也从Linux那里得到了帮助。它增加了一个Linux仿真模式,允许Linux binaries可运行在FreeBSD平台上,这个特性允许FreeBSD用户使用不断扩大的Linux应用程序,从而使FreeBSD变得更加健壮⒖煽浚 低承阅芨?谩8眯∽樽罱? 枇艘桓觥?reeBSD 商店" ( 网址是 http://www.freebsdmall.com )。它将许多的FreeBSD社团组织在一起,提供咨询服务、派生产品、图书及新闻札记等。
在90年代中期,从NetBSD小组中分离出OpenBSD小组,他们的技术宗旨在于提高系统的安全性,他们的市场目标是使得系统更易于使用并且更广泛地被采用,因此他们借用了FreeBSD发行版本便于安装的许多特性,并开始生产并销售CD-ROM。有关OpenBSD项目详细情况,可见http://www.openbsd.org。
官司编辑本段回目录
在一些小组组织起来,在Networking Release 2 磁带的基础上建立并发行自由可再发行的版本时,一家名为BSDI(Berkeley Software Design, Incorporated)的公司成立,以开发和发行以BSD代码为基础的商用的版本(更多有关BSDI的信息见http://www.bsdi.com),跟其他小组一样,他们也从那6个漏掉的文件开始的,也就是Bill Jolitz重写后放在386/BSD上的那6个文件。BSDI开始在1992年1月以每套995美元的价钱销售他们的系统,包括源代码和二进制代码。他们开始作广告, 宣称他们的价格只是System V的源代码加上二进制代码系统的99%,感兴趣的用户可致电1-800-ITS-Unix。
在BSDI的销售战役打响后不久,他们收到了来自Unix系统实验室(USL)的来信,这是一家AT&T拥有其大部分产权的机构,它主要从事开发和销售Unix。信中要求BSDI停止他们的Unix销售,特别是停用热线电话号码,尽管那个电话号码立刻被停用,并在广告中的广告词也进行了变动,解释其产品不是Unix,但是USL仍然对BSDI的作法不满并诉诸于法庭,控告BSDI销售他们的产品。 诉讼状中称BSDI产品包含了USL的代码的所有权和商业机密, USL希望能得到直到诉讼解决前使BSDI停止销售的禁令,宣称他们不能忍受由于BSDI继续销售发行版本而导致商业机密泄露所带来的损失。
在最初听到禁令时,BSDI坚决地认为他们只是简单使用了由加州大学发布的自由可再发行版本的源代码加上6个附加文件,他们愿意讨论任何有关6个附加文件的内容,但不相信他们应该对加州大学发布的文件负责。 法官同意BSDI的争辩,并且告诉USL,他们可以以6个文件为基础再陈述的诉状,或者是撤消此案。 USL意识到如果他们只陈述那6个文件,将会经历相当困难的时间处理这个官司,于是决定改写诉状,同时控告BSDI和California大学。 如以前一样,USL要求停止发行California大学的Networking Release 2,并停止在BSDI的产品中销售它。
在听说了即将发出禁令后的几个星期后,Berkeley开始了认真的准备工作。所有CSRG成员都宣誓作证,因为几乎他们所有人都受雇于BSDI,辩护、反辩护、再反辩护在律师之间来回穿梭进行,Keith Bostic和我本人不得不写下几百页的材料以供在各种辩护中使用。
在1992年12月, 新泽西州的地方法官Dickinson R. Debevoise听到了禁令的争议。尽管法官通常发布禁令非常快速,他仍然决定为之提供咨询。六个星期后的一个周五,他发表了一份长达40页的意见书,在文章中他否认禁令,并对起诉书械乃 观点(除了两点之外)表示反对。两点保留集中在最近的版权和丧失商业机密的可能性上。他还建议此案在联邦法院受理进行之前应先在州立法院系统进行?
California大学得此启示后,便立刻在接下来的那个星期的周一的上午向加州州立法院提出了对USL的反诉,通过首先在加州法院立案,加州大学已经为其进一步在州立法院的活动进行了本地化工作。宪法规定,所有州立法院的立案只能在一个州内完成审理,以防止诉讼当事人在各个州对同一案件进行50次立案。 结果是如果USL想在某个州立法院状告加州大学,则必须到加州法院上诉,而不是在他们的所在地新泽西州。
加州大学的诉状中宣称,USL未履行义务,没有向其提供付款,因其在System V中使用了BSD代码,而此项是他们与加州大学鉴定的许可证中规定的义务之一,若此指控成立,加州大学将要求USL打印出所有文档,并附加合适的信誉声明,以通知他们的版权授权用户(Licensees)他们造成的疏忽,并要在主要的出版物例如《Wall street Journal》和《Fortune》杂志上刊登整版的广告,以告知商界他们的疏忽大意。
在州立法院立案后不久,Novell公司从AT&T收购了USL。 Novell公司的执行总裁 Ray Noorda公开表示他愿意在市场上而不是在法庭上竞争。1993年夏天,双方开始协商。不幸的是,双方分歧很深,以致于对话进展缓慢。 USL方面在Ray Noorda的推动下,许多坚持不让的地方开始被取消,双方最终在1994年1月和谈成功。其结果是从Networking Release 2含有的18000个文件中去掉3个文件,并对其他文件做了一些小改动。 另外,加州大学同意在将近70个文件中加入USL版权声明,尽管那些文件仍继续被自由地再发行。
4.4BSD编辑本段回目录
在经历这番曲折后,1994年6月推出了一个新版本,称为4.4BSD-Lite。其砜芍さ奶蹩钣隢etworking Releases的条款相同。 特别之处是,许可证条款允许自由再发行源代码和二进制代码,只要在不触动加州大学的版权的完整性,并且其他人在使用代码时必须收到相同的信用声明。 同时,完整的系统被命名为4.4BSD-Encumbered发行,它仍然要求用户拥有USL源代码的许可证。
诉讼结果还规定USL不得再控告任何使用4.4BSD-Lite作为系统基础的组织。因此,当时所有的发行BSD的小组,如BSDI、NetBSD和FreeBSD等,都不得不重新开始将他们的源代码改为以4.4BSD-Lite源代码为基础,并在此基础上再合并他们的增强和提高部分。虽然这些重新集成的工作导致了不同BSD系统的开发在短期内被延迟,但幸运的是,在Networking Release 2发布后三年中,如同CSRG所做的那样,所有不同小组的开发可以再次步调一致。
4.4BSD-Lite, Release 2编辑本段回目录
由4.4BSD-Encumbered和4.4BSD-Lite版本获得的经费用于非全日制工作人员修改臭虫和增强性能等工作,这些变化持续了两年,直到臭虫报告的比例下降和特性增强已不再需要才停止。 所有的这些变化都体现在1995年6月发布的最后版本的4.4BSD-Lite Release 2中。这些变动中的大部分实际上都被用于其它系统的源代码基础中。
随着4.4BSD-Lite Release 2的发布,CSRG小组也被解散了。在领导了将近20年BSD发行的航程后,我们感觉到应该让其它有新思想和没有条条框框限制的人来接管此类工作,虽然好象最好要有一个独立的中心权威来监督系统开发,但有几个不同宗旨的小组的确可以保证尝试许多不同的方式。 因为系统是以源代码形式发布的,最好的主意是由某个或某些小组的成果易于被其他小组接纳。若某一个小组工作特别有成效,那么它的系统必将占据主导地位。 < 相约加拿大 ROLIA.NET >
今天,开源软件运动得到更多的关注和尊重,尽管Linux系统是其中最有名的一个,但是在Linux发行版本中约半数的实用程序源自于BSD发行版本,Linux发行版本也在很大程度上依赖于由FSF(自由软件基金会,Free Software Foundation)开发的实用程序,例如编译器、调试器及其它工具。 总之,CSRG,FSF和Linux 内核开发者已经创建了自开源软件出现后并以此为基础的平台。我很自豪有机会帮助过启动开源软件运动。 我希望有一天,它会成为无论什么地方用户和公司开发和购买软件时更愿意采用的方式。
参考文献
