2008-09-19

FreeBSD的起源和发展

Unix的魅力不仅在于其功能的强大性,还在于其优秀的可扩展性,它提供了高级语言C和各种解释语言可用于编写程序。利用这些系统提供的工具,使用者就能按照自己的需要和兴趣对原有系统进行扩展,满足相当一部分计算机研究人员和使用者的需要,这样Unix就具备更强大的能力,完成各种复杂的任务。一旦用熟了Unix,体会到Unix的强大功能,使用者就会希望一直使用它,而不是仅具备有限能力的其他计算机系统。企业也希望能在其可以承受的条件下,利用 Unix系统的强大处理能力。

由于Unix是多用户操作系统,作为系统的普通使用者只能使用系统提供的有限功能,而只有Unix系统管理员才能充分利用其的全部能力。因而拥有自己的 Unix系统也是一个普通Unix使用者的愿望。但是在那些时候,能够满足这些愿望的计算机并不是每个人都能买得起的。昂贵的硬件,以及Unix逐渐商业化趋势,都使得拥有自己的Unix对大多数人只是美好的愿望,而使用Unix的地方主要为一些要求较高的科研和大中型公司机构。

到80年代,个人计算机的出现,使得硬件的价格能被个人和小企业接受了,给拥有一个Unix系统的愿望带来了一线曙光。但是使用8086芯片的个人计算机能力比较差,在其上不能实现真正正常工作的多用户系统。进入九十年代之后,英特尔公司推出的80386芯片使个人计算机的计算能力大大提高,在个人计算机上构建一个可以真正使用的Unix也成为了可能。

事实上此时能运行在X86平台上的Unix相当有限,Mircosoft的Xienx是一种(后来发展成为SCO Unix),但不能指望能自由、免费使用这个商用系统。要移植Unix到PC平台上便需要Unix的源代码,而此时受AT&T的许可权的限制,Unix代码还不能被自由获得(但在BSD与AT&T的法律纠纷之后的4.4 BSD Lite不再受这个限制了,可以在BSD许可下自由使用)。很多计算机爱好者为了实现一个可以自由使用的操作系统,不但进行着努力。自由软件基金会的 GNU计划的目的就是打算创建一个自由的、与Unix类似的操作系统,为了实现这个目的,GNU开发了很多非常有效的工具、包括编译器和很多系统命令,然而GNU计划中的操作系统内核──HURD,却进展缓慢,从而无法构建一个完整的操作系统。很快,就有计算机爱好者开始考虑在个人计算机平台上构建一个 Unix内核。芬兰一位计算机研究生Linus Torvalds开始了这个工作,他通过学习Minix──一个用于教学目的的简单Unix系统,在x86平台上构建了Linux内核,这个内核和GNU 的系统工具结合起来,取得了相当大的成功,成为当前非常流行的GNU/Linux系统。

与这些努力相比,BSD方面的研究人员的行动则比较迟缓,一个原因是Unix技术上已经相当成熟,计算机系统研究组的大部分成员已经把注意力转向了其他研究项目,另外AT&T与BSD的法律纷争也使得BSD发展受到了阻碍。但是还是有两个将BSD移植到80386平台的开发工作同时进行,一个是BSD/386小组,他们的研究结果为商业版本的BSD/OS,属于商业公司BSDI。另一个就是386BSD计划,后来发展成为FreeBSD。

CSRG研究人员的条件比较优越,拥有足够的Unix系统,因此对个人计算机平台上的Unix系统没有太急迫的要求。

386BSD计划由Bill Jolitz等研究人员发起,将4.3BSD Net/2移植到80386平台上,并使用386BSD的名称发布。但是移植工作是一个复杂的任务,直到386BSD 0.5版本,系统中仍然存在相当多的问题没有解决。于是在1993年,另一些研究者决定加入这个计划,打算和Bill Jolitz一起修正系统中存在的问题。但是这时计划的组织者Bill Jolitz突然决定退出,使得386BSD计划面临停止的危险。Bill Jolitz作为计划的发起者和负责者并没有对这个计划以后该如何发展给出具体意见,因此386BSD计划是到此为止还是继续发展,就取决于其他开发者的决定。幸运的是,该项目的另三个参与者Nate Williams, Rod Grimes和Jordan K. Hubbard决定继续这项非常有意义的工作,他们采用由David Greenman创造的名字FreeBSD作为系统的新名字,从此有了一种任何人都可以自由使用的Unix操作系统 ── FreeBSD。

BSD Unix使用一个神话中的精灵形象作为其吉祥物,这个吉祥物标志被FreeBSD、NetBSD继续使用,但不同BSD系统的精灵略有不同,右图为 FreeBSD的BSD精灵形象。当用户浏览Internet时,会在很多与FreeBSD相关的网站上看到这个可爱的精灵标志。

1993年12月对于FreeBSD来讲是非常重要的日子,FreeBSD 1.0版本于这个月正式发布。这次FreeBSD的开发者找到了一家出版商Walnet Creek提供支持,来发布FreeBSD的光盘和提供高速Internet网络服务,使得任何人都可以通过购买光盘或者通过Internet下载的方法,自由获得FreeBSD系统,使得FreeBSD取得了很大成功。而Walnet Creek也使用FreeBSD建成了Internet上最大、最繁忙的匿名文件服务器──ftp.cdrom.com。

FreeBSD虽然可以自由获得,然而BSD与AT&T的法律纠纷仍然威胁着FreeBSD系统的合法性。就在FreeBSD得到相当多用户欢迎的时候,Unix系统实验室(此时已经卖给了Novell)与伯克利计算机系统研究小组的法律纷争有了结论。虽然最后不必进行赔偿,但是BSD Unix系统中必须去除原来来自AT&T的源码。伯克利计算机系统研究小组去除了这些不到10%源码,发布了4.4BSD Lite,其他基于BSD的Unix,包括FreeBSD在内,都被要求立即转换到4.4 BSD Lite上去。

这对FreeBSD是一次相当严重的打击,虽然4.4 BSD Lite只删除了一小部分代码,但尤其对于英特尔80386平台,缺乏这些代码,系统就不能正常运转。FreeBSD小组必须解决两个任务,首先是将 FreeBSD从原本的4.3BSD迁移到4.4BSD上,再将删除的源码完全重写。这些任务相当于将4.4BSD Lite重新移植到80386上,因此这花费了FreeBSD核心小组很大的精力。因此直到1995年1月他们才发布了FreeBSD 2.0,这次就是一个完全的4.4BSD Lite的系统了。但是在大约一年时间之内,FreeBSD不能在原有1.0基础上进行改进并推出新版本,而这个时期正是Internet进一步发展的阶段,FreeBSD错过了一个发展壮大的好时机。而其竞争对手,如Linux,则取得了巨大的成功。

接下来,FreeBSD加快了开发节奏,2.1、2.2、3.0相继推出,这个系统在Internet上的应用也越来越多,尤其是对于要求高性能、高可靠性的网络服务器系统,FreeBSD提供了一个极具诱惑的选择。

由于Unix商标属于X/Open组织,而FreeBSD只是一个自由操作系统,从法律角度上看FreeBSD不能被叫作Unix(不能使用 Unix做商标)。但是基于Unix本身的历史,FreeBSD可以算最原汁原味的Unix,在有的方面,它更具传统特色──或者说BSD Unix的学院特色。当前,Unix商标其实是只具有象征性的含义,没有人介意到底那些系统是X/Open的成员,可以被称作Unix,那些不是。 Unix已经成为一个广泛的概念,只要是按照Unix为模板进行开发,所有的应用程序在C源程序级与其他Unix相互兼容,也同样被所有使用者承认为 Unix系统。因此这里的Unix包括BSD和System V在内的各种系统,也包括像Linux这样的兼容系统。

当前FreeBSD的版本

由于FreeBSD十分关心系统的性能和稳定性,同时FreeBSD的开发又非常活跃并十分开放。因此在系统开发中支持几个版本的FreeBSD系统并行发展,一些版本用于提供一个最具稳定性的操作系统,另一些版本逐渐融合进各种新特性,使FreeBSD不断发展。当前主要使用的FreeBSD有三个分支版本:

FreeBSD2.2.x-stable:这个分支是当前Internet上大部分网络服务器上使用的FreeBSD版本,经过无数实践验证,具有高稳定性的特点。但是由于3.0版本已经正式发布,FreeBSD的开发者已经于1999年1月决定停止对这个版本的开发,这个FreeBSD的分支版本进入维护状态,将仅仅进行修补一些可能存在的系统漏洞等工作。因此除非是现存的FreeBSD系统,或者为了特殊目的要使用一些基于2.2.x开发的特殊软件,新安装的FreeBSD系统应该使用FreeBSD-3.x版本。这个系列中最后一个正式发布的光盘版本为FreeBSD 2.2.8-release。

FreeBSD3.x-stable:这个版本的第一个正式版本3.0-release,它于1998年10月正式发布,随后就成为了稳定版本。它与2.2相比增加了对很多新硬件的支持,并进一步提高了性能。当前最新的版本为FreeBSD 3.5-release。

FreeBSD4.x-stable:FreeBSD 4.x版本进一步改进了内核的性能,并增加了不少新的特性,例如增加了Ipv6, Ipsec的支持。当前最新的发布版本为4.5-release。对于安装新的FreeBSD系统来讲,应该选用这个版本。

FreeBSD5.0-current:FreeBSD 5将改善对多处理器的支持,线程支持能力,使得FreeBSD系统在高端服务器上能发挥更大的优势。FreeBSD 5.0当前还处于开发阶段,还没有任何正式发布版本,需要通过Internet获得源代码进行安装。

可以看到,FreeBSD的版本使用current或stable后缀进行修饰,其中使用stable修饰的版本是一个稳定的版本,它不是 FreeBSD的最新版本,主要关心系统的性能和使用的连续性,同一个stable分支中的下一个版本主要是修订系统问题,因此stable分支得到很多商业用户的欢迎。current表示这个版本是正在开发的版本,还不成熟,它更关心新特性,每种可能的特性都被开发者尝试加入进FreeBSD中,但并不保证以后的正式发布版本会支持所有的特性,一些特性会因为不成熟或对大部分用户无益,即使曾经加入也可能从正式版本中去除。通常FreeBSD的爱好者和开发者使用这个分支,或者一些需要某些FreeBSD的新特性的用户,就必须使用这个分支。

FreeBSD选用current和stable来修饰FreeBSD不但是因为FreeBSD是一个不断发展、更新的系统,而且FreeBSD 还是一个由Internet上的用户参与开发、使用Internet交流开发工作的系统。这与商业软件不同,商业软件的开发工作在公司内部,外界不能访问正在开发的版本,不能对要开发的软件发表意见和提出建议。而FreeBSD则相反,任何人只要通过Internet,都可以访问到FreeBSD的源码,并且FreeBSD开发者鼓励别人访问当前正在开发的源程序,鼓励提建议和进行自己的FreeBSD开发计划,如果这个计划的确不错,那么这个开发者就能被邀请进入FreeBSD开发组,他的计划就能被合并到正式的FreeBSD开发中去。但是,如果一个系统老是处于不断开发的过程,没有一个稳定的版本,显然得不利于希望将FreeBSD用在日常业务处理任务的普通用户。因此FreeBSD并存着两个同时发展的版本,stable版本为稳定版本,相当于商业软件中的对外发行的版本,current版本为正在开发的版本。当一个current版本已经足够稳定,这个版本就转变为stable版本,而 FreeBSD开发组将转入下一个current版本的开发工作。

除了current和stable之外,还有另外两个后缀用来修饰FreeBSD的二进制发行版本。一个是release,如FreeBSD 3.0-release,表示这是一个正式发行的FreeBSD版本,但这个版本可以处于current分支或stable分支。但如果一个 FreeBSD的current分支发布了release版本,这将表示它离进入stable状态不远了,此后该版本实际上不会再作太大的改动,已经是一个完全可用、足够稳定的FreeBSD版本了。另一个后缀是snapshot,如FreeBSD 4.0-snapshot,表示这是一个预览版本,用于FreeBSD爱好者提前查看current分支当前的开发状态,尝试新特性用的。FreeBSD 的光盘发行版本常常使用这两个词进行修饰。

因此对于FreeBSD用户,需要根据情况选择使用不同的版本。对于正式使用,应该选择stable版本,而对于进行学习、研究、开发FreeBSD,可以考虑使用current版本。

FreeBSD的功能特点

FreeBSD的运行环境是使用英特尔x86系列处理器的个人计算机,当然在AMD和Cyrix等公司的兼容芯片上运行也毫无问题。此外,FreeBSD 也被移植到使用alpha芯片上的RISC工作站环境上,alpha版本的FreeBSD已经正式发布了多个版本,是一个成熟的64位操作系统。 FreeBSD也支持Sparc和UltraSparc系列芯片,然而这个移植版本还没有正式发行版本。未来,FreeBSD将继续支持IA-64和 AMD的64位芯片,不仅仅是运行在这些芯片的兼容模式下,而是提供完整的64位支持。

从FreeBSD的起源和发展过程可以看出,FreeBSD是一种自由Unix系统,它是由计算机科学家、软件工程师等志愿者通过 Internet合作开发的,目的是为所有的使用者提供没有任何附加条件的自由Unix操作系统。初次接触自由软件的人,也许会怀疑软件的应用功能、性能等问题。但免费获得的方式和使用个人计算机硬件环境并不意味着FreeBSD系统仅仅是个人用户的玩具,事实上FreeBSD能够完成几乎所有其他 Unix能完成的工作,应用范围十分广泛,并且性能非常优秀。在网络上使用FreeBSD用作网络服务器操作系统非常普遍,FreeBSD也是使个人计算机成为高性能Unix工作站的一条捷径。

没有评论:

留言须知:
0. 你有權保持沉默,但你所說的將作為此BLOG有人訪問的證據。
1. 支持的HTML標籤:<a href="" title=""> <b> <em> <i> <strong>。
2. 留言留名,不然易被无视。(在“评论”中选择“名称/网址”,网址可以不填)。
3. 原則上我不删除留言,除非那則留言侮辱到你。