FreeBSD的发展历史
FreeBSD的起源最早可以追溯到贝尔实验室的第一版UNIX。1969年,Ken Thompson,Dennis Ritchie和其他成员在一台PDP7计算机上完成了UNIX的早期版本。
Ritchie先前一直从事于MULTICS计划,MULTICS对以后的新操作系统有很大的影响。甚至名称UNIX也不过是MULTICS的双关语。基本的文件系统组织,命令行接口,对每个命令使用分离的进程,最早的行编辑字符(#用于删除最后一个字符,@用于删除整个一行),和其他很多特性直接源自于MULTICS。其他一些操作系统像MIT的CTSS和XDS-940系统也吸收了很多MULTICS的思想。后来UNIX又被移植到了PDP- 11/45和11/70上,添加了多道程序设计和其他很多新特性。
在UNIX开发完后,它在贝尔实验室内部被广泛使用,渐渐地又把它分发给了几个大学。1976年发布了贝尔实验室以外被广泛使用的版本6。
1978年,版本7发布了。这个UNIX系统可以运行在PDP-11/70和Interdata 8/32上,实际上也是绝大多数现代UNIX系统的祖先。特别是,它又被移植到了其他PDP-11系列机和VAX计算机上。VAX上可用的版本叫做 32V。此后,研究工作仍然在继续。
在1978年发布了版本7后,UNIX支持组(USG)在AT&T(贝尔实验室的母公司)内部担负起了UNIX发布的管理控制工作。
UNIX逐步地变成了一个产品,而不是先前的一个研究工具。UNIX的研究组为了支持他们自己内部的计算机,继续开发着他们自己版本的UNIX。接着,就发布了版本8,它包含了一个叫做stream I/O system的工具,允许对内核IPC模块进行灵活地配置。它也包含了RFS,与Sun的NFS很相似的一个远程文件系统。
接着,又发布了版本9和版本10(是1989年发布的最后版本,只能用在贝尔实验室内部)。
USG主要在贝尔实验室内部提供UNIX的支持。来自USG的第一个外部发行版是1982年的System III。System III合成了版本7和32V的特性,在它里面包含了一个实时UNIX系统UNIX/RT。1983年USG发布了System V,它主要源自于System III。
1984年,USG被改组为UNIX系统开发实验室(USDL),它发布了UNIX System V Release 2 (V.2)。UNIX System V Release 2,Version 4 (V.2.4)添加了用于页面调度和共享内存的虚拟内存的执行机制。USDL接着由AT&T信息系统所替换(ATTIS),它在1987年发布了 System V Release 3 (V.3)。V.3调整了stream I/O system的执行机制,使它可用作STREAMS。它也包含了RFS,一个类似NFS的远程文件系统。
早期UNIX系统的模块化和干净的设计使得很多计算机科学组织都基于UNIX进行工作,像Rand,BBN,Illinois,Harvard,Purdue大学,甚至DEC公司。最有影响力的UNIX开发组是加州大学伯克莱(Berkeley)分校。
最早的Berkeley VAX UNIX版本是在1978年发布的,它加入了虚拟内存,自请求页面调度和对32V的页面替换特性。这个工作由Bill Joy和Ozalp Babaoglu完成,最终形成了3BSD UNIX。3BSD巨大的虚拟内存空间允许开发非常巨大的程序,如Berkeley自己的Franz LISP。优秀的内存管理工作使得国防部高级研究项目署(DARPA)确信应该资助Berkeley来开发一个政府使用的标准UNIX系统,这最终导致了 4BSD UNIX的出现。
4BSD从1979年发布最初版本以来一直是VAX机的操作系统,直到出现Ultrix,这是DEC的BSD执行版本。4BSD仍是很多研究机构和网络装置的最好选择。许多组织会购买一个32V的许可,然后从Berkeley订购4BSD。
针对DARPA的4BSD工作由一个策划指导委员会领导,它包括了许多著名的UNIX和网络社区中的任务。这个计划的目标之一是为DARPA提供Internet网络协议(TCP/IP)。
然而,当时的UNIX系统已经不仅仅限于贝尔实验室(当时已经成为朗讯科技的实验室)内部和Berkeley。Sun Microsystems也在他们的工作站上销售BSD UNIX。由于UNIX的广泛流行,它已经被移植到了许多不同的计算机系统上。而且创建了许多UNIX和UNIX类操作系统。DEC支持它自己的UNIX (叫做Ultrix),又用另一个源于UNIX的操作系统(OSF/1)替换了Ultrix。Microsoft改写了Intel 8088系列上的UNIX,把它叫做XENIX,它的新的Windows NT操作系统也深受UNIX的影响。IBM在他的PC,工作站和主机上使用UNIX(AIX)。事实上,UNIX几乎可以用在所有通用的计算机上。它可以运行在个人计算机,工作站,微型计算机,主机和超级计算机上,从Apple Macintosh II到Cray II。由于它的广泛可用性,就被广泛使用在从学校到军事方面进行过程控制。绝大多数这些系统是基于版本7,System III,4.2BSD或SystemV。
由于计算机厂商的广泛使用,使得UNIX成为最容易移植的操作系统,对用户来讲,它已经成为了一个独立于任何特定计算机厂商的UNIX环境。但是,各个厂商之间出现了许多不同的程序变化和用户接口。
对于独立的厂商来说,应用程序开发人员需要一致的接口。这样的接口使所有的UNIX应用程序可以运行在所有的UNIX系统上。这个问题变得非常重要,因为UNIX已经成为应用程序开发的首选平台,被广泛用在数据库到图形和网络的开发上,导致了市场强烈要求出现一个UNIX的标准。
从那以后,出现了许多官方的标准:IEEE和ISO(POSIX标准)。X/Open组织国际协会完成了XPG3,一个普通的应用环境,这个包含了 IEEE的接口标准。不幸的是,XPG3是以ANSI C标准草案为基础的,而不是最终规范,因此需要重新制定。在1993年出现了XPG4。在1989年,ANSI标准化组织颁布了标准化的C编程语言,产生了一个ANSI C规范。由于这些计划的继续,UNIX的不同特性将被统一,UNIX将产生一个统一的编程接口,使UNIX变得更加流行。事实上在这个问题上存在两派: AT&T领导的UNIX国际(UI)和开放软件基金会(OSF)都已经同意遵循POSIX标准。最近,许多厂商已经同意进行标准化,使用 Motif窗口环境,和ONC+(包括SUN RPC和NFS)与DCE网络工具(包括AFS和RPC软件包)。
在1989年,AT&T把它的ATTIS替换成UNIX软件组织(USO),由它来发行第一个融合多种系统特性的UNIX,System V Release 4。这个系统包含了来自System V,4.3BSD和Sun SunOS的许多特性,它包含长文件名,Berkeley文件系统,虚拟内存管理,符号连接,多访问组,工作控制,和可靠的信号。它也符合POSIX标准,POSIX.1。USO发布SVR4后,它变成为AT&T一个独立部门的产品,这个部门被命名为UNIX系统实验室(USL)。在1993 年,它又被Novell公司收购。
来自Berkeley的UNIX系统是由Berkeley Software Distributions(CSRG)发布的。如Berkeley VAX UNIX的后续版本3BSD和4BSD,以及一些特定的版本,特别是4.1BSD和4.2BSD。这些BSD版本主要用在PDP-11和VAX上。 4.2BSD,最早是在1983年发布的,最初的Berkeley DARPA UNIX计划的最后一个版本。
在4BSD发展过程中,有一个非常重要的版本:4.2BSD,它可以在不同的网络之间进行通信,包括本地网(如以太网和令牌环网),和广域网(如 NSFNET)。这个功能也是当前这些协议流行的主要原因。它被许多UNIX计算机厂商和其他操作系统所使用。它使得Internet从1984年的60 个相连的网络迅速发展到1993年的8000个网络,将近1000万的用户。
另外,Berkeley也添加了很多特性以提高UNIX操作系统的设计和执行水平。TENEX (TOPS-20)的许多终端行编辑功能由一个新的终端驱动程序来提供。一个新的用户接口(C Shell),一个新的文本编辑器(ex/vi),Pascal和LISP的编译器,和许多新的系统程序都是由Berkeley开发的。对于 4.2BSD,一些功能的提供是从VMS操作系统得到了灵感。
1986年,4.3BSD发布了。它与4.2BSD非常相似。它包含了很多内部的修正,包括错误修复,性能提高。一些新的工具也被加入进来,包括对Xerox网络系统协议的支持。
接着在1988年发布了下一版4.3BSD Tahoe。它包含了很多新的东西,如提供了网络拥塞控制和TCP/IP性能。而且,磁盘配置也与设备驱动相分离,现在可以很快地读取磁盘。扩展的时区支持也加入进来。4.3BSD Tahoe事实上是为CCI Tahoe系统(Computer Console,Inc.,Power 6 计算机)开发的,而不是通常的VAX机。相应的PDP-11版本是2.10.1BSD,它是由USENIX Association发布的,这个组织也出版了4.3BSD的手册。但是,所有的BSD用户必须先得到一份AT&T的源代码许可证,这是因为 Berkeley从来没有仅以二进制的方式发行过BSD系统,发行版本总是包含了系统每个部分完整的源代码。随着AT&T源代码许可费用的增加,一些希望能够使用BSD代码为PC市场制造独立的基于TCP/IP联网产品的厂商们发现,按照每个二进制拷贝交费是行不通的。于是他们要求Berkley 将联网的代码和使用程序从BSD发行版中分离出来,并且签发他们自己的许可证条款,而不需要AT&T的源代码许可证。所以最初的BSD联网代码和支持性应用程序在1989年6月作为“Network Release 1”发布。
同时,开发工作仍在继续。BSD系统又加入了源自于Mach系统的虚拟文件系统和与Sun兼容的网络文件系统(NFS)。由于那时还没有完整特性的 4.4BSD可以发布,所以发布了代号为4.3BSD Reno的过渡性版本。后来又发布了有重大改进的“Networking Release 2”。
Bill Jolitz在Networking Release 2基础上对系统进行了修正和补充,最终发布了可以运行在386体系上的完整系统,它称之为386/BSD。但由于Jolitz没有更多的时间来处理大量的臭虫和改进386/BSD,所以在发布了386/BSD版本发布几个月内,一些386/BSD用户成立了一个小组,发布叫做NetBSD的版本。在 NetBSD小组成立几个月后,FreeBSD小组成立了。
为了给那些不容易访问互联网的用户提供一个FreeBSD的发行渠道,FreeBSD小组开始跟Walnut Creek CDROM发行商进行联系。Walnut Creek CDROM发行商不仅愿意为他们发行FreeBSD光盘,而且还为他们提供开发这一计划所需要的计算机和快速的互联网接入。没有Walnut Creek CDROM的支持,他们就没有信心去开发这一计划,也不可能有今天的FreeBSD。
第一张FreeBSD光盘是在1993年12月发布的,他们把它命名为FreeBSD1.0。这一版本是以伯克莱加州大学的4.3BSD-Lite (“Net/2”)为基础的,它带有386BSD上的许多组件还有自由软件基金会(FSF)的许多软件。对于一个早期的产品来说,它还算成功。接着,在 1994年的5月份成功地发布了FreeBSD1.1版本。
在UNIX发展到比较成熟的时候,有一件很不幸的事情发生在Berkeley的CSRG身上。UNIX由于太成熟了而不能再被视为一个研究项目,整个作品被锁在围墙中:CSRG将被解散。许多人决定把Berkeley UNIX移植到PC上,就在几年后SCO完成了这样的工作。根据Berkeley的传统,他们决定把它贡献出来。但是工业界的反应并不友好。在1992 年,AT&T的USL(UNIX Systems Labratories)开始起诉Berkeley Software Design Inc.(BSDI)——BSD/386和BSD/OS操作系统的开发者,与FreeBSD很相象,声称违反了AT&T的源代码发布许可。他们后来与University of California,Berkeley进行了长期的法律诉讼。最终,进行了庭外和解,详细的条件并没有被完全公布。唯一大家知道的是BSDI必须将他们产品的源代码移植到比较新的4.4BSD-Lite上。虽然没有陷入诉讼,但他们还是建议把FreeBSD移植到4.4BSD-Lite上,直到1994 年发布FreeBSD2.0版的时候才把这个工作完成。虽然系统很多地方还很粗糙,但是这一发行版还是很成功的。到1995年6月份发行2.0.5版的时候,它已经变得非常强大和容易安装了。
他们在1996年8月发布的FreeBSD 2.1.5版,它已经在ISP和一些商业团体中广泛流传。另外一个发行版沿着2.1-stable分支继续发展,直到1997年2月发行2.1.7.1版后才终止了这一分支。现在这些分支处于维护阶段,仅仅是增强一些安全性和修补一些错误。
1996年的11月,从主开发线(“-CURRENT”)分出来FreeBSD 2.2作为RELENG_2_2分支。作为这一分支的最早发行版是在1997年4月发布的2.2.1版,这个分支直到1998年11月的2.2.8版时才宣告结束。正式的3.0发行版是在1998年10月份出现的。
到了1999年1月20日又出现了新的分支,那就是4.0-CURRENT和3.X -STABLE分支。从3.X-STABLE开始,3.1版是在1999年的2月15日,3.2是在1999年5月15日,3.3版是在1999年的9月 16日,3.4版是在1999年的12月20日,3.5版是在2000年的6月24日发布的,几天后又加入了一些安全性方面的修补,这一分支最终发展到 3.5.1版本。这也是3.X分支的最后版本。
到了2000年3月13日又出现了另一个分支4.X-STABLE。现在,他们采用“current-stable”的分支方法。从这时开始,又有了好几个发行版:4.0版在2000年3月发布,4.1版在2000年7月发布,4.2在2000年11月发布,4.3在2001年4月发布,4.4在 2001年9月发布。沿着4.X-STABLE这一分支将不断发展到2002年。