SI - 系统 - 操作系统简述 (Operating System)

2023-06-08,,

Unix 操作系统:System V、BSD

Microsoft Windows

Apple Mac OS

Linux

FreeBSD 安装

https://jingyan.baidu.com/article/915fc414b747a151394b20df.html

件。

UNIX和类Unix操作系统

UNIX System V家族
▪ A/UX ▪ AIX ▪ HP-UX ▪ IRIX
▪ LynxOS ▪ SCO OpenServer ▪ Tru64 ▪ Xenix
▪ Solaris ▪ OS/2    
 
BSD UNIX-386BSD家族
▪ BSD/OS ▪ FreeBSD ▪ NetBSD ▪ NEXTSTEP
▪ Mac OS X ▪ iOS ▪ OpenBSD ▪ SUN OS
▪ OpenSolaris      
 
UNIX-Like
▪ GNU ▪ Linux ▪ Android ▪ Debian
▪ Ubuntu ▪ Red Hat ▪ Linux Mint ▪ Minix
▪ QNX ▪ GNU/Linux ▪ GNU/Hurd ▪ Debian GNU/Hurd
▪ GNU/kFreeBSD ▪ StartOS    
 
其他
▪ DOS ▪ MS-DOS ▪ Windows ▪ React OS
 
参考资料

下面简单说下bsd家族和system V 家族的区别

1、System V 和BSD同出于AT&T实验室的分别两个部门,SystemV是一个Unix的商业化标准,BSD为Unix标准化的Berkeley风格。  
       2、SystemV是商业化的Unix产物,BSD更注重学院派的作风「遵循GPL规范」。SystemV诲涩难懂,BSD以简洁著称。目前俩者之间官方没有对此作过实质性的测试和评价。
       3、目前只有Slackware是Linux发行版中唯一使用BSD风格的版本。其他的就是FreeBSD、NetBSD和OpenBSD三个著名的BSD发行版,并遵循「GPL规范」。在商业版的Unix及多数Linux发行版使用SystemV风格的init『可能有版权纠纷问题』。Linux代表的有:RedHat、Suse、MDV、MagicLinux、Debian等几乎大部分发行版。Unix代表的有AIX、IRIX、Solars、HP-UX
       4、System V能够为不同的运行级别定义启动哪些服务,如定义在 3 的运行级别下开机启动 FTP 服务,而在 5 的运行级别下开机不启动 FTP 服务,而采用BSD没有运行级别的概念。
       5、System V启动方式:也就是linux采用的启动方式,启动服务的脚本放在/etc/rc.d/init.d下面,而BSD启动方式在/etc/rc.d和/usr/local/etc/rc.d中存放启动服务的脚本

另外,在上面的分类中有个地方需要注意,system V 家族的solaris和bsd家族的sun os,下面简单说明下区别。

SunOS是Sun的操作系统最初叫法,SunOS主要是基于BSDUnix版本。SunOS 5.0开始,SUN的操作系统开发开始转向System V Release 4,并且有了新的名字叫做Solaris 2.0;Solaris 2.6以后,SUN删除了版本号中的"2,因此,SunOS 5.10就叫做Solaris 10。 Solaris的早期版本后来又被重新命名为Solaris 1.x. 所以"SunOS"这个词被用做专指Solaris操作系统的内核,因此Solaris被认为是由SunOS,图形化的桌面计算环境, 以及它网络增强部分组成。

Solaris与Sunos的版本转换: 
           Solaris 8 = Sunos 5.8,Solaris 7 = Sunos 5.7,Solaris 2.6 = Sunos 5.6,Solaris 2.5 = Sunos 5.5…… 
因为自Sunos 5以后,就叫Solaris了。 Solaris也有分服务器版和个人版,它们分别是: 
服务器版:sparc 
个人版:x86

目前,Unix操作系统不管其内核如何,其操作风格上主要分为SystemV(目前一般采用其第4个版本SVR4)和BSD两种。其代表操作系统本别是Solaris和FreeBSD。当然,在SunOS4(Solaris1.x)之前,Solaris采用了BSD的风格,而2.x之后,Solaris投奔了SystemV阵营,不得不说是一个叛逆。

SystemV的鼻祖正是1969年AT&T开发的Unix,随着1993年Novell收购AT&T后开放了Unix的商标,SystemV的风格也逐渐成为Unix厂商的标准。BSD的鼻祖是加州大学伯克利分校在1975年开发的BSDUnix,后被开源组织发展为现在众多的*BSD操作系统。

它们之间的区别主要为:

  Sytem V BSD
Root脚本位置 /etc/init.d /etc/rc.d
默认Shell Bshell Cshell
文件系统数据 /etc/mnttab /etc/mtab
内核位置 /UNIX /vmUnix
打印机设备 lp rlp
字符串函数 memcopy bcopy
终端初始化设置文件 /etc/initab /etc/ttys
终端控制 termio termios

这里需要说明的是:Linux不能称为"标准的Unix“而只被称为"Unix Like"原因有一部分就是来自它的操作风格介乎两者之间,而且不同的厂商为了照顾不同的用户,各linux发行版本的操作风格之间也有不小的出入。

BSD(BerkeleySoftware Distribution,伯克利软件套件)是Unix的衍生系统,1970年代由伯克利加州大学(UniversityofCalifornia, Berkeley)开创。BSD用来代表由此派生出的各种套件集合。

BSD 常被当作工作站级别的Unix系统,这得归功于BSD 使用授权非常地宽松,许多1980年代成立的计算机公司,不少都从BSD 中获益,比较著名的例子如DEC的Ultrix,以及Sun公司的SunOS。1990年代,BSD 很大程度上被SystemV 4.x版以及OSF/1系统所取代,但其开源版本被采用,促进了因特网的开发。

System V, 曾经也被称为AT&T SystemV,是Unix操作系统众多版本中的一支。它最初由AT&T开发,在1983年第一次发布。一共发行了4个SystemV的主要版本:版本1、2、3和4。System V Release4,或者称为SVR4,是最成功的版本,成为一些UNIX共同特性的源头,例如”SysV 初始化脚本“(/etc/init.d),用来控制系统启动和关闭,SystemV Interface Definition (SVID)是一个SystemV如何工作的标准定义。

AT&T出售运行SystemV的专有硬件,但许多(或许是大多数)客户在其上运行一个转售的版本,这个版本基于AT&T的实现说明。流行的SysV派生版本包括DellSVR4和Bull SVR4。当今广泛使用的System V版本是SCO OpenServer,基于SystemV Release 3,以及SUN Solaris和SCO UnixWare,都基于SystemV Release 4。

SystemV是AT&T的第一个商业UNIX版本(UNIXSystem III)的加强。传统上,System V被看作是两种UNIX"风味"之一(另一个是BSD)。然而,随着一些并不基于这两者代码的UNIX实现的出现,例如Linux和QNX,这一归纳不再准确,但不论如何,像POSIX这样的标准化努力一直在试图减少各种实现之间的不同。

BSD

要了解 FreeBSD,首先要了解 BSD。本文介绍 BSD 的简要历史,通过了解 BSD 的发展历程,我们可以更好的理解 FreeBSD。
   BSD是"Berkely Software Distribution"的缩写,意思是"伯克利软件发行版"。显然,BSD这个名称并不是我们现在所理解的操作系统,而且其原意也并非简单的操作系统,而是一整套软件发行版的统称。从软件发行版到操作系统的演变是有历史过程的,这一点对FreeBSD很重要。
   BSD的出现要追溯到上个世纪的七十年代,当加州大学伯克利分校的学生Bill Joy在1971年完成了"Berkely Software Distribution"的合并以后(包括Pascal系统和一个编辑器ex),就算是BSD诞生了第一个发行版,并且发行了大约三十份免费的系统拷贝。
   BSD的用户社团一直在不断扩大,到了1978年,软件发行版得到了更新和升级,结果产生了第二版的"Berkely Software Distribution",即2BSD,其中包括了增强的Pascal系统,vi和termcap(Unix用户一定会对vi和termcap这两个名词感到非常亲切)。2BSD的系统拷贝也是免费的,并且其最后一个版本2.11BSD至今还在世界的各个角落运行着。
   VAX计算机的普及导致了1979年末3BSD的诞生。3BSD是Berkely的第一个VAX发行版,同样也是Joy发布的,包含了C Shell和2BSD发行版中的大量附加程序,以及虚拟内存内核和标准32/V(Bell实验室的最后一个Unix版本,运行在VAX上)实用程序。
   到了1980年10月,Joy推出了一个焕然一新的发行版本,称为4BSD,其中包括Pascal编译器、Franz Lisp系统和邮件处理系统。4BSD支持DARPA网络,版权的控制是以大学为单位的,而不是以单台计算机为基础计算。
   1980年,一个命名为CSRG(Computer System Research Group,计算机系统研究小组)的小组被组建起来负责BSD的发行工作,并于1981年6月发行了称之为4.1BSD的新版本。请注意,不是5BSD。由于AT&T觉得5BSD会使用户将它和AT&T Unix System V相混淆,Berkely同意改变BSD将来版本的命名规则,将版本号仅保留在4BSD上,以后只增加4后面的小版本号。
   4.2BSD于1983年8月正式发布,在18个月内就签发了1000多份站点许可证,是非常具有知名度的版本。到了1986年6月,4.3BSD发布,而到了1988年,CSRG发布了4.3BSD-Tahoe,这是第一个把BSD内核分解为依赖于机器和独立于机器的两部分的版本,这是非常有价值的,它使BSD得以移植到众多不同的体系结构中。
   由于BSD使用了AT&T Unix的部分源代码,当AT&T源代码许可证费用不断增加的时候,一些希望能够使用BSD代码为PC生产基于TCP/IP联网产品的厂商要求Berkely将AT&T代码从BSD发行版中分离出来,并给他们签发单独的许可证条款,而不需要AT&T的源代码许可证。因此,到了1989年6月,一个完全没有AT&T Unix代码的BSD版本诞生了,称之为"Networking Release 1"。这是第一套由Berkely发布的自由可再发行(freely-redistributable)的代码,它允许被授权的用户以源代码或者二进制的形式发布修改过的或为修改过的代码,并且可以不向Berkely申报版税,唯一要求是在源代码文件中原封不动的保留Berkely的版权声明,并且在含有以上代码的其他产品文档中声明其产品包括来自于加州大学和其他贡献者的代码。这就是著名的BSD许可证的起源。
   1990年初,CSRG发行了4.3BSD-Reno,这是一个过渡版本,此后CSRG几乎重写了整个BSD发行版本的所有代码,除了6个内核程序。正是这六个程序导致了日后BSDI公司与USL(Unix系统实验室)的一场官司。重写的新版本被命名为Networking Release 2,于1991年6月推出,它的许可证条款与第一个版本完全相同,都允许自由可再发行。在这个版本发布后的6个月内,Bill Jolitz重写了那6个漏掉的内核程序,并很快发布了完整的可运行在386PC体系上的系统,它称之为386/BSD。

386/BSD版本发布后的几个月内,一群386/BSD用户组成了一个小组,他们开始维护和增强后续系统,这就是NetBSD。NetBSD侧重于支持尽可能多的平台,并继续按照CSRG所建立的研究风格进行开发工作。在NetBSD小组正式成立后几个月,FreeBSD小组成立了,其宗旨是仅支持PC体系并尽可能多的发行他们的系统(现在,作为一个相对独立的系统,FreeBSD已经能够支持Alpha和SPARC体系)。在90年代中期,从NetBSD小组中分离出OpenBSD小组,他们的目标是提高系统的安全性,并借助了许多FreeBSD发行版本的安装特性。至此,目前最主要的三大BSD小组完全成型。

在此以后,CSRG还继续发布了4.4BSD-Lite、4.4BSD-Encumbered以及4.4BSD-Lite, Release 2三个发行版本,并于1995年6月以后被解散,完成了对BSD发行的领导工作。

(注:本文数据参考了Marshall Kirk McKusick的文章"Twenty Years of Berkeley Unix --From AT&T-Owned to Freely Redistributable",McKusick是BSD发行的核心人物之一,同时也是BSD Daemon图标的版权所有者)

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年。

现在,FreeBSD小组正在继续开发着5.0-CURRENT(trunk),预计在2002年年底的时候可以发行5.0的Release版。

FreeBSD的起源

FreeBSD是一种运行在Intel平台上、可以自由使用的Unix系统,它可以从Internet上免费获得。而它又具备极其优异的性能,使它得到了计算机研究人员和网络专业人士的认可。因此,不但专业人员把它用作个人使用的Unix工作站,很多企业,特别是ISP(Internet服务提供商)都使用运行FreeBSD的服务器来为他们的众多用户提供网络服务。
   1969年AT&T发明了Unix操作系统,还没有把Unix作为它的正式商品,研究人员只是在实验室内部使用并完善它。Unix的源代码也被散发到各个大学,这使得Unix的普及更为广泛。 
   加州大学伯克利分校对Unix的改进相当多,增加了很多当时非常先进的特性,包括更好的内存管理,快速且健壮的文件系统等,大部分原有的源代码都被重新写过,以支持这些新特性,并把他们的Unix组成一个完整的Unix系统──BSD Unix(Berkeley Software Distribution),向外发行。 
   BSD Unix在Unix的历史发展中具有相当大的影响力,被很多商业厂家采用,成为很多商用Unix的基础,BSD Unix中最先实现了TCP/IP,使Internet和Unix紧密结合在一起。经过历史上的一些版权纷争,相互促进,BSD Unix和Unix System V形成了当今Unix的两大主流,现代的Unix版本大部分都是这两个版本的衍生产品。4.4BSD Lite是现代BSD系统的基础版本。 
   BSD Unix使用一个神话中的精灵形象作为其吉祥物,这个吉祥物标志被各BSD发行版本沿用。1993年12月FreeBSD 1.0版本正式发布。任何人都可以通过购买光盘或者通过Internet下载的方法,自由获得FreeBSD系统,使得FreeBSD取得了很大成功。FreeBSD也支持着Internet 上最大、最繁忙的匿名文件服务器──ftp.cdrom.com。 
   由于Unix商标属于X/Open组织,而FreeBSD只是一个自由操作系统,从法律角度上看FreeBSD不能被叫作Unix(不能使用Unix做商标)。但是基于Unix本身的历史,FreeBSD可以算最原汁原味的Unix。

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

FreeBSD是一个自由的,源自AT&T UNIX的操作系统。目前已经不包含任何AT&T的代码。可以说它是正统的UNIX后代。而Linux是由一个芬兰Helsinki大学的学生Linus Torvalds开发的UNIX的克隆。在Linus上大学的时候,由于AT&T与加州大学伯克莱分校在BSD版权问题上发生了法律纠纷,导致BSD的源代码还不能自由使用,所以Linus写了他自己的UNIX版本(事实上,FreeBSD和Linux严格意义上不能叫做UNIX,因为UNIX是The Open Group的注册商标)。
   FreeBSD是一个完整的操作系统,包含了从开发工具到各种各样的应用程序。它由一个软件开发的核心团队来维护,整个原始程序代码会有组织地进行更新,所以程序代码比较有一致性。FreeBSD主要是由它的核心小组来发布。而Linux只是一个内核,是由Linus Torvalds个人维护的。作为一个完整的系统,Linux中还加入了许多GNU的东西。所以Linux更确切的称呼应该是GNU/Linux。Linux有很多发行商,像Redhat,SuSe,Caldera,Debian,Slackware等等,它们互相之间是不兼容的,各个厂商都加入了很多自己的东西。所以说Linux正在像当年的UNIX一样走向分裂。不过,幸运的是已经有权威人士意识到了这一点。
   FreeBSD的目标是提供一个坚如磐石的系统。它的技术性能是有目共睹的,十几年的开发使它成为一个“坚如磐石”的网络操作系统,有许许多多的大网站和ISP在运行着FreeBSD,免费和开放的特性使得它成为商业计算和科学研究的极佳平台。Linux是一个不断开发中的系统,全世界许许多多的Linux爱好者在给它加入新的特性,但给人的感觉是它还没有长大成人。Linux的起源更多的包含了一种黑客精神,而FreeBSD则纯粹是从理论团体中走出来的,带有更多的学院派色彩,而且它的发展和计算机研究部门联系非常紧密,而不是黑客们随心所欲的结果。当各公司开始雇佣黑客来安装和管理互联网时,他们会比较自然地想到Linux这个老朋友,而不是(在他们看来)死板的FreeBSD。
   FreeBSD由于采用集中式的开发方式,所以FreeBSD的安装方式比较清晰,直接和高效。但对于那些习惯于图形化安装方式的朋友来说,FreeBSD可能会让他们失望。如果你习惯了FreeBSD的安装方式,相信你一定会爱上它的。Linux由于有很多的发行厂商,所以它的安装环境也是五花八门,有基于图形的安装界面,有基于字符的安装界面。各个发行商之间的安装方式还有所差异。如果你从一种Linux发行版转到另一种Linux发行版,你就可能需要学习一个新的安装工具。
   由于FreeBSD曾经长时间地陷入了与AT&T的法律纠纷,严重阻碍了它的发展,所以使得它不太为人所知。如果没有这场法律纠纷,也许就不会有今天的Linux了。因为FreeBSD陷入法律纠纷的时候,Linux只是刚刚萌芽。Linux一个完全新开发的系统,没有遇到任何法律上的纠纷,所以在很长时间里,它是唯一一个免费的UNIX类系统,深受黑客们的喜爱。
   由于人们对FreeBSD的认识比较少,使用范围也比较小,导致了它在对一些新产品的驱动支持方面不如Linux。因为商业应用软件和驱动程序的缺乏,所以FreeBSD仍然运行着Linux的程序,不管是商业的还是非商业的。而Linux的使用范围越来越广,并且得到了许多国际大公司的支持,所以有越来越多的商业化软件可以使用。而且,发展速度相当快,一般一种新产品出来不久就会有相应的驱动程序可以使用。Linux不一定要运行FreeBSD的驱动程序。
   FreeBSD拥有许多狂热的支持者,只要有谁敢说它没有Linux好,他们就会跳出来与之争辩。Linux也拥有许多狂热的支持者,只要有谁敢说它没有FreeBSD好,他们也会跳出来与之争辩。

总的来讲,Linux也是一个优秀的操作系统。至于,它比FreeBSD更优秀,这会引起很多人的争论。FreeBSD和Linux之间的不同更多的是哲学方面的问题,而不是概念方面的问题。事实上,它们之间是互相取长补短,现在许多人都运行着这两种系统。

第一个理由:FreeBSD 是一个免费的开源的操作系统

Linux 也是一个免费的开源的操作系统。不过 Linux 是基于 GNU General Public License 的,而 FreeBSD 是基于 BSD License 的。BSD License 比 GNU General Public License 更加宽松。

FreeBSD 的系统源码可以通过各种方式免费的得到。系统源码包括内核源代码和基本系统源 代码,如果你在安装系统的时候选择了安装源码,那么它就在 /usr/src 目录底下。如果你经常更新系统源代码,那么 经常看看 /usr/src/UPDATING 是个很好的习惯。同理, 如果安装了 Ports 系统,经常看看 /usr/ports/UPDATING 可以了解很多有用的信息。
   源代码的作用有很多。如果你是一个系统软件或者应用软件开发者,你可以改进源代码为 FreeBSD 作出贡献,或者你参考系统源代码写出很棒的应用软件,或者你通过阅读源代码掌 握了很多知识、取得了经验。如果你是一个普通用户,可以通过从源代码配置编译系统获得 更高的系统性能。总之,开放的源代码不仅给用户提供了很多好处,也为 FreeBSD 系统的 开发者提供了一个可能性,就是不同的人都可以通过源码找出系统中可以改进的地方并及时 反馈给系统开发者。

第二个理由:FreeBSD 是一个完整的系统
   Linux 这个词指的是内核。当我们提到操作系统的时候,严格的用词应该是 GNU/Linux 或 者某个发行版的名字,比如:SUSE Linux,Debian GNU/Linux,CentOS, Fedora, Ubuntu Linux,Mandriva Linux 等。这些发行版使用的都是相同的 Linux 内核,可能只是内核的 版本有差异而已。各个发行版的系统结构可能都是不同的:比如系统启动的脚本,文件系统 的布局,系统和软件升级的方式方法,默认桌面环境等。

而 FreeBSD 这个词指的是一个完整的系统,包括内核,系统环境,应用软件,各种文档等。 不严格地说,Ubuntu 和 RedHat 之间的关系就有点像 FreeBSD 和 NetBSD,OpenBSD。但是,后面这些 BSD 系统都是 从 4.4BSD 发展来 的,而 4.4BSD 本身就是一个完整的操作系统,不是一个孤单的内核。
(FreeBSD被认为是自由操作系统中的不知名的巨人。它不是Unix,但如Unix一样运行,兼容POSIX。作为一个操作系统,FreeBSD被认为相当稳建可靠。)

FreeBSD 有一个 Core Team 来管理这个项目。这些 Core Team 成员是从为数众多的 Committer 中选举出来。这些 Committer 有权力对 FreeBSD 的内核代码进行维护,改进,升级等。 Core Team 和 Committer 对 FreeBSD 的内核代码质量有严格的把关。FreeBSD 的人经常说: 有问题的代码不能在这里生存。而 Linux 的内核掌握在 Linus Torvalds 手 里。所有有能力的人都可以对 Linux 内核作贡献。也就是 Eric S. Raymond 所说的 市集开发模式。 从管理模式来说,Linux 内核的代码质量相对要低一些。因此,如果是求稳定的话, FreeBSD 肯定是不二的选择。

FreeBSD 的应用软件要通过 Ports 系 统 来安装管理。所有的软件都经过特殊的设置来配合 FreeBSD 系统。这 些特殊的配置包括编译的参数,安装的路径,文档的存放等。这样可以方便的管理,安装, 卸载应用软件,而不需要太多人工的参与。而 Linux 系统的应用软件管理则比较混乱,各 种发行版都不相同。不过越来越多的 Linux 发行版都在向 Ports 系统学习。典型的比如 Debian/GNU Linux 的 APT。FreeBSD 的 Ports 系统更新是相当快的。随着系统的每次升级,Ports 系统都会有活跃的更新,以便使 各种应用软件跟上系统的升级。

第三个理由:FreeBSD 有清晰的目录结构
   Linux 下目录结构有一个为人诟病的大缺点,就是文件存放的随意性。各种发行版可能都有 不同的选择。比如系统库,就有可能在 /usr/lib,或者 /lib 里面。比如 X (XFree86 或者 Xorg) 应用软件有可能放到 /usr/lib 里面。当一个 Linux 用户想要从源码编译安装 软件的时候,往往没有明确的标准来确定自己编译的软件到底应该安装在什么地方。他有可 能会作很多 symbolic link 把文件链接来链接去。系统里面经常留下很多失效的链接。而 FreeBSD 的目录结构是相当清晰的,我们可以看看一些目录作用的解释:

    /bin/      user utilities fundamental to both single-user and multi-user environments
    /boot/     programs and configuration files used during operating system bootstrap
    defaults/  default bootstrapping configuration files; see loader.conf(5)
    kernel/    pure kernel executable (the operating system loaded into memory
    at boot time).
    modules/   third-party loadable kernel modules; see kldstat(8)
    /etc/      system configuration files and scripts
    defaults/  default system configuration files; see rc(8)
    mail/      Sendmail control files
    mtree/     mtree configuration files; see mtree(8)
    namedb/    named configuration files; see named(8)
    pam.d/     configuration files for the Pluggable Authentication
    Modules (PAM) library; see pam(8)
    periodic/  scripts that are run daily, weekly, and monthly,
    via cron(8); see periodic(8)
    ppp/       ppp configuration files; see ppp(8)
    ssl/       OpenSSL configuration files
    /usr/      contains the majority of user utilities and applications
    compat/   files needed to support binary compatibility with
    other operating systems, such as Linux (created by
    sysinstall(8))
    include/  standard C include files
    lib/      shared and archive ar(1)-type libraries
    aout/       a.out archive libraries
    compat/     shared libraries for compatibility
    aout/       a.out backward compatibility
    libraries
    local/    local executables, libraries, etc.  Also used as the
    default destination for the FreeBSD ports framework.

以上是 FreeBSD 系统下命令 # man hier 的输出的节选。 基本上每个目录都有特定的作用,什么东西放到哪里都有明确的规定。系统管理员在管理系 统的时候将从清晰的目录结构中得到很多益处。BSD 学院风格的严谨作风在这里体现得非常明显!

第四个理由:FreeBSD 可以方便的安装升级
   Linux 各种发行版的用户肯定都有在网上到处寻找 rpm 的经历。而且很多用户都不敢贸然 升级自己的内核。如果要升级整个基本系统,对于很多 Linux 用户来说就是一个浩大而繁 杂的工程了。对于 FreeBSD 来说,升级只是一件很简单的事情。
   从升级基本系统来说,FreeBSD 可以使用各种方式来升级。比如 Anonymous CVS、CVSup 等。或者也可以二 进制升级。比如,如果我要升级我的系统,可能我只需要如下的几个命令就可以轻松的完成:

    #cvsup stable-supfile
    #cd /usr/src
    #make buildworld
    #make buildkernel
    #make installkernel
    #reboot
    ... ...
    #mergemaster -p
    #cd /usr/src
    #make installworld
    #mergemaster
    #reboot

这些命令做了四件事情:第一是更新你的系统源码、第二是重新编译系统源码,第三是编译 安装新内核、第四是更新你的系统配置文件。这篇 The Cutting Edge 详细的解说了怎么更新你的系统。当然,我省略了内核的配置以及 mergemaster 这个命令的使用方法等。可能显得有点复 杂吧,不过与 Linux 相比,我觉得还是很简单容易上手的。
   要安装升级应用软件,在 FreeBSD 下就更加简单了。如果你在安装系统的时候选择了安装 Ports 系统,那么你 只需要到 Ports 下相应的目录输入几个命令就可以轻松完成。比如,你要安装 Nvidia 的官方显卡驱动,那么你只 要:

    #cd /usr/ports/x11/nvidia-driver
    #make install clean

就可以自动完成驱动的安装和配置。当然,还有更加快捷的安装方法,使用命令 pkg_add -r nvidia-driver 可以从网上自动下载已经编 译好的驱动然后自动安装。FreeBSD 的官方文档 Using the Packages System 详细解说了 packages 的使用方法。如果是升级已经安装的驱动程序,则可以:

    #cd /usr/ports/x11/nvidia-driver
    #make deinstall reinstall clean

或者你可以使用 portupgrade 来升级已经安装的程序。

第五个理由:FreeBSD 的文档十分齐全
   到目前为止,Linux 的文档在很多方面还比不上 FreeBSD 的文档。Linux 因为发行版的原因, 各种文档都纷繁复杂,难于寻找。而 FreeBSD 的文档几乎涵盖了系统的各个方面。对于 FreeBSD 的初学者来说,仔细阅读文档应该是必修的功课。国内的 FreeBSD 用户甚至翻译 了一个中文版本,这对 阅读英文有困难的 FreeBSD 中国用户来说是一个福音。
   FreeBSD 的文档不仅包含最重要的 Handbook 和 FAQ,还有 专门给软件开发人员的 Developer's Handbook 和 Porter's Handbook。而且这些文档还只是所有 FreeBSD 文档的一个部分。Unix 系统的传 统 man 文档, GNU 的 Texinfo 文档等在 FreeBSD 中都很完整而详细。另外,FreeBSD 还有很多系统配置的例子 (一般这些例子都在 /usr/share/examples 和 /usr/local/share/examples 目录下)。这些例子对新手 系统管理员和普通用户是很好的帮助。

第六个理由:FreeBSD 很稳定而且性能优异
   Linux 很稳定而且性能也很优异。在性能方面甚至要超过 FreeBSD ,比如文件系统的性能。 在 FreeBSD 的文件系统默认使用 softupdates 之前, FreeBSD 的磁盘性能一直是低于 Linux 的。虽然如此,Linux 的磁盘高性能是以牺牲系统 的稳定为代价的。在没有使用日志文件系统 之前,Linux 的文件系统使用会使用 async 模式将数据写入磁盘。而 FreeBSD 默认是使用 sync 模 式将数据写入磁盘。什么是 async 模式和 sync 模式?简单地讲, async 模式下系统往往把不太重要的数据写入内存或者 磁盘缓冲,等一段时间之后再把数据真正的写入磁盘。这样做的好处就是磁盘的读写效率比 较高,但是不安全。万一在数据真正写入磁盘之前系统突然掉电,那么那些你以为已经真正 写入磁盘的数据就会丢失。sync 模式是把所有应该写入 磁盘的数据都立即写入磁盘,这样的好处是数据比较安全,但是因为大量的读写操作导致磁 盘性能下降。FreeBSD 在版本 4 之前一直使用 sync 模 式来写入数据,安全是比较安全了,但是在文件系统性能方面就比不上 Linux 了。
   Linux 开始使用日志文件系统之后,文件系统的稳定和安全通过日志系统得到了弥补。而 FreeBSD 没有采用日志文件系统,而是走了另一条道路,也就是 softupdates。softupdates 的原理就是强制 metadata 更新时的依赖检查。所谓 metadata 就是,比如磁盘的 i-node 和 v-node 之类的数据。这些数据描述了文件数据在磁盘上存储状态,不是一般的数据,所以叫 元数据。有了 softupdates 之后,FreeBSD 的磁盘性能有了很大的提高,而且在稳定性方面更加出色。FreeBSD 从版本 5 开始支持后台 fsck,就是后台文件系统检测。后台文件系统 检测可以让你在系统崩溃后重新开机时迅速恢复服务,而不需要像其他不支持这个特性的系 统那样,要等待 fsck 执行完毕之后才能进入到系统。 对于有海量硬盘的系统,这是一个非常吸引人的特性。
   另外,在网络方面。FreeBSD 的性能也是相当优异的。在很重的负载之下,FreeBSD 仍然可 以稳定的运行。这也是很多网络服务器采用 FreeBSD 的原因之一。

今天,当台式机的用户提到视窗系统时,他们多半会想到微软的操作系统。这的确是一件十分令人遗憾的事,因为很久以前,当微软视窗还仅仅是比尔・盖茨脑中一时的灵感时,UNIX已经有了它自己的视窗操作系统--X window系统。 
   X window系统,通常只被简单地叫作X(从未有人把它叫作X视窗系统)。它其实是一套在UNIX系统上的设备驱动程序和数据库安置图形接口的程序,它是在二十世纪八十年代,为运行在联网环境下的高尖端研究用的硬件而开发的。现在,当你在普通的硬盘上发现或运行X时,它很可能就是Xfree86。Xfree86是一个积极发展了十几年的X window系统的免费工具。 
   任何一个积极地发展了如此长时间的公开源程序都一定会有一段有趣的历史和自身的特点,Xfree86当然也不例外。下面还是让我们了解一下从X刚出现时的一文不名,到它在UNIX中的发展壮大,以及今天如何成为UNIX企业的标准系统的这一段历程吧。

Xfree86的萌芽 
   在UNIX还处在雏形阶段的时候,作为时代主流的产物,它缺少类似的图形操作界面。当个人计算机出现时,它们的产品沿用的是象Ⅱ代苹果机一样的文字操作系统。 
   在二十世纪八十年代,当苹果机Macintosh出现时,人们开始意识到用户对台式机图形界面的需求。几乎在同一时期,微软开始在市场上销售它的基于图形用户工具的操作系统,即Windows。但无论是微软的Windows,还是苹果机的Macintosh,都没有能够成功地区别开操作系统和可视化的环境,这两种功能被混淆在一起了。 
   1984年,在Macintosh系列计算机出现后不久,Xwindow系统诞生了。UNIX开始有了自己的图形用户工具。X系统的图形用户工具的设计和运行与以往有着根本性的不同。起初,X系统被设计为在联网环境下运行,即它的理念为用户--服务器模式,结果X服务器成功地完成了用户所赋予的职能。 
   这样做带来了明显的优点,使远程计算机成为可能,并且一些如使当前运行的计算拥有安全的保障这类问题得到了解决。类似像硬件不能处理3D图形的能力这种在当时还不是很明显但在未来将可能成为关键性的缺陷的问题也得以改善。这些优点使X得到了广泛的应用。当然,在1984年,X最初运行在十分高端和昂贵的工作站上,这显然还不是一般家庭的使用者所用的计算机。 
   在1989年至1990年期间,一位名叫托马斯・罗尔的学生把X11R4分类器上提供的X服务器程序的源代码下载到运行速度仅为33MHz的386PC上。也不管当时没有浮点运算的计算机是多么的落后,他最终还是成功运行了被他自己称为是X38611.1的服务器程序,这引起了MIT的X系统开发者、X系统协会和德克萨斯州澳斯汀大学的Dell UNIX组织的注意。于是Dell公司聘用罗尔从事运行在英特尔系统上的SUR4的图形文件的多相处理系统的驱动程序的研发工作。 
   罗尔在Dell工作时,X系统协会的Stephen、Gilden、SGCS的Mark、Snitily都是他的同事,他们共同致力于罗尔的下一个X服务器,完成它在PC机上Xwindow系统的指导性的安装、调试及运行。当X11R5在1991年8月29日运行时,罗尔和X系统协会进行了对PC机上UNIX系统的第一次正式的安装、调试和运行,也正是在这一时期,Linux提前几星期也诞生了。 
   一次,X系统协会要求罗尔在X386中删除一些他们认为不必要的汇编程序。罗尔在当时运行速度较快的系统上重新测试了服务器,并且同意X系统协会的意见--删除了那些不必要的汇编程序。但这次改动造成了一些组件的不兼容,然而无论如何这次测试使X386.1.2诞生了。当我们回顾这一事件时会发现,这次事件在 Xfree86历史上是极为关键的。

Xfree86的更新 
   进入"四人组"时期。四位生活道路完全不同的人由于他们共同的对改进X386服务器的兴趣被带到一起。Jim Tsillas曾沿着罗尔起初的工作从事对公开的源程序的解释,他认为曾被删除的汇编程序对系统的运行有利,于是他便又把它加回到自己的X386中。GlemnG Lai,由于相同的原因在自己的版本中也恢复了那些被删除的汇编程序。同一时期,早先工作于AT&T Bell试验室,后又求学于澳大利亚悉尼大学物理系的David Wexelblat和David Dawes各自独立地对该程序进行了修改和完善,提高它的可靠度。 
   不久,这四人都发现其余三人也在从事相同的事业,他们欣然决定联合起来,这样"四人组"(这是由SGCS的Mark Snitily起的称号)诞生了。"四人组"开始合作的事业是X386版本中X11R5的一个分支,但这却妨碍他们采用一些X11R5的源程序。到了1992年7月,X386.1.2的诞生成为在还没有完成的Xfree86计划中第一个通过源程序树检验的程序。 
   罗尔已经把他的工程定名为X386。为了避免混淆,Wexelblat Dawes和他们这个成长中的组织中的其他研发者决定为自己的工程起一个新的名字。Xfree86中的"Free"作为原名项目中的一部分变为具有双关的含义。但就象Wexelblat说的那样,"没有人可以真正地拥有它"。 Wexelblat还说把Xfree86缩写成Xfree不是正确的,它的支持系统是英特尔X86平台也不应成为导致的"86"这个误称的原因。1992年8月30日是他们使用"X386"这个名字的最后一天,两天后,Xfree86这一称谓开始使用。 
   在20世纪80年代末,包括象IBM、AT&T、DEC、Sun以及Hewlett-Pack-ard在内的工作站厂商的X系统协会,开始与MIT的系统开发工组合作。这一时期这一组织完全控制了Xwindow系统的设计和开发。该协会在X系统上的工作成为了高端工作站的图形界面的一个事实上的标准。但是,很多开发工作是在早期进行的。在90年代中期以前,X系统协会的研发工作已经减缓下来,工作站厂商只是追求Risc体系结构而没有致力于图形的开发。另一方面,Xfree86工程开始脱离X系统协会。他们不再分散精力于其他事情,而是继续追求满足公众对开放性源代码的需求。他们也把主攻方向集中于研发完善PC机的英特尔结构体系,即一种被原来X系统协会所忽略的结构体系。 
   尽管Xfree86团队取得了进步,但他们仍然发现自己处在不利位置。不是X系统协会成员意味着他们只能接触到有限的被公开的源代码,他们必须加入X系统协会才能了解到最新编制的程序。这并不是件容易的事,因为Xfree86团队只是一个普通的组织,更重要的是他们没有能力支付高额的X系统协会的会费。没有给予他们资助的工作站作为合作伙伴,Xfree86团队只能在外面张望。1993年末,当X系统协会正忙于X11R6的运行时,Xfree86的核心发展小组正忙于寻找各种加入X系统协会的方法。 
   Wexelblat解释说:这种组织致力于免费软件工程的要领是一个非常好的先例,我们也是最初这样做的团队之一。我们实际上开辟了两条途径--寻找一家赞助公司(例如NCR很可能赞助我们),或者组建我们自己的公司。由于缺乏资金,我们申请了贷款,这在早期是有风险的作法。我们必须十分小心地不与开始时使用公开源程序的用户疏远,以便获取开发免费软件的资金(这在当时还是一笔前所未有的巨大数目)。我们派出了一些调查员到NetNens,去看看是否能找到十个愿意出资500美元的赞助商,以使我们能得到加入X协会所需的5000美元。随后,我们接到了Cygnns的John Gilmore的答复。如果我们将Xfree86归并于GPL,他将捐出全部的5000美元。因为我们对此毫无兴趣,所在我立即拒绝了。因为即使得到这笔钱,我们也是以另一种形式加入到公开性源程序研发工程中的一支微不足道的队伍,这令我们难以接受。之后不久,当时UUNET的主席Rich Adams与我们联系,他仅询问了一些细节,便当场捐出我们的5000美元基本费用。该组织随后制定了这个合作计划的条约。Wexelblat和Dawes与Dirk Hihndel、Dr.Richard Murphey、Dr.Jon Tombs、Glenn Lai、James Tsillas一起制定了XFree86计划,并于1994年1月签订了合作协议。这样,他们与UUNET的赞助伙伴共同使新的Xfree86工程正式加入了X系统协会。不久后的1994年4月25日,Xfree86 3.0问世,这是符合改良后所公布的X11R6标准的第一次发行。 
   这次的签约和结盟在X系统协会中被认1994年7月的Linux期刊评为第二大事件,这次事件标志着PCUNIX市场地位的提升。

Xfree86的失误 
   事物是不断发展变化的,X系统协会也不例外。X系统协会的创立者们发现其在计算机市场的地位发生了很大变化,在1995年以前,X系统协会几乎没有对X系统核心程序作过任何改进。1996年7月1日,X系统协会把其控制权移交给UNIX以规范不同开放式体系结构。但不幸的是,UNX没有意识到占有PC机市场的重要性。 
   该组织对X11R6的使用条件作了改动,要求每个使用者向经销商付费,这其实是剥夺了Xfree86从该组织中获取利益的权力。然而当时,该组织对X系统的研发工作却少之又少,于是Xfree86得不到帮助。在一个大胆的举措中Xfree86脱离了该组织,这极大地妨碍了新制定的使用条件的推行。尽管该组织作了许多补救工作但都于事无补。之后不久X系统研发计划便告终结。 
   然而Xfree86却没有停下来,在X系统协会中,它是唯一一个真正对X系统进行研发的组织,并将命运掌握在自己手中。

Xfree86的发展 
   在Xfree86的成功之路上,有许多合作伙伴为其提供了帮助,象Xi、Graphics、MetroLink、Pittsburgh、Power Computing、NCR、USL等都在其中,互惠互利是一种普遍现象,这使Xfree86在诸如开发3D技术上获益很大,最终发行了Xfree86 4.0。 
   2000年春,VA Linux Systems购买了Xfree86中很重要的直接从事基础性技术研发的部门,但随着VA Linux Systems的解体,该部门也脱离了公司,Xfree86计划被搁置下来。尽管如此,问世于2000年3月的Xfree86 4.0仍就是Xfree86发展中的一个里程碑。

今天,Xfree86仍被认为是现存的开发性程序中最成功的,在高新技术领域仍独具特色。一些新技术的开发成功促使Xfree86生机勃勃地发展下去,并使Xfree86团队保持着对X系统的主导地位。

BSD家族

BSD是Berkeley Software Distribution的简称,它最初是用来发布由Berkeley大学的Computer Systems Research Group(CSRG)开发的UNIX系统(Berkeley UNIX)。后来出现的BSD系统都是源自于Berkeley UNIX。现在主要的BSD系统有下面这些:

386/BSD
   386/BSD是最初的BSD操作系统,是在1992年由William F.Jolitz在4.3BSD的Networking Release 2基础上开发的。它主要运行在386PC的体系结构上。它的发行版主要是在网络上完成的,任何人都可以从网络上自由下载。386/BSD在发展了一定阶段后,就再也没有进展:取而代之的是,从此引出了两个操作系统,NetBSD和FreeBSD。现在,大家都认为386/BSD已经死了。

NetBSD
   在386/BSD版本发布几个月以后,一群具有敏锐眼光的用户成立了一个小组,他们收集资源以帮助维护和增强后来的系统。他们把他们的版本命名为NetBSD。NetBSD侧重于支持尽可能多的平台,并继续按照CSRG的风格进行开发。现在,NetBSD能够支持包括从Algor到 VAX在内的近70种平台。你可以去看看NetBSD的官方网站http://www.NetBSD.org了解更多信息。

FreeBSD
   在NetBSD小组成立后几个月,FreeBSD小组也成立了,主要专注于PC体系结构,其宗旨是能够开发出一个坚如磐石的网络操作系统。它直接源自于386BSD和4.4BSD-Lite。后来,FreeBSD小组找到了Walnut Creek CDROM发行商,由他们来发行FreeBSD光盘,而且Walnut Creek还提供开发FreeBSD这一计划所需要的计算机和快速的互联网接入。应该说FreeBSD的发展离不开Walnut Creek的支持。FreeBSD发展到现在已经相当成熟了,它的技术性能也是相当出色,十几年的开发使它成为一个“坚如磐石”的网络操作系统,有许许多多的大网站和ISP在运行着FreeBSD,免费和开放的特性使得它成为商业计算和科学研究的极佳平台。现在,FreeBSD也已经可以支持Alpha和Sparc64平台,但与PC平台相比还有很长的路要走。
   由于FreeBSD的优越性能和采用BSD许可协议,所以很多国际大公司对它进行二次开发,使它能够适用于专有系统上。像仅次于cisco的第二大路由器厂家Juniper,它的JUNOS系统就是基于FreeBSD的系统,当然Juniper的路由器用的是专用网络处理芯片。防火墙方面有Nokia,Samsung等,他们就是使用FreeBSD 2.2.x的系统。而Maxtor、AMI等厂家在他们的存储系统中也是使用FreeBSD。此外,IBM的InterJet也是使用FreeBSD。其他不太著名的厂家,使用FreeBSD的更是比比皆是。 由此可见,FreeBSD是目前最出色,使用范围最广的BSD系统。FreeBSD的官方网站是www.FreeBSD.org。

BSD/OS
   BSD/OS也是一个非常优秀的操作系统。它是原来BSD UNIX的部分开发人员成立的BSDi(Berkeley Software Design Inc.)公司的产品。它与FreeBSD差不多,但要比FreeBSD支持更多的硬件,有很好的服务和技术支持。现在,BSDi公司已经被WindRiver公司收购了。

OpenBSD
   OpenBSD是从NetBSD中分离出来的,专门把NetBSD跟FreeBSD的新功能和修正加在一起,算是NetBSD和FreeBSD的混血儿。他们的技术宗旨是提高系统的安全性,被认为是目前世界上最安全的操作系统,已经有将近四年无远程访问漏洞的纪录。他们的市场目标是使得系统更易于使用和更广泛地被采用,所以他们借用了FreeBSD发行版本便于安装的许多特性。你可以在http://www.OpenBSD.org找到详细信息。

Darwin(MacOS X)
   Apple公司在2001年早些时候发布了他的MacOS的第十版(X)。它背离了先前的MacOS版本:它把基本系统(Darwin)建立在带有一个BSD环境的Mach微内核基础之上,再加上Apple自己的Aqua图形界面。基本系统(Darwin)也是自由的。FreeBSD和Darwin在用户源代码水平上是兼容的。而且,Apple还雇佣了FreeBSD社区的大拿Jordan Hubbard,他就是FreeBSD计划的创始人之一。最近,Apple也建立起了自己的Darwin社区,希望吸引更多人能加入到它的社区中。

可见,所有的BSD系统分支都有一个共同的起源,所以说它们是一家人一点也不假。实际上,它们之间也是不断地取长补短,共同进步。

BSD是Berkeley Software Distribution的简称,它最初是用来发布由Berkeley大学的Computer Systems Research Group(CSRG)开发的UNIX系统(Berkeley UNIX)。后来出现的BSD系统都是源自于Berkeley UNIX。现在主要的BSD系统有下面这些:

386/BSD
   386/BSD是最初的BSD操作系统,是在1992年由William F.Jolitz在4.3BSD的Networking Release 2基础上开发的。它主要运行在386PC的体系结构上。它的发行版主要是在网络上完成的,任何人都可以从网络上自由下载。386/BSD在发展了一定阶段后,就再也没有进展:取而代之的是,从此引出了两个操作系统,NetBSD和FreeBSD。现在,大家都认为386/BSD已经死了。

NetBSD
   在386/BSD版本发布几个月以后,一群具有敏锐眼光的用户成立了一个小组,他们收集资源以帮助维护和增强后来的系统。他们把他们的版本命名为NetBSD。NetBSD侧重于支持尽可能多的平台,并继续按照CSRG的风格进行开发。现在,NetBSD能够支持包括从Algor到 VAX在内的近70种平台。你可以去看看NetBSD的官方网站http://www.NetBSD.org了解更多信息。

FreeBSD
   在NetBSD小组成立后几个月,FreeBSD小组也成立了,主要专注于PC体系结构,其宗旨是能够开发出一个坚如磐石的网络操作系统。它直接源自于386BSD和4.4BSD-Lite。后来,FreeBSD小组找到了Walnut Creek CDROM发行商,由他们来发行FreeBSD光盘,而且Walnut Creek还提供开发FreeBSD这一计划所需要的计算机和快速的互联网接入。应该说FreeBSD的发展离不开Walnut Creek的支持。FreeBSD发展到现在已经相当成熟了,它的技术性能也是相当出色,十几年的开发使它成为一个“坚如磐石”的网络操作系统,有许许多多的大网站和ISP在运行着FreeBSD,免费和开放的特性使得它成为商业计算和科学研究的极佳平台。现在,FreeBSD也已经可以支持Alpha和Sparc64平台,但与PC平台相比还有很长的路要走。
   由于FreeBSD的优越性能和采用BSD许可协议,所以很多国际大公司对它进行二次开发,使它能够适用于专有系统上。像仅次于cisco的第二大路由器厂家Juniper,它的JUNOS系统就是基于FreeBSD的系统,当然Juniper的路由器用的是专用网络处理芯片。防火墙方面有Nokia,Samsung等,他们就是使用FreeBSD 2.2.x的系统。而Maxtor、AMI等厂家在他们的存储系统中也是使用FreeBSD。此外,IBM的InterJet也是使用FreeBSD。其他不太著名的厂家,使用FreeBSD的更是比比皆是。 由此可见,FreeBSD是目前最出色,使用范围最广的BSD系统。FreeBSD的官方网站是www.FreeBSD.org。

BSD/OS
   BSD/OS也是一个非常优秀的操作系统。它是原来BSD UNIX的部分开发人员成立的BSDi(Berkeley Software Design Inc.)公司的产品。它与FreeBSD差不多,但要比FreeBSD支持更多的硬件,有很好的服务和技术支持。现在,BSDi公司已经被WindRiver公司收购了。

OpenBSD
   OpenBSD是从NetBSD中分离出来的,专门把NetBSD跟FreeBSD的新功能和修正加在一起,算是NetBSD和FreeBSD的混血儿。他们的技术宗旨是提高系统的安全性,被认为是目前世界上最安全的操作系统,已经有将近四年无远程访问漏洞的纪录。他们的市场目标是使得系统更易于使用和更广泛地被采用,所以他们借用了FreeBSD发行版本便于安装的许多特性。你可以在http://www.OpenBSD.org找到详细信息。

Darwin(MacOS X)
   Apple公司在2001年早些时候发布了他的MacOS的第十版(X)。它背离了先前的MacOS版本:它把基本系统(Darwin)建立在带有一个BSD环境的Mach微内核基础之上,再加上Apple自己的Aqua图形界面。基本系统(Darwin)也是自由的。FreeBSD和Darwin在用户源代码水平上是兼容的。而且,Apple还雇佣了FreeBSD社区的大拿Jordan Hubbard,他就是FreeBSD计划的创始人之一。最近,Apple也建立起了自己的Darwin社区,希望吸引更多人能加入到它的社区中。

可见,所有的BSD系统分支都有一个共同的起源,所以说它们是一家人一点也不假。实际上,它们之间也是不断地取长补短,共同进步。

Unix与***文化
 
***的文化和Unix的商业化存在着必然的联系。自从Unix出现,***文化就与之而来。
 
1993初,一个悲观的观察家撰文指出,已经有理由认为Unix的传奇故事连同他带有***文明将一同破产。许多人预测,从那时起Unix将在六月内死亡。他们很清楚,十年的Unix商业化,使自由跨平台的Unix梦以失败告终。Unix允诺的跨平台可移植性,在一打大公司专有的Unix版本之间不停地斗嘴中丢失,一个完美的操作系统最终沦为多种版本的一团乱麻,这应该说是人类文明史上的一个重大悲剧。
 
在专有软件社会中,只有像微软一样的“集权制,大教堂”生产方式才能成功。那个时代的人悲观地相信,技术世界的个人英雄主义时代已经结束,软件工业和发展中的互联网络将逐渐地由像微软一样的巨型企业支配,再也没有“佐罗”,世界是恺撒大帝的世界,计算机文明将进入黑暗的帝国时代。***已经死了,自由不付存在。
 
自从Unix出现以来,第一代的Unix***似乎垂垂老矣,衣食不饱( Berkeley计算机科学研究组在1994丢失了自己基金)。这是一个抑压的时代。专有的商业Unix的结果证明那么沉重、那么盲目、那么不适当,以致微软能够用那次等技术的Windows抢走他们生存的空间,拿走他们的干粮。***世界的残余力量被逼到了世界上的角落里,苟延残喘。
 
就在***文化日渐衰落之时,美国新闻周刊的资深记者Steven Levy完成了著名的《***列传》一书,书中着力介绍了一个人物:Richard M. Stallman的故事,他是麻省理工学院(MIT)人工智能实验室领袖人物,坚决反对实验室的研究成果商业化。他是商业软件社会中坚强的一员,决不随波逐流,建立了全新的***文化。
 
Richard M. Stallman(他的登陆名RMS更为人熟知)早在1970年代晚期就已经证明他是当时最有能力的程序员之一。Emacs编辑器就是他众多发明中的一项。RMS的目标是将后1980的松散***社群变成一台有组织的社会化机器以达到一个单纯的革命目标。也许他未意识到,他的言行与当年卡尔·马克思号召产业无产阶级反抗工作的努力如出一辙。RMS宣言引发的争论至今仍存于***文化中。他的纲要远不止于维护一个代码库,已经暗含了废除软件知识产权主张的精髓。RMS通过“自由软件(free software)”让***文化更加有自我意识。当然,这个充满魅力又具争议的人物本身已经成为了一个***文化英雄。
 
只有痴迷的“***”和具有创造力的怪人结成的反叛联盟才能把我们从愚蠢中拯救出来——他们接着教导我们,真正的专业和奉献精神,正是我们在屈服于世俗观念的“合理商业做法”之前的所作所为。 ——《The Art of Unix Programming》
 
RMS让世界上所有的人都知道,***电脑系统只是低级不入流的***干的事,真正的***,是为了自由,为了软件的自由,为了挑战计算机世界中的霸权主义而斗争。他们不是街头小混混,他们更像是绿林好汉,更像是罗宾汉,更像是佐罗。就像渴望民主的人民同专制的政府斗争一样。RMS领导着许多的***通过互联网向专有软件发出宣战。
 
X Windows是首批由服务于全球各地不同组织的许多个人以团队形式开发的大规模开源项目之一。电子邮件使创意得以在这个群体中快速传播,问题由此得以快速解决,而开发者可以人尽其才。软件更新可以在数小时之内发送到位,使得每个节点在整个开发过程中步调一致。网络改变了软件的开发模式。
 
另一方面,RMS的理论体系有许多东西非常有争议,他的GPL被认为是一种“病毒式”的协议,BSD的fans和老牌Unix***们认为,他们编写Unix的年头都比GPL声明要长得多,GPL依然有太多的限制,而BSD协议则比GPL更加的自由。另一方面,RMS走向了另一个极端,他是完全反版权的,反商业化的。把软件产品从强制收费推向了强制免费、共享和开源,这也为他带来了许多许多的争议。
 
在RMS组织***闹革命的年代里,没有多少***认同于RMS的理论体系,更多的他们参与GNU只是为了体现那种在互联网上协同工作,令人激动的工作模式。自从GNU设立以来,争议不断,而***文化却从未有统一在他的理想体系之下。
 
自从Linux出现以后,一个新的***领袖出现了,Linus Torvalds的中庸态度网聚了世界上顶尖的***,其绕过了GPL和反GPL的派系之争,他使用GNU的工具从而以GPL的“传染性”保护了Linux,但他同时也不承认RMS的理论思想体系,他即开源,又支持商业化。虽然,他没有带给***们什么重要的思想体系或统一的价值观,但他整合了全世界***的阵营,让所有的***的行为都围绕着Linux这一事物进行。他以“用自由软件是因为它运行得更好”轻而易举地盖过了“用自由软件是因为所有软件都该是自由的”。
 
1998年初,这种新思潮促使网景公司(Netscape Communications)公布了其Mozilla浏览器的源码。媒体对此事件的关注促成了Linux在华尔街的上市,推动了1999-2001年间科技股的繁荣。事实证明,此事无论对***文化的历史还是对Unix的历史都是一个转折点。
 
Unix的历史教训
 
下面的文字出自《The Art of Unix Programming》(Unix编程艺术)。令今天我们所有人所反思。
 
在Unix历史中,最大的规律就是:
距开源越近就越繁荣。任何将Unix专有化的企图,只能陷入停滞和衰败。
 
回顾过去,我们早该认识到这一点。1984年至今,我们浪费了十年时间才学到这个教训。如果我们日后不思悔改,可能还得大吃苦头。
 
虽然我们在软件设计这个重要但狭窄的领域比其他人聪明,但这不能使我们摆脱对技术与经济相互作用影响的茫然,而这些就发生在我们的眼皮底下。即使Unix社区中最具洞察力、最具远见卓识的思想家,他们的眼光终究有限。对今后的教训就是:过度依赖任何一种技术或者商业模式都是错误的——相反,保持软件及其设计传统的的灵活性才是长存之道。
 
另一个教训是:别和低价而灵活的方案较劲。或者,换句话说,低档的硬件只要数量足够,就能爬上性能曲线而最终获胜。经济学家Clayton Christensen称之为“破坏性技术”,他在《创新者窘境》(The Innovator's Dilemma)[Christensen]一书中以磁盘驱动器、蒸汽挖土机和摩托车为例阐明了这种现象的发生。当小型机取代大型机、工作站和服务器取代小型机以及日用Intel机器又取代工作站和服务器时,我们也看到了这种现象。开源运动获得成功正是由于软件的大众化。Unix要繁荣,就必须继续采用吸纳低价而灵活的方案的诀窍,而不是去反对它们。
 
最后,旧学派的Unix社区因采用了传统的公司组织、财务和市场等命令机制而最终未能实现“职业化”。只有痴迷的“***”和具有创造力的怪人结成的反叛联盟才能把我们从愚蠢中拯救出来——他们接着教导我们,真正的专业和奉献精神,正是我们在屈服于世俗观念的“合理商业做法”之前的所作所为。
 
 
Unix族谱
 
Unix的故事仍旧延续着……,许多网站也为这段历史留下记录。一个详细记录Unix历史的网站([url]http://www.levenez.com/unix/[/url]),这个网站忠实记载着1969~2005 年Unix发展的大事,而且还有 PDF 档案可供下载,上面有一个庞大的UNIX家族版本树,让人叹为观止。网站的首页陈列每个时期Unix的历史,也代表着无数工程师的心血与努力。
 
下面是一个简单的Unix的族谱:
 
     |--AT&T (1969)-----\
     |                  |
     |              V6 (1976)
     |                  |
     |              V7 (1979)
     |                  |
     |   Novell owns AT&T's Unix (by 1994)
     |     _____________|____________________
     |     |       |      |        |         |
     |    AIX    IRIX    SCO   HP-UX   Solaris 2.X
     |   (IBM)   (SGI)          (HP)     (Sun)
     |
     |
     |--Berkley (1977)-----\
     |                     |
     |                  1BSD (1977)
UNIX-|                     |
     |                4.4BSD (1993)
     |                     |
     |                   Net/2
     |                     |
     |               4.4BSD-Lite (by 1995)
     |     ________________|____________________________________
     |     |       |          |         |          |            |
     |   SunOS   Ultrix   NetBSD    OSF/1   NeXTSTEP   Mac OS X
     |   (Sun)   (DEC)   (Various)  (DEC)    (NeXT)    (Apple)
     |                   (FreeBSD)
     |
     |
     |--Hybrids----\
                   |
                Linux (Various)
                   |
                   |____________________________________________
                   |    |      |          |              |      |
                   | RedHat  Debian  Mandrake   Slackware    S.u.S.E.
                   |                          (Walnut Creek)
                   |
                   |_____________________________________________
                       |        |           |          |        |
                    MkLinux  LinuxPPC  TurboLinux  OpenLinux  CorelLinux
                    (Apple)                        (Caldera)   (Corel)
 
 
Unix的特点
 
现在的文献中提到Unix基本上是说,由Ken Thompson和Dennis Ritchie共同开发的。而通过历史我们也能发现,Unix的主要是由Ken Thompson写下的。但在学术界,Dennis Ritchie的名字往往被排在了Ken Thompson前面的。这就是因为,Dennis Ritchie不但发明了C语言,而且当时他设计Unix操作系统的设计思想,影响了整个世界,直到今天。
 
当时,他们开发UNIX,没有正式立项,是Ken Thompson和Dennis Ritchie等少数几个人偷偷干的,如果一切都要从头从新设计,那几乎是不可能的。所以,Unix吸取与借鉴了Multics的经验,如内核,进程,层次式目录,面向流的I/O,把设备当作文件,……等等。但是Unix在继承中又有创新,比如Unix采用一种无格式的文件结构,文件由字节串加\0组成。这带来两大好处:一是在说明文件时不必加进许多无关的“填充物”,二是任何程序的输出可直接用作其他任何程序的输入,不必经过转换。后面这一点叫做“管道”(piping),这就是Unix首创的。此外,像把设备当作文件,从而简化了设备管理这一操作系统设计中的难题,虽然不是UNIX的发明,但是实现上它采用了一些新方法,比Multics更高明一些。
 
下面是Unix的特点:(30多年过去了,这些东西早已变成经典)
 
l         Everything (including hardware) is a file
所有的事物(甚至硬件本身)都是一个的文件。
l         Configuration data stored in text
以文件形式储存配置数据。
l         Small, single-purpose program
程序尽量朝向小而单一的目标设计
l         Avoid captive user interfaces
尽量避免令人困惑的用户接口
l         Ability to chain program together to perform complex tasks
将几个程序连结起来,处理大而复杂的工作。
 
 
Unix的影响和哲学
 
Unix是第三次工业革命中计算机软件领域最具代表性的产物。在这近40年中,由Unix造成的影响是最有深远意义的。就我看来,Unix为软件领域带来了至少以下有积极的东西,由这些东西所引发的直接或间接的事物更是举不胜数。
 
1)  软件开发的若干哲学和思想。
2)  全民参与推动软件,代码共享的模式。
3)  开启了***文化和开源项目。
4)  免费和商业的完美结合的Linux。
5)  C语言,而后发展的C++,Java等等类C的语言和脚本。
6)  TCP/IP,其的Socket编程已成为今天通用的网络编程主流。
 
不能不说,AT&T虽然发展了Unix,但今天Unix的混乱的局面也和AT&T 有着直接原因。但反过来说,如果没有AT&T的反面教材,今天的GNU/Linux很有可能也不会出现。AT&T究竟是限制了Unix的发展,还是以反面示例促进了Unix社区,已不好评说。今天,软件是商业化好还是开源好的争论还在继续,纵观这几十年来Unix的历史,Linux的划时代地出现。相信你会得出自己的结论。不管怎么样,Unix的经历对计算机领域贡献的不单单是技术,他给我们提供了丰富而生动的教材。特别是Unix引发的哲学,让今天的我们依然受益不浅。
 
说到Unix为我们所带来的软件开发的哲学,我必需要说一说。Unix遵循的原则是KISS(Keep it simple, stupid)。在[url]http://en.wikipedia.org/wiki/Unix_philosophy[/url] 上有很多的基本上大同小异的Unix哲学,都是很经典的。
 
Doug McIlroy 是认为UNIX的哲学是这样的:三条哲学,简明扼要,就是这三条哲学贯穿着整个Unix世界。尤其是第一条“do one thing and do it well”真是相当精彩!
 
l         Write programs that do one thing and do it well.
l         Write programs to work together.
l         Write programs to handle text streams, because that is a universal interface.
 
只要是Unix的程序员,他们会比别的程序员在任何时候都会不停地强调着这三条哲学。
 
而《The Art of Unix Programming》总结了下面这些哲学,都是至理名言啊。
Rule of Modularity: Write simple parts connected by clean interfaces.
Rule of Clarity: Clarity is better than cleverness.
Rule of Composition: Design programs to be connected to other programs.
Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
Rule of Simplicity: Design for simplicity; add complexity only where you must.
Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
Rule of Transparency: Design for visibility to make inspection and debugging easier.
Rule of Robustness: Robustness is the child of transparency and simplicity.
Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.
Rule of Least Surprise: In interface design, always do the least surprising thing.
Rule of Silence: When a program has nothing surprising to say, it should say nothing.
Rule of Repair: When you must fail, fail noisily and as soon as possible.
Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.
Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.
Rule of Optimization: Prototype before polishing. Get it working before you optimize it.
Rule of Diversity: Distrust all claims for "one true way".
Rule of Extensibility: Design for the future, because it will be here sooner than you think.
X Windows 的设计者 Mike Gancarz 给出了下面九条哲学思想

    Small is beautiful.
    Make each program do one thing well.
    Build a prototype as soon as possible.
    Choose portability over efficiency.
    Store data in flat text files.
    Use software leverage to your advantage.
    Use shell scripts to increase leverage and portability.
    Avoid captive user interfaces.
    Make every program a filter.

在今天,这种思想依然被传承着,在影响着世界上各个角落的每一个程序员。
 
Unix痛恨者手册
 
这里还需要值得一提的是一本叫《The Unix-Haters Handbook》,中文译做《Unix痛恨者手册》。可以在这里下载:[url]http://research.microsoft.com/~daniel/uhh-download.html[/url]。其中以调侃的语气声讨了Unix的种种不是。虽然这是十年前的一本书了,但还是值得一读。这本书指出了许多Unix的设计错误,指出了种种看起来很合理的设计走向了荒谬,还这样调侃了C语言——“如果说C语言给足了让你上吊的绳子,那么,C++在给了你足够的绳子把你的邻居全部捆起来之后,还给了你足够的绳子让你为一艘小帆船装上帆,最后你还有足够的绳子把自己吊死在帆船的桅杆上”。呵呵,相当的尖酸刻薄吧。里面有一句对操作系统的评价是这样的:“The fundamental difference between Unix and the Macintosh operating system is that Unix was designed to please programmers, whereas the Mac was designed to please users. (Windows, on the other hand, was designed to please accountants.”(Windows设计给会计人员?!连计算机用户都不是了,呵呵)
 
不过,我可以感觉得到这本书的作者在书中对Unix的感情是比较复杂的,爱恨交加,在书的最后有这样一句话“would anyone have spent this much time and effort writing about how much they hated Unix if they didn't secretly love it? I'll leave that to the readers to judge, but in the end, it really doesn't matter: If this book doesn't kill Unix, nothing will”。是的,如果Unix能够存活这么长的时间,那么,不会有什么东西可以把他消灭了。
 
从《Unix痛恨者手册》这本书,再加上Unix的历史,我们可以感到Unix的经历的风风雨雨,在Unix上面出现有种种教训,近40年的历程,Unix历经磨难,几近夭折,一路走来的确很不容易,让人由衷感叹。今天的Unix,今天的软件工业和以前相比已是不可同日而语。很大程度上,这些都要归功于这个充满苍桑的Unix。
 
 
后记
 
       在中国我们开始学习计算机的时候,我们被Microsoft所创造的文化所笼罩里。就在Unix出现革命性的转变,在Unix影响计算机世界文化的那几年里,科班出生专业开发人员学习的是MS-DOS和微软的文化,我们犹如一个井底之蛙一样,对外面的翻天覆地的变化无动于衷。微软创造的文化在我们这里尤其地根深蒂固,我们几乎忘记了另外一边的Unix。
 
在那充满激情的Unix的岁月里,大伙为了科研目的或个人兴趣在Unix上进行各种开发,并且不计较金钱利益,将这些源码公开,互相共享。在那里,开发和自由成为主题,正因为如此,当今的世界才如此丰富多采。在近40年Unix文化和技术积淀的里面,蕴涵着比较纯正的计算机文化和思想。
 
纵观整个Unix的历史过程中,许许多多的程序员、工程师前辈们在Unix中所摸爬滚打,他们的辛勤地、他们呕心沥血地跟随Unix,努力建立一个繁荣的计算机世界的文明。Unix不是一个简简单单的操作系统。有人说,Unix是程序员设计给程序员的,一点没错。Unix的近40年历史造就了它的博大精深,它给程序员们带来的绝不仅仅只是技术上的知识。它的失误,它的无奈,它的精神,它的荣耀,它从技术和思想上都启迪着我们。对于程序员来说,学习Unix就等同于向前辈程序学习。无论你是什么样的程序员,你都应该了解Unix,这是开发人员的根,前面的开发者造就了它,而它又在引领后面的开发人员,它是前辈程序员们交给我们的一份礼物,一个接力棒,它是开发人员赖以生存的土壤,是上一辈程序员留给我们这一代程序员开启未来的钥匙。Unix就像一个程序员教父一样,理当受到我们的尊敬和崇拜。
 
 
参考资料
 
l         Peter H. Salus 的《A Quarter Century of UNIX》,这被认为是UNIX的标准历史。
l         Eric S. Raymond 的《The Art of Unix Programming》
l         [url]http://www.wikipedia.org/[/url]  维基百科
l         [url]http://www.computerhope.com/history/[/url]  Computer History
l         [url]http://www.lotsir.com/Blog/article.asp?id=494[/url]  Lotsir's Blog — 《Unix&Linux历史重温》
l         [url]http://www.aka.org.cn/Docs/hacker-history.html[/url] 《***文化简史》
l         [url]http://www.simson.net/ref/ugh.pdf[/url]  《The UNIX-HATERS Handbook》
l         [url]http://free-electrons.com/doc/free_software/img0.html[/url] 《GNU/Linux Free Software》幻灯片
l         [url]http://cm.bell-labs.com/cm/cs/who/dmr/hist.html[/url]  Dennis M. Ritchie 《The Evolution of the Unix Time-sharing System》
 
我想把古老编程环境系列完成,这是unix篇,其实从linux开始,该系列就有些变味了,变成了操作系统的介绍,本unix篇将分FreeBSD、Solaris、SCO等几个部分,unix的发行版不是很多,有些像AIX、HP-UX、IRIX等根本不能用在x86上,所有做个全面的介绍是有可能的。有些老的unix确实难装,而且vmware作为虚拟化软件,对老系统兼容性不如bochs、dosbox等模拟器,说不定有些版本在vmware上根本就是无解的,既然标题不强调old-os了,那些太古旧也就算了。因篇幅较长,按BSD、Solaris、SCO等分开,先发BSD篇。

虽然是unix,但是基本全是桌面图,免得像上一篇LFS那样千篇一律(编译Xorg、Qt、kde、gnome、libreoffice之类的你知道多恐怖么……)。

1.BSD篇
本篇以FreeBSD为主线,穿插其它的BSD。从法律意义上讲,BSD不能称为unix,因为不是The Open Group成员,也没有获得任何unix认证,不能在公开场合自称unix。

没耐心的请略过下一段,直接到有图的部分

首先我们必须明白关于FreeBSD的一些概念。
1.FreeBSD的开发代号比较迷惑人,release代表正式发行相当于Debian Stable,"stable"代表较稳定的测试分支相当于Debian Testing,Current是不稳定测试分支相当于Debian Sid,所以一些小白可能会误将Stable当做正式版本。

2.狭义的Linux只是一个操作系统内核,而狭义的FreeBSD是一个基本操作系统,包含了基本系统工具和编译器,如ls、cat、sed、tar等在linux中由其他软件包提供的工具,在FreeBSD中是基本系统的一部分

3.作为广义上发行版套件概念的FreeBSD和linux发行版是类似的,都是完整的操作系统套件。但是和其它的定期发行的linux发行版(如Debian/RHEL)不同,FreeBSD社区(或者说核心社区)真正维护的其实只有前面所说的基本系统——内核、系统工具、编译器,这些东西是能够真正体现freebsd质量和稳定性的,其他的软件包(ports、package)属于二等公民,从安装位置(/usr/local)就可以看出来。而大多数linux定期发行版,整套发行版都是受管理的,发行版生命周期内所有软件版本不变,只有bugfix。由上述事实可以知道,你用RHEL、Debian,发行方对你使用的所有软件仓库内的软件负责。而FreeBSD则只对基本系统负责,对ports负一半责——release版的ports保证编译的成功和一定的安全性、稳定性,但如果你更新了ports树,并升级了软件包,是有可能出问题的。因此,若想保持FreeBSD在生产环境的稳定,除了使用release之外,其升级原则是只给基本系统打补丁,不要随便升级ports软件(但你可以在保持ports树为当前release版本的状态下用ports安装软件,只要你不更新ports树且不随意改补丁和编译选项,品质和release版二进制包是没有区别的),所以,所谓的鼓励你用ports、鼓励你升级ports的做法,其实更多是站在开发者和学习者角度考虑的,如果你是生产环境,就尽量不要去升级ports。关于package和ports的不可靠,Openbsd的faq是明确说明了的,几大BSD的开发模式基本类似,而FreeBSD不知是有意还是无意的回避了这一点(至少我没找到FreeBSD文档中有明确的说法),这可能与OpenBSD更注重安全的严谨作风有关——OpenBSD事先告诉你哪里可能会出问题让你别去尝试,而FreeBSD则希望你多试验并反馈问题。

4.BSD和GPL不是技术路线之争,而是意识形态的根本对立,相当的有火药味。因此,在BSD社区你别抱怨基本系统里的gcc为什么还是4.2,4.3以后gcc是GPLv3,和BSD协议从根本上就对立了,这其实就是FreeBSD忙于搞clang的原因,你不换clang,那就永远gcc 4.2吧,更高版本的gcc是不可能进入基本系统的,只能在ports里做二等公民;相对的,你也别在Linux社区抱怨用不上zfs文件系统了,zfs虽然不是BSD,但他用的sun公司的CDDL协议,与BSD兼容,与GPL不兼容,因此永远不可能出现在linux内核中,作为fuse又基本丧失了意义。Stallman在BSD社区绝对是个令人厌恶的存在,GPLv3其实也得罪了linux社区,许多人其实都视FSF为一个极端宗教组织……linux内核到现在也不愿意换GPLv3,除了技术上的原因外(内核规模太大,全面检查代码工作量太大),更重要的原因在于如果用了GPLv3,那现在所有的闭源驱动程序都成了非法的了,大量的开源代码恐怕也得从内核中剔除(维护这些代码的公司或组织或个人,可能不原意接受GPLv3,那怎么办,删呗,就像FreeBSD删除AT&T代码那样,删到最后连系统都起不来了,重新发明轮子吧,内核一夜变回20年前!)。

综上所述,因此FreeBSD生产系统的维护要比企业级linux困难一些,不仅概念晦涩,而且升级系统务必相当谨慎。你可以把FreeBSD的版本号x.y看做和Windows NT的版本号类似,Windows NT的小版本号之间往往会有明显区别,如2000(NT 5.0)和XP(NT 5.1),Vista(NT 6.0)和7(NT 6.1),FreeBSD也是,而且还会伴随着package和ports的大幅度更新。整个系统的组织结构也更类似于Windows——基本系统+第三方软件。因此,在你没有深刻的理解FreeBSD之前,照套linux的话,你很难把FreeBSD用稳定。

FreeBSD十数年来安装程序都没有什么变化,到9.0这一代却完全不同了,安装的时候不再是传统的sysinstall。我这个人有bugfix癖,对于x.0这种软件都没有好感。我这一版安装的是PC-BSD 9.0,和FreeBSD 9.0是二进制兼容的,但对桌面做了优化。安装过程中我就感到了PC-BSD发行版的不成熟,中文化支持有限,中文安装界面还有空白字符,桌面性能也很一般,甚至不如自己用FreeBSD 8.3+kde配的桌面(所谓的优化恐怕也就是自带闭源驱动、提供了PBI包管理系统和默认安装桌面了)。

KDE-4.7.3,PC-BSD的声显网全部自动弄好,桌面自动装好,对于FreeBSD初学者,减少了配置,但对于有一定操作经验的人来说,并没有太大吸引力,它的定位应该就是初学者

其实,如果你想在桌面上用BSD的话,我推荐Debian kfreebsd squeeze,用的FreeBSD 8.1内核。Debian严格来说不是一种linux,而是一个unix like操作系统计划的统称,除了linux/freebsd内核外,还有hurd/opensolaris内核,目前只有linux和freebsd相对成熟。
Debian kfreebsd利用glibc隔离了freebsd内核,加上debian本身的apt软件包管理系统,用起来和一般的Debian/Ubuntu差别都不大,不过要注意,FreeBSD内核可以明显感到在桌面响应等方面不如linux,Debian kFreeBSD装不上vmware-tools,虚拟机上更加剧了这一点,而且freebsd内核硬件兼容相对差些,比已经很挑机器的linux更挑机器。
总之,PC-BSD和Debian kfreebsd这两个FreeBSD桌面给人的感觉都是比较慢,尤其明显的就是FreeBSD的内核I/O是会阻塞用户交互的,具体体现就是狂读硬盘的时候键盘鼠标会卡,而linux/Windows上都不会卡(除非用了某些输入法,因为有些输入法磁盘I/O量很大,如ibus、搜狗)。另外可能是ufs文件系统的问题,FreeBSD处理大量小文件的性能似乎很差,比如说在解压ports包的时候,50M左右的tgz/tbz包能解压10多分钟,对于旧版本更慢(应该是ufs2和ufs的差别),而硬盘灯却是常亮的,磁盘占用率是满的,I/O速率却只有几K到几百K。在Linux上的体验要好得多,Linux kernel也是和ports包类似的大小,如果也这么慢,我做LFS的时候早疯了。

xfce-4.6,和Debian Stable的linux版一样,熟悉的星星主题,apt包管理,自动配好的bash-completion,绝对是Debian啊,但是看uname -a的结果。可能应为Debian的软件仓库庞大(比FreeBSD的ports内的软件数量多得多),有些软件并没有完美移植到freebsd下,所以/proc/version虚拟了一个linux的版本号

Debian kfreebsd证明了FreeBSD也可以很易用,但FreeBSD的桌面效果不好(别总将Mac OS X和FreeBSD扯一块,他们的差别已经非常大了,我还说Windows NT也继承了部分BSD代码呢),下面就是传统的FreeBSD了。十几年来,FreeBSD不开桌面的话(桌面的进化是比较明显的),安装程序上、系统配置上基本看不出是哪代,这也是FreeBSD的卖点——不改用户界面,用户使用新版本不需要学习什么新东西。

FreeBSD 8.3
FreeBSD内核是为服务器优化的,且不说前面所说的I/O会影响交互式应用的问题了,连VESA这种老掉牙的基本视频驱动默认都是不编译的,而且FreeBSD的amd64版本直到RELENG_8才支持VESA(i386版本早得多,在RELENG_4),相应的linux的amd64在2.4.20+就有VESA支持。因为我在FreeBSD下X用的很少,基本都在控制台,所以8.3的内核是重新构建的以支持VESA,在控制台下能开出高分辨率。kde/gnome/xfce/lxde四大桌面都配好了,字体都是文泉驿微米黑,计算机上中文衬线字体比较好看的操作系统只有Windows,他那个宋体是下了真功夫的,其他系统老老实实上黑体,衬线字体都有种
“破碎”的感觉。Vmware tools对FreeBSD 7、8支持都不好,认不出Xorg,不过还好,这两版xorg在无配置情况下都能良好运行,不过如果想要更好的用户体验,配置是必须的,FreeBSD的ports/packages自带vmware的视频和鼠标驱动,装上之后把xorg.conf的鼠标驱动改成vmmouse支持自动客户/宿主切换,视频驱动改成vmware支持更平滑的图形界面,总之需要改好几处,网上的说法也不全对,改不好的话经常出现鼠标卡死的情况。总而言之,花了功夫后效果好于PC-BSD。

kde-4.7.4,stable能升到4.8.4,区别不太大,4.7.4的kde能在虚拟机的烂显卡上开xfce那样的二维透明特效,因为开了宽屏,所以截一半

gnome-2.32.1,FreeBSD似乎不准备上gnome3,基本是默认主题,FreeBSD不像Debian、Ubuntu那样提供了许多额外主题,和kde、xfce一比,开不动compiz的gnome倒成了最逊的

xfce-4.8.3,我最喜欢的unix like桌面,简约而不简单,也能在vmware上开透明

lxde-0.5.5,在xfce逐渐走向重量级的情况下,lxde接过了轻量级桌面的棒

FreeBSD 7.4
amd64的freebsd 7.4不支持VESA了,控制台老老实实640x480吧。7.x和8.x都可以用freebsd-update升级基本系统,比从源码构建快多了。FreeBSD的控制台终端默认不分delete和backscpace……而且我把LFS那边配好的inputrc直接过来竟然没用,看来语法还不完全一样,ee、vim和X终端都没问题,也不是shell的问题,我实在受不了简陋的cshell,装好FreeBSD的以后第一件事就是换bash,虽然bash是packages/ports,没有作为基本系统的cshell稳定,但cshell太影响操作效率了,即便cshell配置到极限,应该也不如bash+bash-completion好用吧,zshell据说最强,但我没试过,其开发也不如bash活跃,优势应该是越来越小。这里不得不吐槽一下某些软件,不管你的出身多么高贵,来源于大型机也好,使用某硬件终端机也好,来自学术机构也好,你当年开发时用的那种键盘布局和机器特性早已被扔进垃圾堆了,你现在最主要的用户是pc……vi你笑什么,你也一样,默认配置下想删除一个字符都得按esc退回命令模式用x,否则你就体验一下delete键越删字越多的思想感情吧……不过vim已经改善很多了,没那么反人类了。用linux的童鞋可能有疑问,在linux下vi和vim不是一个软件么?那是因为vim这个软件包本身提供了一个vi的符号链接,而在freebsd中,vi是基本系统的组件,vim是ports/packages。

kde-4.5.5,开不了任何特效,但是kde4到了4.5已经比较稳定了,以前用过debian stable的4.3.4都不是很稳定,跟别说其他发行版了

同样gnome-2.32,不贴

xfce-4.6.4,这不是我刻意配的,xfce-4.6本来默认就是这种仿win的主题,Debian Stable上的也是(参见之前的debian kfreebsd)

FreeBSD 6.4
smp支持不是FreeBSD的强项(至少在7之前)。6.4的smp还算靠谱,毕竟默认是打开的,以freebsd的作风,不靠谱的功能绝对不敢默认打开。从6.x以下,就不是官方支持的old-release了,freebsd-update要么不能用,要么只能升级一部分。6.4我是用cvsup升级源码(那个慢啊……而且绝不单是网络的原因,CVS的问题,老掉牙的东西),然后整体重新构建的基本系统(为了升级到最终的p11版本)。freebsd对基本系统的构建支持很好,非常简单,但是千万别去看网上菜鸟写的小报文章,无论是在哪个领域,网上的小报技术文90%都是错的,一定要看官方文档,FreeBSD的中文官方文档,是所有unix like系统中最好的之一(因为gentoo也很好,所以加了之一)。

kde-3.5.10,末代kde3,也算是一代经典,kde4刚出来时极度不稳定,不知道少人怀念他,这是最后能开宽屏的X Window,后面都是1024x768

gnome-2.22,无甚特色,不贴

xfce-4.4.2,vmware中在gnome/kde都开不了特效的情况下,xfce反而是最华丽的,请注意透明特效,三大桌面中他最早支持vmware上的特效

FreeBSD 5.5
5.5默认是关闭smp的,因为不靠谱……windows、linux、freebsd的smp完善基本都是在2000-2005年这段时间,这和硬件的发展有关——这段时期intel和amd相继推出多核处理器,smp开始向普通pc用户普及。不过windows起步最早,NT设计之初(80年代末)就支持smp,90年代中期的NT3.51/NT4就有一定实用性了;linux的进度也一直比FreeBSD快,从2.0(90年代中期)开始支持,虽然全局内核锁直到2.6末期才完全消除,但在FreeBSD 3、4、5、6这段时间,linux的smp支持明显强于FreeBSD。cvsup更新源码树,改内核配置,再重新构建基本系统,支持了smp,带来的后果就是单进程的速度下降,如果用8个核,则整体性能下降非常厉害,而且系统稳定性糟糕,时常死机,4个以下核还凑合。对于这些早期的没有文泉驿ttf字体的版本,先用楷体凑合吧,也比开源的宋体好看,我个人很反感从windows中偷字体这种方式,也不喜欢不同版本软件包互用。5.5之下如果要装vmware tools,建议装vmware workstation 5.5.9这个老版本的tools,从linux版安装包里解出来freebsd.iso,即可安装。

kde-3.5.1和3.5.10无甚区别,不贴

不得不提一下freebsd基本系统维护了一个无模式的简单编辑器ee,不像vi那样的反人类,初接触unix的童鞋恐怕会很喜欢,我其实接触freebsd比linux要早,在linux下苦苦寻找类似产品,找到个nano,不过习惯vim之后,ee/nano也用的少了

相对于kde的变化,gnome真有些千篇一律了

xfce-4.2.3已经差不多成型了,现在的xfce除了应用更丰富、有透明特效等外,大体框架就是这样,浏览器是firefox 1.5,不过时才有鬼,不过貌似Mozilla滥用了这句话(除了firefox,其他浏览器都说过时……),导致2007年左右firefox扩张地盘最猛的那几年招来了许多骂名

FreeBSD 4.11
从4代开始就没有amd64架构了。4.x以下的FreeBSD,smp支持很差。4.11的smp如果只开2个内核勉强还能用,但带来的副作用已经很明显——光驱挂载超时……莫名其妙的错误,仍然用smp内核,但把虚拟机CPU核数改成1就没事……SMP情况下启动的时候偶尔也会出现检测光驱那一步一直超时的情况,建议如果用SMP,请默认不连接光驱。

kde-3.3.2,这是最后有比较好的中文支持的FreeBSD了,后面就是英文了,要赞一下KDE,中文支持很早就非常完整

人们抨击gnome 2一直没创新,此话不假,看这个gnome与gnome 2.32是不是大差不差,gnome 1是蒙昧时代,2有了重大进步,赶上了kde(red hat居功至伟),但此后发展一直不快

xfce-3.8.18.3才是真正的“轻量级”,xfce4已经显得太“完整”了

FreeBSD 3.5.1
smp支持基本就是摆设,开了以后系统慢10倍,基本不能用。从这代开始vmware的引擎要选5代或以下,否则X Window开不了。另外这代的pkg_add不支持http协议,国内基本没有freebsd旧版本的archive镜像,用ftp连国外的镜像很慢,我用迅雷下的3.5.1和2.2.8的全部package,600-700KB/s(同一个站点FreeBSD下载不超过50KB/s),而且没有多点下载。两版合起来2G多,老版本软件包少,也很小。

kde-1.1.2,基本没有了现代感,不过因为vmware tools能装上,所以高分辨率和真彩色还是能上去的

这货是gnome-1.2.1,因为起步比kde晚,在当时明显要比kde简陋的多

xfce 3.4,虽然版本号不小,但是和现在的xfce差别太大了,看来还是xfce实在,3-4的升级相当有货

FreeBSD 2.2.9
2.2.9是2006年4月1日发布的,发布很晚又是愚人节,甚至有人认为是一个玩笑……如果熟悉FreeBSD的历史,其开发应该从2代算,2代因为著名的BSD的版权官司,删掉了大量的关键代码(产生了4.4 BSD-lite),FreeBSD项目受到牵连,也不得不开始了重新发明轮子的过程。本来BSD的基础远好于Linux,但经过这次波折,却让linux抢到了历史机遇(除了技术上阻碍了FreeBSD的开发以外,更重要的是人们为了规避法律风险,敬unix而远之),一个典型的知识产权法律阻碍科技进步的案例。System V是该次法律纠纷的受益者么?显然也不是,经过Novell的辗转,根正苗红的AT&T System V最终死在了SCO手上(非常讽刺的是,SCO也是个讼棍),几个基于System V的商业版本unix,除了AIX在小众、高端的市场继续忽悠银行家以外,其它的Solaris(正因为BSD的法律纠纷转向了System V,早期的SunOS是基于BSD的)、HP-UX、IRIX混的都不算好。unix的这次内耗,可视为传统的unix衰落的标志。

kde的祖宗——kde 1.0

gnome 0.3上的空当接龙……

X的默认窗口管理器twm,前面一直没出场,10多年来一直都是这个样子……

FreeBSD  1.1.5.1
当时unix的版权所有者Novell网开了一面,允许该版本(包含了“侵权”代码)在法院判决之前发布,从这件事情上和SCO开始讼棍生涯后Novell对其的致命一击看,这家公司还是比较有良心的。这一版光盘不是可引导的,几个cdinst软盘也不好使,没折腾了,FreeBSD其实从2.1之后才算一个比较成型的系统。2.x早期版本被版权官司阉割的太厉害,1.x则基本就是
传统的386 BSD——浓浓的学术味,什么叫学术味?就是让你连安装都得去请教老师……FreeBSD 1.x、4.4 BSD和386 BSD在bochs上有人是装成功的。

NetBSD 5.1.2
以下的小发行版的历史版本不演示了,这是从FreeBSD分支出来的项目,强调可移植性,在Linux 2.6内核之前,NetBSD是可移植性最好的操作系统,现在这个头衔让给了linux,其实是早晚的事情,几大BSD社区合一起,其开发者恐怕也就是linux的零头。netbsd的ports名叫pkgsrc,和OpenBSD不同,netbsd似乎更提倡编译安装而非二进制包,这可能与netbsd所追求的跨平台性有关,5.1.2的release到目前都没有匹配的二进制包,只能用5.1的,有些包在5.1.2上装是有问题的。没有找到快的NetBSD镜像,所以这个netbsd就只有基本系统。

OpenBSD 5.1
强调安全,OpenSSH就是OpenBSD的子项目,从NetBSD分支,主要是因为人际关系和技术路线的问题,一个核心netbsd成员离开了团队创立了openbsd。OpenBSD在基本系统下的安全记录,虽然有人不服气,但是其他操作系统都比不上,linux即便一样扒的不剩什么,还是不如OpenBSD安全稳定(以linux开发的组织方式和活跃程度,引入大量bug是必然的,linux仗着用户多,其保证内核质量的策略就是——发布发布不停的发布,让大量的用户去测试)。虽然安装方式极度恶心(命令行问答形式的交互,80年代前期的风格),许多人说openbsd晦涩难用可能就是被安装程序吓到了,但实际手感上比netbsd要好得多,可能是openbsd更像freebsd吧。openbsd和netbsd默认都没有linux、freebsd那样alt+fn的多终端,不过openbsd的基本系统中维护着一个tmux,类似于screen的多终端程序,习惯了也很好用。正如之前强调的,openbsd更推荐二进制包安装,其packages和release在一块,快一点的镜像比较好找,不像许多netbsd的镜像只有基本系统。

几大BSD系统中唯一官方packages有gnome3的,我是很不习惯gnome3这种风格……

DragonFly 3.02,是从FreeBSD 4剥离的分支,当时的FreeBSD 5加了许多新特性,初期稳定性很烂,有人不满于是做了这个分支,据说在线程支持和内核架构上做了改进,貌似内核已经改成了类似Mac OS X、Windows NT那样的混合内核,因为软件包比较新,而且不是完全针对服务器的(从混合内核设计和线程支持看),可操作性比openbsd和netbsd强,别的不说,vim预配置好的,随达不到某些自定义配置的强大,但至少不难用了。

DragonFly默认的fvwm窗口管理器,因为该系统并不死守BSD协议,其自立的新文件系统hammer(号称强于zfs……)就是gpl的,所以gcc可以用高版本

其他不上了,gnome-2.32、kde-4.5.5都看过了

总结一下,为了把这些系统都配置得较完美,BSD这一块我花了1周多时间,心情从一开始的新鲜,到了解BSD之后的钦佩和上瘾,再到最后的有些火大。为什么会火大?我虽然欣赏kiss,但这个kiss过分了(我是不是有点叶公好龙),几乎所有东西都得手工改配置文件,并且在软件实际运行之前没有任何方式验证配置文件的正确性,当一个软件产生了预料之外的结果,排查半天结果只是你配置文件打错了一个字符(比如配镜像的时候最后少打了一个/),能不火大么?GNU/Linux方面实际上已经有了一种倾向,那就是在人工编写的配置文件和程序实际读的配置文件之间做一个转换,这实际上是对配置文件正确性的一种验证,也是更为安全的方式。其实,所谓的图形界面配置能减少错误,本质上做的也就是这件事情而已,验证配置文件正确性不一定要图形界面来做。

看见有FreeBSD用户喷Linux内核使用交互式配置“恶心”,“亵渎”了unix精神,我也不想多说了,相信FreeBSD只要健康发展,支持的架构越来越多,驱动越来越丰富,交叉编译的需求越来越多,早晚有一天,也会放弃现在的内核配置方式……kiss是一种哲学,但不是一种偏执,用了几种unix like之后,linux和gnu的软件是将传统与现代,强大与易用结合的最好的,这其实也不难理解为什么linux用户相对最多,用户不是傻瓜。

但对于FreeBSD基本系统的稳定性,我是绝对伸大拇指的,ports/packages只要不随便更新,大部分场合也是足够的,FreeBSD或者说包括Linux在内的大部分unix like系统,对桌面和易用性要求太高是不实际的,也是没必要的,他不是给普通用户用的。一个好的桌面操作系统,从Windows NT和Mac OS X的实际来看,其内核都必须对图形界面做直接的支持。

unix认证不过是个名头,各种BSD到目前都没有通过unix认证(除非把Mac OS X勉强算成BSD),但不妨碍人们认为BSD就是unix。M$如果愿意,把posix子系统完善,Windows NT也有能通过unix认证的潜力(别忘了posix标准的创立,M$的xenix分量不算小,M$并非unix的天然敌人,只是敌视linux给人一种感观而已)……IBM的z系列大型机操作系统z/OS,UNIX就是作为一个子系统存在的。

个人是反苹果的,收集的各种软件,和苹果相关的为0,所以Mac OS X就不演示了,几年前装过虚拟机,效果不能说多好,但肯定是可行的,作为x86的操作系统,vmware上能正常运行是基本功,否则就不能说成熟可靠,因为vmware虚拟机也是一台“标准PC”,而且用的都是兼容性最好的硬件。记得几年前ubuntu一些人总是回避虚拟机上问题多多(原因很简单,你ubuntu要是靠谱,debian/rhel他们这种落后最新软件2年的岂不都是二货?),声称问题都在新用户不敢上真机玩旁门左道而非ubuntu自己在虚拟机上不稳定,我大概就是在那时讨厌ubuntu的吧……不过客观点说,Debian系在虚拟机上不如RHEL系倒是事实。

下期是solaris、sco等其他unix篇,恐怕得过几天发,白天一直都有事情,只有晚上有时间。solaris我有2.4、2.5.1、7、8、9、10、11,只差一个2.6(solaris从2.7开始变版本帝,直接叫7),还有更早的sunos4(应该没有x86),sco有unixware 7.1.4、openserver 6.0.0/5.0.7,以及几个SCO早期的xenix和SVR4

Solaris目前在oracle手里,随着solaris 11的发行,至少可以说明短期内这个操作系统不会死掉了,这一类企业级系统一般都至少10年支持周期,oracle在收购sun后推出了新版,至少说明了有继续开发solaris的意向

SCO从M$哪里继承来了xenix,算是x86平台上unix的探路者了,虽然业绩下滑后做了令人不齿的讼棍,但要细数unix的历史,SCO应该是有一席之地的。

上篇BSD篇讲述了开源世界的UNIX,今天我们进入商业UNIX世界——System V的后裔,商业UNIX大都通过了UNIX认证,而且大多并不使用FreeBSD等使用的自由软件桌面

2.Solaris篇
      《UNIX环境高级编程》的第二版曾说Solaris是目前(10年前……)唯一有一定市场份额的System V后裔,这个说法现在已经不太适用了,经过21世纪初市值冲到2000亿美元的高位,SUN公司衰落之迅速实乃罕见,随着IT泡沫的破裂几乎一夜之间垮了,以后再也没有复苏。IT泡沫是个外因,本质上还是在于SUN公司一向引以为豪的技术上的——Sparc对x86的性能优势越来越小,而后者无论开发人才还是价格上优势都大得多,SGI和IRIX也死于同样的原因——mips性能上还不如sparc(目前最强的mips是龙芯,其它的都只是嵌入式级别)。同样经历IT泡沫,M$和Intel虽不像90年代那样大红大紫股票疯涨,却逐渐走向高端,一向看不起x86的服务器领域、超算领域、科研学术领域,Intel取得了重大成功,目前已是统治性的优势;而M$的Windows Server等企业级产品,也不再是吴下阿蒙,在小企业、学校同样是统治性的(谁说google数据中心才叫服务器?小公司的ftp文件服务器、内部邮件服务器、测试服务器,学校多媒体教室的教师主机,其实都是服务器,这些不起眼却装机数量庞大的领域,曾经是novell、sco、sun的天下,现在基本都归了M$,这就是Windows能在服务器领域占80%份额的原因,当然正版率就不敢说了)。目前的苹果,其实就是90年代的M$,iDevice都是些大众化的终端用户设备,和“高端”八竿子打不着。

Solaris算是一款“中档”UNIX,它的主要定位通常不是关键应用,往往被用于前置服务器(看网上的说法一般指银行分理处用于处理前台终端数据的服务器,不同于数据中心的服务器,对这一块我不太懂,懂的可指正)、应用层服务器(跑业务流程的服务器,以计算为主,不保存关键数据,很容易替换也很容易扩充,在大型系统中往往与更关键的数据服务器分开)、工作站(传统上指强调图形能力的高档微型计算机,不一定是PC,SGI工作站最为典型,但在x86的冲击下现已成了高档PC的同义词),而这些领域现在都成了更便宜的x86+Linux/Windows以及一部分低端小型机的天下,一个明显的规律是混迹在这些领域的UNIX公司——SCO、SGI、SUN混的都不好,而走纯高端路线和x86完全脱离接触的IBM AIX却活得很滋润。

Sun时代的Solaris定价其实很低,免费使用(无技术支持),75美元就能买到基本的技术支持,是不是在丢企业级操作系统的脸啊……连Windows Server都不止这个价。Oracle的Solaris,已经有了90天试用期,技术支持定价也更高了。

Solaris 11
Oracle收购SUN之后发布的,其开发从Solaris 10发布后其实就开始了,但进度很慢,OpenSolaris你可以视为Solaris 11的早期预览版,目前OpenSolaris已死,新的项目叫做OpenIndiana,由于目前还不是正式版,个人不喜玩测试版软件,就不贴了,反正和Solaris 11差不了太多。
以企业级系统的至少10年支持周期看,既然Oracle发布了新版,Solaris短期内性命无虞。
Solaris 11的安装方式发生了比较大的变化,而且默认zfs文件系统,不过一个恶心的限制仍在——用户名不得超过8字节,这个限制FreeBSD和Linux早就突破了。

solaris 11也拥有了linux和freebsd那样的alt-fn虚拟终端,而且安全还做了加强,切换后再回来是被锁的,而且终端默认已经是bash了

和之前不同,这次soalris只提供了基本系统的文本模式安装镜像,不再是完整的DVD或CD套装可以一次性装全,但提供了一个软件仓库的DVD,可以离线安装软件,因为是zfs有zpool,分区大大简化,安装程序步骤极少,比起之前Solaris神一样的繁琐安装好多了。下图是安装solaris桌面。UNIX的包管理程序都是pkgxxx,看来很重视历史的传承,至于是否自动解决依赖,就看实现了,至少solaris和freebsd都是能解决的。

11貌似已经不玩Java Desktop Environment的概念了,这就是真正的gnome啦。solaris 11装不上vmware tools,但是软件仓库带有vmware的视频和鼠标驱动,也可以在不装vmware tools的情况下获得比较好的用户体验(要改Xorg配置文件)。因为这些驱动都是是Xorg维护的开源驱动,Debian kFreeBSD的Xorg只要足够新应该也有,这样的话用户体验方面Debian kFreeBSD就没多少缺陷了,呃KDE版本过低算一个吧,低版本KDE4不稳定。

还有这个软件包管理器,你敢不那么像“新立得”么,我之前就觉得pkg install命令行的语法似曾相识,那不就是apt-get install换个名嘛,你丫的要抄Debian抄到什么程度?总而言之,根据目前的状况看,你把solaris 11当Debian/Ubuntu来用,应该没什么问题……客观来讲,solaris 11是我目前用过的最好用的unix,还很稳定,没出过任何异常状况,我最喜欢这样的系统了……而且,虽然sun studio仍然要额外下载,但gnu开发套件在软件仓库都是自带了,不用去找sunfreeware了。

Solaris 10
虽然发布的时候SUN已经不行了,但仍算是一代经典。个人感觉上比9强很多,9、10、11一代一个样,和freebsd用户界面长期稳定形成反差。Soalris在UNIX中比较少见的不自带编译器,sun编译器是要额外花钱的,所以许多人用gcc代替。

Java Desktop Environment,你敢更像Windows么,大家别去吐槽国产Linux了……不过这就是JDE的风格和定位。总体来说操作的流畅度也好,功能性也好,Soalris 10都算比较好用,Solaris 11的易用不是偶然,Solaris应该是UNIX中最亲桌面和图形的(从很早就支持图形化安装就可见一斑),毕竟solaris也是个“工作站操作系统”(参见前面工作站定义)。

Common Desktop Environment,简称CDE,长期以来是商业UNIX上的桌面环境标准,基本商业UNIX都自带,早期的gnome、kde、xfce也有浓浓的CDE风格,CDE是过时的,Solaris 10启动CDE的时候就提示未来版本会移除CDE
psrinfo显示cpu数量,isainfo显示是否运行在64位内核下 ,soalris的x86/x64是一个安装镜像,根据CPU自动匹配

Solaris 9
在虚拟机上速度比较慢,Solaris在x86上不如sparc不仅仅是硬件速度问题,sun的编译器可能也有问题,solaris 9之前的sun编译器对x86的优化能力可能比较差吧,毕竟unix可移植性好,x86和sparc代码不同的部分极少,大部分都是一样的C语言实现。9以下就没有amd64内核了,都是32位的。

Solaris 9上的CDE

Solaris 8
该版本是sun最兴旺发达时发布的。用vmware 6/7/8的话必须选5的虚拟引擎,否则X起不来,和FreeBSD 3.5.1情况类似。安装的时候不能用图形界面安装,否则重启后第二步安装启动不了,要在安装最后一步再配置X,推荐个网址http://partnerweb.vmware.com/GOSIG/home.html,有些老系统用这里面的方法能提高性能,还能解决安装中的一些疑难。

Soalris 8开不动真彩色了,SMP的支持上,Solaris因为有sparc上的成熟经验(作为更高端的机器,sparc的SMP普及比x86早),在2000年左右明显好于Linux和FreeBSD

Soalris 2.6/7
没找到安装镜像,Solaris从2.7开始就去掉了主版本号,做了版本帝。

Solaris 2.5.1
vmware安装完以后启动内核崩溃,virtualbox不崩溃但键盘死活输入不了小写字母,无法登陆。TNND,老子现学bochs也要搞定你。bochs的growing格式磁盘镜像有bug,solaris下认出的容量是错的,不得不用flat全部预分配。

安装界面下的千年虫bug,许多人都没见过吧……Solaris可以说是UNIX图形化安装的先驱,如此早的版本就默认图形安装。

Solaris 2.5.1默认不启动X,键盘布局非常反人类,基本上功能键最好都别碰,我不清楚这是不是sparc工作站上的键盘布局

Solaris 2.4
一样得用bochs装

System V Release 3.2,总算找到个能装的版本,这个版本完整版是70多张软盘……看来应该不是很古老的东西

这个才是真老,System V Release 2,1985年左右的

System V, 曾经也被称为 AT&T System V,是Unix操作系统众多版本中的一支。它最初由 AT&T 开发,在1983年第一次发布。一共发行了4个 System V 的主要版本:版本1、2、3 和 4。
       System V Release 4,或者称为SVR4,是最成功的版本,成为一些UNIX共同特性的源头,例如 ”SysV 初始化脚本“ (/etc/init.d),用来控制系统启动和关闭,System V Interface Definition (SVID) 是一个System V 如何工作的标准定义。
       AT&T 出售运行System V的专有硬件,但许多(或许是大多数)客户在其上运行一个转售的版本,这个版本基于 AT&T 的实现说明。流行的SysV 衍生版本包括 Dell SVR4 和 Bull SVR4。当今广泛使用的 System V 版本是 SCO OpenServer,基于 System V Release 3,以及SUN Solaris 和 SCO UnixWare,都基于 System V Release 4。
       System V 是 AT&T 的第一个商业UNIX版本(UNIX System III)的加强。传统上,System V 被看作是两种UNIX"风味"之一(另一个是 BSD)。然而,随着一些并不基于这两者代码的UNIX实现的出现,例如 Linux 和 QNX, 这一归纳不再准确,但不论如何,像POSIX这样的标准化努力一直在试图减少各种实现之间的不同。

SVR1
        System V的第一个版本,发布于1983年。它引进了一些特性,例如vi编辑器和curses库(这是从加州大学伯克利分校开发的BSD中引进的)。其中也包括了对DEC VAX机器的支持。同时也支持使用消息进行进程间通讯,信号量,和共享内存。
SVR2
       System V Release 2在1984年发布。其中添加了shell功能和SVID。
SVR3
       System V Release 3在1987年。它包括STREAMS,远程文件共享(remote file sharing,RFS),共享库,以及Transport Layer Interface (TLI)。
SVR4
       System V Release 4.0在1989年11月1日公开,并于1990年发布。它是UNIX Systems Laboratories和Sun联合进行的项目,融合了来自Release 3,4.3BSD,Xenix,以及SunOS的技术;来自BSD:TCP/IP支持;csh来自SunOS:网络文件系统,内存映射文件,以及一个新的共享库;系统其他的实现:ksh;ANSI C兼容更好的国际化和本地化支持一个二进制应用接口支持POSIX、X/Open和SVID3标准。
       SVR4(UNIX System V Release4)是AT&T在1989年首次发行的;SVR4集成SVR3,4BSD,SunOS,以及XENIX的一些特性,还添加了一些新功能,如实时调度,Korn shell,以及对STREAMS子系统的改进;SVR4是迄今为止最新的UNIX。

2.SCO篇
      SCO与M$关系密切,xenix可以说是二者合作开发的,后来M$全力搞Windows,而SCO买断了xenix,成为最早在x86上提供商业UNIX解决方案的公司,随后又从novell买来了System V源码,并利用Windows NT尚未被企业用户接受,Linux刚起步不成熟,FreeBSD官司缠身,Solaris也还没有重视x86市场的空白期,成为了x86下最大的UNIX提供商。但SCO虽然抓住了先机,却未能够保持优势,当其他操作系统逐渐成熟,老迈的SCO UNIX跌落的比SUN更早。业绩下滑后的SCO,误判形势,大打官司,四处树敌,在讼棍的骂名中破产。SCO似乎只从M$哪里学来了侵略性,却没学到M$的圆滑。

SCO的UNIX应该比Solaris更低一档,因为只有x86版本,而且SCO UNIX特性也更古老,但是却比Soalris更贵,SUN在90年代后期的发达很大程度上来自于从SCO手里抢来的市场。

90年代中国的邮政和银行系统普遍采用SCO的OpenServer,2000年后越来越少,中国现在的银行都是买z系列大型机都不眨一下眼睛的……

UnixWare 7.1.4
作为曾经的UNIX商标持有人(存争议),UnixWare是90年代后少数直接挂名“UNIX”的操作系统,传说中的System V Release 5核心

虽然我安装的是4核心许可证,但是默认却不安装smp模块,都手动安装,下图是CDE桌面下Unixware软件包管理器,且已经安装好了smp模块

OpenServer 6.0.0
基于System V Release 3.2,应该是SCO融合了xenix和System V后的产物,特性上明显比Unixware落后一代,不过当年邮政、银行的前置机不少是双CPU的,所以OpenServer的SMP支持还可以

OpenServer 5.0.7
vmware、virtualbox、bochs安装完成后启动都有问题,不玩了啦。sco的ftp上有vmware镜像也不能引导……搞笑么,不过我是没啥耐心了,安装没问题,引导的问题应该可以解决。

SCO UNIX
SCO OpenServer Release 5 是SCO公司于1995年推出的基于Intel CPU 的 UNIX操作系统系列软件产品, SCO OpenServer 5.0.7目前有三个版本,企业版、主机版、桌面版, 满足用户不同的网络计算与应用需求。
SCO OpenServer 5.0.7新特性包括新的硬件支持,USB 2.0集成,新增图形、网络和HBA驱动,以及更新的集成UDI支持。同时增加了对Intel Pentium 4、Intel Xeon、AMD Athlon XP 和AMD Athlon MP 的支持。另外,集成了许多广受欢迎的开放源代码库和工具,比如Samba、Mozilla、OpenSSL、OpenSLP、OpenSSH、OpenLDAP、Perl 和 Apache。同时,添加了SCO标准的在线文件系统,DocView,实现对文件系统进行本地和远程访问。

xenix和早期的System V都超级难装,不搞了。

xenix的安装盘在vmware上孬好还能引导,只是不认硬盘(连IDE都不认,应该是缺了pii4的硬盘控制器驱动),bochs上根本不能引导,不玩了,这应该就是完结篇了,明天把minix装上,以前装过一遍,应该是可以的。

UNIX在Windows和Linux的挤压下,市场份额一直在萎缩,特别是昂贵的商业UNIX,Solaris、Unixware、Openserver、IRIX或者已死,或者半死不活,唯独剩高端的AIX还算境遇不错。UNIX本身在价格无优势,性能无优势,只在稳定性和大客户惯性需求方面还有点可取之处的情况下,有必要走高端和专业化路线了。据说HP-UX要移植到x86,这个决策对么?不好说,虽然x86上的UNIX日子都不好过,但是HP可能也没办法,因为他的IA-64高端平台不像IBM Power接受程度那么广,HP-UX局限于此也很难有大的发展。

SI - 系统 - 操作系统简述 (Operating System)的相关教程结束。

《SI - 系统 - 操作系统简述 (Operating System).doc》

下载本文的Word格式文档,以方便收藏与打印。