自由使用和免费是FreeBSD的特征,在英文里都可以使用 “free” 来表示。这表示使用者不仅仅可以免费使用这个系统,还可以对软件进行适合自己需要的改动,并能够影响这个软件的发展等等,这正是free这个词更深一层的含义。
支持自由软件的人通常认为,每个计算机的使用者都有自己特定的需要,不可能有一个包罗万象、适合所有需求的软件系统。因此软件开发者和系统管理员希望了解软件内部的情况,以便可以对软件进行定制和扩展。而商业软件只提供软件的二进制代码,将软件内部的操作完全封闭起来,使用者就丧失了对软件的主动权。另外,任何软件产品都存在各种BUG,商业软件的使用者在遇到软件产品的这些问题时,就只能被动的等待厂商的补丁程序,整个软件系统不得不停顿或冒一定的风险继续使用。第三,计算机的使用者并不会完全信赖商业软件,某些软件厂商会故意在软件中加入恶意代码,或加入某种未公开的后门,对使用者造成危害。即使这些软件中的后门或恶意代码是打着防止盗版、提供更方便的功能等旗号加入的,但也可能被偶然触发,危害使用者的利益。而在提供软件源代码的软件中,就不会存在这种恶意的行为。
这些问题对于一个普通用户或者不重要,但对于一个较大的系统或要求较高安全性的系统中,就能表现出重要性了。支持自由软件的人认为,如果一个软件提供了源代码,那么使用者就能根据情况自己修改或请他人修改软件,从而适合自己的最终需要,并修正系统中因为有意或无意导致存在的问题。当前,开放源代码已经得到越来越多的计算机使用者和厂商的认可,他们组成了开放源代码组织(Open Source),来进一步推动这个思想。
另一方面,由于某些种类的商业软件中不存在竞争,垄断的结果就造成软件的价格昂贵,使得这些软件不是任何有需要的人都能够用得起的。而软件最大的价值是被人使用,因此有很多人认为软件开发者要允许别人使用他的软件,应该从软件服务中获得收益,而不是从软件本身中谋取暴利。他们认为计算机应该属于大众,而不应该由某些公司垄断。因此这些崇尚自由软件的人员就想为所有用户开发一整套系统,使用户在现有商业软件之外还可以进行选择,而不至于必须为商业软件支付额外的费用。这些人包括FreeBSD的开发人员、Linux的开发人员、GNU计划的开发人员以及其他众多的自由软件开发者,他们开发的软件构成了计算机领域内多姿多彩的一面,使得即使不使用任何商业软件,使用者也同样能够在计算机上以更好的性能完成所有的工作。
GNU's Not Unix
GNU不是Unix,采用这种递归方式定义的GNU计划是由Richard Stallman提出的,他建立自由软件基金会(FSF)并提出GNU计划的目的是开发一个完全自由的,与Unix类似但功能更强大的操作系统,以便为所有的计算机使用者提供一个功能齐全,性能良好的基本系统。GNU HURD为GNU操作系统的内核,但是当前还没有正式发布,仍处于测试阶段。很多人使用Linux内核和GNU的应用软件组成了GNU/Linux系统。右图为GNU的标志。
FSF开发了大量的自由软件来达到这个目的,这些软件与Unix上原有的软件功能相同,但由于GNU开发软件的时候硬件的处理能力更强了,因此GNU软件充分利用计算机的硬件能力,比Unix中的同样的软件功能更强,因此非常流行。这些软件在GNU通用公共许可的保护下允许任何人免费使用和传播(但必须同时提供源程序),因此被大量的用在其他的Unix中,FreeBSD上也提供了很多GNU软件。
Stallman创造了一个词copyleft,由于通常意义上的版权copyright是用来限制别人在没有许可的条件下不能使用和传播软件,而copyleft则鼓励任何人可以使用和传播软件。copyleft限制妨碍使用和传播GNU软件的行为,例如不提供GNU软件的源代码。然而copyleft与copyright并不冲突,因为 copyleft是针对软件的传播者而非针对最终使用者的。GNU软件必须使用copyleft保护,限制将GNU软件本身用于牟利目的,而其他软件仍然可以使用copyright保护版权不被侵犯。Stallman进一步使用GNU 通用公共许可来详细阐述copyleft的观念,要求传播GNU软件必须同时传播其源代码。由于GNU通用公共许可十分流行,因此很多非自由软件基金会的自由软件也使用GNU通用公共许可来保护自己软件,不被商业公司用于获利。
GNU软件许可相当宽松,有很多公司利用GNU软件进行商业活动,但只要同时提供了GNU软件的源代码,就没有违反GNU软件许可。
FreeBSD本身是在BSD许可的保护下,BSD许可权与GNU通用公共许可略有不同,一些方面的限制甚至更为宽松。GNU通用公共许可要求传播(包括销售)任何符合GNU软件应该包括源代码,反对利用保守GNU软件的源代码的方式牟利,而BSD许可则允许以二进制形式发布软件,对于某些不打算公开源代码的商业运用并没有进行限制。
GNU/Linux
FreeBSD并不是唯一的免费 “Unix” 操作系统,也不是最流行的Unix系统,这个荣誉属于Lin ux。这主要由于Linux出现得早两年,那时BSD的源代码还受AT&T许可权的限制,不能自由获得,而I ntel的32位处理器386的普及已经使Internet上诸多Unix爱好者对PC平台上的免费Unix系统提出了需求,Linux应时而生。近来在Netscape等商业公司的倡导下,Linux得到众多商业公司的支持,无形中成为了反Microsfot联盟的一杆旗帜,声势更为浩大。
Linux是由芬兰人Linus Torvalds编写的Unix兼容系统。由Linus Torvalds 负责核心开发和维护,其他组织和商业公司负责将Linux的核心和应用程序组织在一起发布,由于大部分程序为GNU软件,因此更严格的说Linux应该被称为GNU/Linux。当前流行的Linux版本有slackware 3.6 ,Debian 2.0,RedHat 5.1等。
Linux和FreeBSD同为英特尔平台上的Unix操作系统,因此有很多相似之处。几乎所有的自由软件都同时支持Linux和FreeBSD,因此在应用方面他们也很相似。但Linux和FreeBSD也有相当大的不同之处,可以说各具特色。
从历史渊源上讲,FreeBSD继承了BSD Unix的代码,因此代码相当成熟和稳定。而Linux是一个全新的系统,是遵循POSIX规范开发的一个独立操作系统,但又提供了与BSD Unix或Unix System V的兼容性。因此Linux完全没有受到1992年的AT&T诉讼的影响,结果成为了最流行的自由操作系统。虽然今天那次法律纠纷已经解决,4.4BSD Lite的代码可以自由获得,但FreeBSD的使用者仍要少于Lin ux的使用者,FreeBSD的使用者多数为网络和计算机专业人士,普及程度较低。
出于这个历史渊源的原因,FreeBSD是一个完整的系统,从系统核心到系统提供的程序均来自BSD Uni x,部分GNU软件是用于代替BSD Unix中的一些老版本软件。而Linux仅仅只是一个操作系统的内核,其应用程序大部分为GNU软件,然后由不同的组织或个人将这些GNU软件与Linux内核整合在一起的。因此就存在多个不同的Linux版本,而且不同的Linux版本使用不同的组合方式,因此各种Linux版本之间有很大的差异,并且可以预计这些版本会随着发展进一步增大彼此的差异。而FreeBSD的版本比较整齐清晰,只有一个FreeBSD版本。
通常FreeBSD更关心稳定性,而Linux具备的各种新特性更多。由于Linux得到了更多的商业公司支持,因而Linux下的商业软件也更多。但是这些商业软件均可以通过FreeBSD对Linux执行文件的支持,也能够运行在FreeBSD上。这个不同主要是由于Linux和FreeBSD的开发过程的差异造成。
虽然FreeBSD和Linux的开发过程都是非常开放的方式,每个开发者独立进行自己的工作,通过Inte rnet来互相交流。任何对系统开发有兴趣的人都能贡献新的想法,并组建一个开发队伍或加入现有开发队伍将自己的想法实现。但是FreeBSD与Linux开发方式的不同是,FreeBSD有一个开发者组成的核心小组(FreeBSD core team)对整个FreeBSD负责。任何人都可以利用FreeBSD提出自己的开发计划,但只有Free BSD核心小组认为这个计划对整个FreeBSD发展有益,这个计划才能列入FreeBSD计划本身。所有的Free BSD开发者共享同一个源代码树,使用并发版本维护工具CVS进行维护。有了FreeBSD核心小组从整体上规划Fr eeBSD,并邀请其他开发者加入核心小组,因此FreeBSD显的更简洁和干净,版本发展也比较稳定。而Linux 仅由Linus对内核进行维护,任何人都可以组织自己的计划,贡献自己的代码,没有一个统一的源代码树,只是在最后由 Linus进行整合和发布正式内核。由于没有严格的控制,并且Linux的开发者很多,因此Linux中虽然有更多的新特性,却显得略为杂乱,并且有些新特性的代码没有经过时间验证,可能存在有问题。
一个新功能没有进入FreeBSD正式版本的原因很多,有的是由于这个功能不够成熟,有的是由于核心小组认为这个特性意义不大,还有的是因为正式内核已经有类似功能,或者由于专利或版权问题(例如,该软件的作者不打算让该软件成为自由软件),使得十分成熟的功能也不能被列入正式发行的版本。
由于Linux和FreeBSD互为竞争对手,在Internet上关于Linux和FreeBSD的争论很多,然而这种争论一般不会得到什么明显的结果。事实上他们都能完成各种应用需求,但各有自己的侧重点,至于那种系统最适合自己,需要根据具体情况而定,使用者的个人喜好也是影响选择的一个重要因素。一般FreeBSD的使用者也曾经(或同时)是Linux的使用者,然而有Linux的使用经验对学习和使用FreeBSD也有不少帮助。只有竞争才能促进发展,Linux和FreeBSD不但是竞争的关系,也是相互学习的关系,只有如此各自才能不断发展。
在作者个人的使用经验中,FreeBSD仅有过一次崩溃,并且这种崩溃不是随机出现的,其原因是使用了所有优化选项来编译内核,编译器某项优化造成了内核的BUG,结果就在执行某项操作时就被触发。在降低了优化级别之后,问题就消失了。因此这个问题应归结为编译器的问题而非内核的问题。在Linux中,问题更为严重一些,过于求新求功能的多样性,使得系统崩溃更频繁,并且很多系统崩溃无法找到原因。
注意:系统崩溃和系统死锁不同,一些情况下一些应用软件死锁会造成键盘或显示没有响应,然而仍然可以通过网络或其他终端设备登录进系统杀死死锁进程。例如在FreeBSD下执行Linux的X Server时,进行切换虚拟控制台的操作就会导致键盘死锁。
当前Linux的一个发展热点是各个商业公司的参与,这的确丰富了Linux下的软件。然而另一方面,商业公司也试图把专有设计引入Linux,将原有开放的环境变为商品化的环境,以便从中牟利。当前不同版本的Linux之间的差异已经相当大了,很多人已经意识到了Linux面临的分裂危险,可以想象以后某个版本的Linux会与其他版本存在兼容性问题。而FreeBSD有统一的源代码树,不存在分裂的问题。
其他BSD系统
商业版本的BSD/OS也是一个非常优秀的操作系统,它是由原BSD Unix的部分开发人员组成的BSDI 公司的产品。由于存在商业支持,因此在某些方面具备免费的FreeBSD不具备的优势。例如某些硬件厂家不愿意公开自己的硬件资料(或者是有条件的公开),因而使得FreeBSD无法支持他们的硬件,而他们可以为BSDI提供资料以供开发驱动程序。一些不能理解自由软件、要使用FreeBSD不支持但BSDI支持的硬件,或对服务和技术支持提出较高要求的使用者,可以选择使用BSDI。
NetBSD和OpenBSD也是基于4.4BSD的自由Unix操作系统,可以算是FreeBSD的兄弟。甚至在最初,NetBSD和FreeBSD的大部分开发者都完全相同,同样的开发者同时为两个系统进行开发。而开发者和使用者都是将这两个系统作为BSD Unix在不同硬件平台的实现来看待的,FreeBSD用于Intel平台,而 NetBSD用于多硬件平台,主要用于RISC工作站硬件。随着两个系统的不断发展,两者逐渐相分离,而OpenBS D是从NetBSD分出的一个分支。但FreeBSD是为个人计算机平台设计的,后来才尝试移植到其他平台上(已经有 Alpha和Sparc芯片下的FreeBSD系统,但还不十分成熟),因此更适合个人计算机用户,而NetBSD和 OpenBSD一开始就设计为能够运行在多系统平台上,包括各种RISC工作站,因而NetBSD和OpenBSD的使用范围就更窄一些。
以上这些BSD Unix系统的使用数量要少于FreeBSD系统。FreeBSD由于专注于Intel平台,支持Intel平台上的硬件种类最多,并对易用性作了很大改善,因而使用范围更广泛,是最常见的BSD Unix系统。但是由于这些系统同属BSD来源,在开发过程中常常相互交流,因此使用方法和管理基本相同。在FreeBSD、N etBSD、OpenBSD之间进行选择的决定性因素常常是安装BSD系统的硬件平台