Xenix — 微软与UNIX的短暂爱恋
微软向外宣布Microsoft Xenix OS,一个为16位微处理器开发的可移植的操作系统。它是一个交互的,多用户多任务系统,可以运行在Intel 8086, Zilog Z8000, Motorola M68000以及DEC公司的PDP-11系统计算机上。所有微软已经开发的系统软件(Cobol,Pascal,Basic,和DBMS)都会被移植到Xenix系统上,并且所有为UNIX开发的软件都将兼容于Xenix。
以上摘自Microsoft Press Release,1980年
早在Linus Torvals能用C语言编写实际有用的程序之前,一个由微软开发的UNIX版本,叫做XENIX。它基于UNIX第7版本和BSD4.1,并添加了一些有意思的改进功能,如多个虚拟控制台,可以用Alt-F1,Alt-F2,….Alt-F10来切换,之后这一功能被Linux继承。而且极大地改善了对普通用户的友好性。而这一切在多年以后被Linus Torvarlds煞费苦心来效仿,虽然他用了不一样的代码库。
微软在1979年从AT&T公司获得了UNIX许可证。在UNIX历史上这一年很有趣:1979年6月USENIX会议在多伦多召开,AT&T将UNIX的价格提高数倍(教育机构从1000美元提高到7500美元;商业机构从5000美元提高到40000美元,每一个CPU都需要购买一个许可证,在当时一台计算机都只有一个CPU)。AT&T公司想要快速从UNIX收取最大利润,但这一做法适得其反。
比尔•盖茨很快意识到,AT&T这一举动为第三方UNIX发行商提供了一次良机。当时有传闻说,微软之所以要向AT&T公司取得UNIX许可证,有一部分原因是由于与微软合作的Digital Research公司破坏了双方之间默认的协议。Digital Research本来只应该专注于OS的开发,却使用CBasic将CP/M打包,开始涉足编译器领域。微软认为编译器是自己的生存地盘:当时微软是一个语言编译器/解释器开发公司,主要销售编译器,Microsoft Basic是当时微机的标准。同时,微软对Digital Research的态度非常友善。微软不但不侵吞Digital Research的业务,还间接地为后者营销。支持多个操作系统对语言公司来说是一个噩梦,微软是CP/M操作系统的一大支持者,将自己的客户介绍给Digital Research。所以Digital Research使用CBasic的这一行为就相当于在微软的背后插了一刀。正是在这次事件后比尔•盖茨与AT&T联系,并在1980年2月取得了UNIX的许可证。
1980年9月比尔•盖茨打电话给Kindall,告诉他,IBM想与他商谈为IBM电脑开发一个新操作系统的事情。这一行为不仅仅是出于好意。比尔•盖茨为自己的竞争者介绍生意。在微软开始XENIX这一项目六个月后,Kindall与IBM的商谈如期发生。同年,SCO公司成立了。微软将XENIX的开发外包给SCO公司。当时SCO公司由两个人同时掌管。微软将大部分的技术性工作交给SCO来完成,SCO把AT&T的代码库移植到各类微处理器。
XENIX最初是在DEC VAX(Virtual Address Extensionf)和PDP-11计算机上开发的,分别运行VMS和UNIX V7系统。然后将XENIX移植到了16位的Motorola 68000和Intel 8086微处理器上。这使得XENIX成为微机市场的高端产品。当时的主流系统还是8位的。
1979年,Doug Michels和Larry Michels共同创立了Santa Cruz Operation(SCO)。它是一个UNIX移植和咨询公司。 后来微软将所有XENIX的开发工作交给了SCO。Doug Michels回忆:公司的名字有一点“社交工程”的作用。当他跟别人打电话时,他会说:“This is Doug from the Santa Cruz Operation”。他确定对方不会意识到O是大写的,而会认为Santa Cruz Operation只一个分支机构。
1980年,UNIX已经发展为三大派别:
- AT&T贝尔实验室UNIX Support Group(USG)开发的UNIX System III
- UC Berkeley开发的BSD4.1
- 微软和SCO开发XENIX3.0
XENIX最初是UNIX Version 7在Intel 8086上的一个移植,添加了BSD的一些特点。大约一年以后,Microsoft/SCO XENIX 3.0发布。1983年SCO XENIX5.0发布,遵循UNIX System V release 0标准。在当时的1980年代早期,XENIX是安装数量最多的UNIX版本。
微软购买了SCO公司25%的股权以控制SCO。SCO执行实际的系统开发工作,而微软负责营销工作。微软将XENIX兜售为微机操作系统的未来。
1980年的一张微软季度报纸上说道:“XENIX操作系统先天的灵活性将使XENIX成为80年代计算机的标准操作系统。” 1983年的XENIX用户手册宣称:“微软发布XENIX操作系统,贝尔实验室UNIX系统的16位改进版本。我们为商业客户改进了UNIX软件,并将它移植到了16位微处理器。我们将XENIX OS移植到了DEC PDP-11, Intel 8086, Zilog Z8000和Motorola 68000。” 并向所谓的Unix-like产品发出警告。1984年微软和SCO的关系开始出现裂痕。
1981年8月12日,IBM 5150型号个人计算机改变了一切。1984年1月24日,苹果Macintosh电脑又一次改变了一切。
1980年8月,在Linus Torvarlds思索着Linux这个想法的十年前,微软发布XENIX OS。它是UNIX在16位处理器上的移植。Zilog是主要的平台。
1980年代中期,当16位处理器有足够大的磁盘空间和内存来运行UNIX的时候,人们兴奋不已。基于Motorola 68020 32位处理器的操作系统抢占了先机,因为它们与16位68000是兼容的。在当时16位68000处理器比Intel处理器有更大的内存编址空间。另外,68020支持虚拟内存。Sun Microsystem的Sun-3工作站计算机最初使用Motorola的处理器。但大多数IHV都大量投资Intel。
微软XENIX产品的第一个客户是3COM公司,1979年由Bob Metcalfe创立于Santa Clara。他想使用XENIX作为开发TCP Stack的平台。
将XENIX移植到Zilog不久,微软开始了8086的移植工作,这也是由SCO完成的。比尔•盖茨的这一做法与他的很多决定一样,十分高明。PC 286很快要面世,这为UNIX进军微机市场提供了机会。从历史的角度来看,微软的XENIX OS是有史以来第一个在个人电脑市场取得成功的UNIX,甚至在有些方面取得突破性的成就。在当时,XENIX是唯一对个人电脑友好的UNIX,并且可以认为是第一个提供良好客户服务的UNIX厂商。
微软不是直接销售XENIX给最终用户,而是将XENIX的商标权和代码库的许可证发放给SCO、Tandy、和Intel。他们贴上自己的品牌,销售给用户。与XENIX最紧密的是SCO,微软购买了SCO公司25%的股权,控制了SCO,在SCO董事会的5个席位上独占一席。所以SCO充当了两个不同的角色:
- 负责XENIX的移植工作:最终成果出售给微软,所有的知识产权也归微软。
- XENIX的经销商:从微软取得XEINX代码库的许可证,并贴上自己的品牌,即SCO XEINX。
从整体上看,PC DOS的开发与XENIX在时间上是并行的。微软在取得UNIX许可证的一年后,它又购买了86-DOS的所有权。这发生在1981年7月。
最初,微软对XENIX踌躇満志,并让DOS系统与XENIX相兼容。这对DOS有着积极地影响,DOS的第二版本和第三版本吸取了UNIX的一些创新,比如分层次的文件系统、管道、重定向等等,使DOS渐渐远离CP/M的轨道。
请注意,1981年的微软是一个年轻的、富于野心和创新的公司。下面是1982年PC杂志第三期的一段话,微软联合创始人Paul Allen说:
MS-DOS是一个操作系统家族的一部分,认识到这一点很重要。为用户提供一个操作系统家族的功能意味着MS-DOS势必要向XENIX迁移。最终用户和程序员都能体验到MS-DOS和XENIX的兼容。XENIX拥有一个标准的C语言库,程序在XENIX系统上编译后,可以同时在XENIX和MS-DOS上运行……XENIX系统有能力行使网络文件服务器的功能。
1981年有传闻说Bill Gates甚至想把XENIX销售给IBM,让XENIX成为个人电脑操作系统的标准。但是IBM担心AT&T的政策会有变故,所以IBM不想与UNIX有任何联系。之后IBM对UNIX表示欢迎,实际上在1984年IBM计划让他们的AT个人电脑装上XENIX系统,附加上终端,以提供多用户对电脑的同时访问。1986年,IBM意识到这是一个错误,随后推出AIX。AIX是最杂乱的一个UNIX版本,之后事实表明AIX也是IBM的一大失误。
上面的时间轴清晰地表明XENIX与DOS的开发大体上是同时进行的,并且它们相互影响:XENIX对DOS的设计有着重要影响。微软的MS-DOS百科全书上有一张DOS1.25 OEM的宣传手册,上面说DOS1.25在很多方面与XENIX兼容,比如管道、进程分支、多任务以及图形和指针定位。这毫无疑问地表明微软要把这两个操作系统的差别尽力缩小。尽管在事实上DOS没能成功地实现进程分支、多任务和多用户功能。微软的传单奇怪地宣称:
MS-DOS支持的磁盘容量对实际生产不会造成任何限制。MS-DOS在文件系统上使用与XENIX相兼容的4字节指针,支持4G的磁盘容量。
之后XENIX成为Intel 286个人电脑上的一个标准UNIX操作系统,被行业大量采用,包括微软自己。1982年7月微软研发的局域网(MILAN)正式投入生产运行。MILAN将很多XENIX的计算机连接起来,使Email的传递更加方便。1980年代中期在微软工作的人可以见证到公司里的每一个人,从Bill Gates到每一个秘书都可以使用XENIX,并且每天使用它来收发电子邮件。那也就意味着每一个人都要使用vi文本编辑器,并且员工要申请假期必须得使用vi文本编辑器来申请。这种情况一直持续到90年代初期。
微软公司内联网里的最后一个XENIX服务器在1996年-1997年被移除。XENIX服务器主要用作Internet网关,运行Sendmail。在内部它们也用于MSMail和Exchange之间的网关。下面是90年代早期的一则报道:
90年代早期我在微软,当时人们用OS/2来开发软件。例如NT的早期开发工作是在OS/2系统上完成的,后来交叉编译到NT。请注意,在1990年9月之前,NT就是OS/2系统的下一个版本,所以这种情况很正常。即使后来微软与IBM分道扬镳,OS/2 1.2仍然是最好的软件开发环境。
微软极力想要从OS/2过渡到NT,这在1992年成为了可能。最终越来越多的人转向了NT。在1993年7月NT的第一个版本发布后,微软公司的所有员工完成了向NT的过渡。
实际上很长一段时间我使用vi文本编辑器来写代码。微软公司里的一个人写了另一个vi版本以支持多窗口。但最终我使用了slick,就像NT团队的大多数人一样。
这说明在80年代中期微软公司的所有部门都热衷于UNIX。微软是当时的UNIX大生产商。在80年代后期,运行Microsoft XENIX计算机数量超过了其他所有UNIX计算机数量的总和。
1983年微软意识到,随着Intel 80286的出现,DOS将很快成为过去式。1984年IBM推出PC-AT。它是第一台安装Intel 80286处理器的个人电脑。微软随之加紧XENIX的开发工作。1984年8月,微软发布了一个十分引人注目的PC版UNIX:XENIX 3,也叫做XENIX286。它实现了XENIX与MS DOS的双系统功能。用户在开机时可以选择任意一个操作系统。它吸收了BSD4.1和System III的最新特点,很快成为UNIX发烧友的标配。它只要求512K的内存,10M的硬盘空间,可以运行在500美元的IBM AT个人电脑上:当时价格最低的UNIX工作站。
人们期望PC-AT支持多任务功能。IBM公布的一些照片显示有两个终端与PC-AT相连接。但XENIX主要用于个人UNIX或者服务器。包括McDonalds在内的许多零售商和快餐连锁店曾经在他们的POS终端中运行XENIX。不管怎么说,XENIX是第一个在Intel x86处理器上获得成功的多用户系统。AT&T也卖出了一些UNIX,但在质量和数量上是无法与微软相竞争的,在营销方面更是如此。下面是一个人的回忆:
1984年当我前往德国联邦海德堡的美国陆军欧洲总部工作时,看见办公室里有很多崭新的Intel 8088个人电脑,每台电脑都有10M的硬盘。我在那开始工作不久以后,我发现建筑的一处角落有几十台新的电脑设备。当我向他人询问时,他们告诉我没人知道这些是用于什么工作的。我发现这些是“网络文件服务器”,但我仍然不确定它们到底是用来做什么。我想这些肯定是大型机。 我征求了许可,打开这些箱子。
之后,我的所有空闲时间都花费在这些机器上。拆开箱子,有一本“硬件安装指南”。我尝试着将它们组装好。实际上,我翻开了整个文档,从头到尾阅读。
完成了硬件的组装后,便开始安装操作系统(Microsoft XENIX 286),然后开始学习操作系统管理,设置用户账号,学习XENIX的命令行工具。之后我才意识到这个操作系统是属于UNIX操作系统家族,用于大量的小型机,包括Sun Microsystem的工作站。我竟然在不经意间学习了UNIX!
Microsoft XENIX在AT个人电脑上大获成功。1984年财富杂志写道:“世界上的750多所提供计算机科学学位的大学拥有UNIX许可证,其中很大一部分是XENIX许可证。原因很简单,Microsoft XENIX是有史以来第一个大量销售的廉价UNIX。”
在1984年到1990年的六年间,微软是最主要的UNIX生产商。很多ISP,特别是欧洲是ISP,使用XENIX运行Usenet mail/news系统。微软XENIX的最后一个版本XENIX5.0于1996年发布。为了使XENIX与1995年发布的UNIX System V Release 2标准兼容,AT&T与微软合作开发XENIX5.0。
下面是一个人的回忆:
80年代中期到晚期,我部署安装了大量的XENIX操作系统,最后一次安装是在1989年或1990年。我们与Novell Netware networks相竞争,常常将他们打败。我们的客户是大中型企业。配置如下:
- HP Vectra 286计算机,1MB内存(!!!),60MB硬盘
- 12个RS-232C端口(用于连接终端)
- 12个TTY
- 由我们公司开发的软件
- SCO XENIX操作系统(不记得具体的版本)
我们的优势:
- 成本低
- 容易维护
- 大量用于系统维护的工具
- 投资收益率高(我们的客户)
- 我们的公司利润高
NCR *nix, XENIX,Minix和AIX3.0是我最先开始接触的UNIX。总之,我记得XENIX是我玩过的拥有最完整的UNIX环境系统之一。只有后来运行在RS/6000的AIX才具备比XENIX更加完整的UNIX环境,AIX集合了大量System V和BSD工具。
有意思的是,虽然XENIX是微软的产品,但微软却不想插手XENIX的售后服务。所有的客户关系都是由SCO来处理。Bill Gates唯一一次对XENIX发表意见,是在别人问及NT从OS/2分离后,他是否担心会输给UNIX。他回答说:“我们有DOS,Windows,OS/2,XENIX和NT。这种竞争是微软与微软竞争与微软竞争与微软竞争。”
1987年微软担心AT&T为个人电脑发布的UNIX有可能运行不了为XENIX编写的程序,所以他们向AT&T要求在AT&T UNIX中加入XENIX代码以保证兼容性。两家公司达成了一个交易:AT&T同意在AT&T UNIX中加入XENIX代码。这样,新开发的AT&T UNIX System V/386, release 3.12,融合了传统UNIX System V和XENIX的所有功能。它于1988年8月发布,运行在80386处理器上。
这一切都表明XENIX是UNIX历史上一个重要的发行版本。在某种程度上可以说是UNIX是第三大分支(其他两个是AT&T和BSD)。1988年春,AT&T和Sun Microsystems签署了一项合作开发协议,将他们各自的UNIX整合成一个新的UNIX,即System V Release 4(SVR4)。它融合了System V和BSD两者的优点,可以运行任何为System V或BSD编写的程序。Sun放弃了它的SunOS以支持这个新的SVR4。随后不久,Sun发布了与SVR4兼容的Solaris系统。尽管用户抵制强烈(Solaris第一个版本非常不稳定,但2.5版本后开始变得稳定),但他们还是将用户过渡到了Solaris。
大约在同一时间,IBM和微软开始了OS/2的开发。对于微软来说,OS/2可以让微软摆脱AT&T的天价许可证。1987年12月,OS/2 1.00发布,只有字符模式,屏幕上只能有一个程序,尽管另外一个程序可以在后台运行。最大支持32M的硬盘。OS/2的发布终结了微软的UNIX历史。