欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
BSD
BSD (Berkeley Software Distribution,伯克利软件套件)是Unix的衍生系统,1970年代由加州大学伯克利分校开创。BSD用来代表由此派生出的各种套件集合。
BSD常被当作工作站级别的Unix系统,这得归功于BSD License非常地宽松,许多1980年代成立的计算机公司,不少都从BSD中获益,比较著名的例子如DEC的Ultrix,以及Sun公司的SunOS。1990年代,BSD很大程度上被System V4.x版以及OSF/1系统所取代,但其开源版本被采用,促进了因特网的开发。
BSD历史
PDP-11开始
最初的Unix套件源自1970年代的贝尔实验室,操作系统中包含源码,这样研究人员以及大学都可以可以参与修改扩充。1974年,第一个伯克利模板:Ref的Unix系统被安装在PDP-11机器上,计算机科学系而后将其用作扩展研究。
其他大学开始对伯克利的软件感兴趣,在1977年,伯克利的研究生Bill Joy将程序整理到磁带上,作为first Berkeley Software Distribution(1BSD)发行。1BSD被作为第六版Unix系列,而不是单独的操作系统。主要程序包括Pascal编译器,以及Joy的ex行编辑器。
Second Berkeley Software Distribution(2BSD)于1978年发布,除了对1BSD中的软件进行升级,还包括了Joy写的两个新程序:vi文本编辑器(ex的可视版本),以及C Shell。这两个新添的程序,在Unix系统中至今仍被使用。
2BSD以后的版本逐渐从PDP-11结构向VAX计算机移植。最新的2.11BSD于1992年发布,更新维护一直持续到2003年。
VAX 版本
1978年,伯克利安装了第一台VAX计算机,但将Unix移植到VAX构架的UNIX/32V,并没有利用VAX虚拟内存的能力。伯克利的学生重写了32V的大部分内核,以实现虚拟内存的支持。1979年,3BSD诞生了,这个新系统完整包括了一个新内核、从2BSD移植到VAX的工具,还有32V原来的工具。
3BSD的成功使得Defense Advanced Research Projects Agency(DARPA,美国国防部高级研究规划署)决定资助伯克利的Computer Systems Research Group (CSRG,计算机系统研究组),以开发一个Unix标准平台,以供DARPA未来的研究。1980年10月,CSRG发布了4BSD,该版本对3BSD有许多改进。
相较于VAX机器的主流系统VMS,用户对BSD时有批评,1981年6月,终于发布了4.1BSD 。Bill Joy大幅度提高了4.1BSD内核的性能,可以跟VMS在多个平台上媲美。为了避免与AT&T的UNIX System V(UNIX第五版)混淆,这个版本没有取名为5BSD。
以后4.2BSD历经两年,实现了多项重大改进后才得以问世。之前有三个中间版本相继推出:4.1a引入了修改版的BBN预试中TCP/IP;4.1b引入了由Marshall Kirk McKusick实现的新型Berkeley Fast File System(FFS);4.1c是4.2BSD开发最后几个月的过渡版。
1983年8月,4.2BSD正式发布。这是1982年Bill Joy离开前去创建Sun公司后的第一个版本,此后Mike Karels和Marshall Kirk McKusick一直负责领导该项目。值得一提的是,这次BSD小惡魔正式出场,最初是McKusick的画作,出现在打印好的文档封面上,由USENIX发行。
BSD版本
1986年6月,4.3 BSD发布。该版本主要是将4.2BSD的许多新贡献作性能上的提高,原来的4.1BSD没有很好地协调。在该版本之前,BSD的TCP/IP实现已经跟BBN的官方实现有较大差异。经过数月测试后,DARPA认为4.2BSD更合适,所以在4.3BSD中作了保留。(参见en:History of the Internet)
4.3BSD后,BSD逐渐抛开老式的VAX平台。Computer Consoles有限公司开发的Power 6/32平台(代号为"Tahoe"),当时看来大有可为,但不久即被他们的开发员所遗弃。然后,1988年6月移植的4.3BSD-Tahoe却表现不俗,BSD将依赖于机器跟不依赖于机器的代码分离,为未来系统的可移植性打下了良好的基础。
到此为止,所有的BSD版本混合了专属的AT&T Unix代码,这样就继续使用就要求从AT&T获得许可证。源码许可证当时非常地昂贵,几个其他组织对单独的网络代码版感兴趣,完全独立于AT&T,这样就可不受许可证的支配。1989年6月,Networking Release 1(Net/1)诞生了,没有AT&T授权也能使用,可遵照BSD许可证进行自由再发布。
1990年初,推出了4.3BSD-Reno。该版本是4.4BSD早期开发的过渡版,使用该版本被戏称为是一种赌博,因为Reno就是内华达州的赌城雷诺。
Net/2以及法律问题
Net/1以后,Keith Bostic提议,BSD系统中应该有更多的非AT&T部分,以Net/1的协议发布。随后,他开始一个项目,着手重新实现一些Unix标准工具,其中不使用原来的AT&T代码。例如,Vi,也就是基于最初Unix上ed的编辑器,被重写为nvi(new vi)。18个月后,所有AT&T的工具被替换,剩下的只是存留在内核的一些AT&T文件。残余文件被剔除后,1991年6月,Net/2诞生了,这是一个全新的操作系统,并且可以自由发布。
Net/2成为Intel 80386构架上两种移植的主要组成,包括由William Jolitz负责,自由的386BSD;以及专属的BSD/OS,由Berkeley Software Design(BSDi)负责。386BSD本身虽然短命,但不久即成为NetBSD和FreeBSD 原始代码的基础。
BSDi很快就与AT&T的UNIX Systems Laboratories(USL)附属公司产生了法律纠纷,后者将拥有System V版权,以及Unix商标。1992年,USL正式对BSDi提起诉讼,这导致Net/2发布被中止,直到其源码能够被鉴定为符合USL的版权。
由于最后判决悬而未决,这桩法律诉讼将BSD后裔的开发,特别是自由软件,延迟了两年,这导致没有法律问题的Linux内核获得了极大的支持。Linux跟386BSD的开发几乎同时起步,Linus Torvalds曾说,当时如果有自由的Unix-like操作系统,基于386的,他就可能不会创造Linux。尽管无法预料这给以后的软件业究竟造成了什么样的影响,但有一点可以肯定,Linux更加丰富了这块土壤。
4.4BSD及其后裔
这桩诉讼在1994年1月了结,更多地满足了伯克利的利益。伯克利套件的18,000个文件中,只有3个文件要求删除,另有70个文件要求修改,并显示USL的版权说明。这项调解另外要求,USL不得对下面的4.4BSD提起诉讼,不管是用户还是伯克利代码的分发者。
1994年6月,4.4BSD以两种形式发布:可自由再发布的4.4BSD-Lite,不包含AT&T源码;另有4.4BSD-Encumbered,跟以前的版本一样,遵照AT&T License。
伯克利的最终版本是1995年的4.4BSD-Lite Release 2,而后CSRG解散,在伯克利的BSD开发告一段落。在这之后,几种基于4.4BSD的套件(比如FreeBSD、OpenBSD和NetBSD)得以继续维护。
另外,由于BSD License的宽容,许多其他的操作系统,不管是自由还是专属,都采用了BSD的代码。例如,Microsoft Windows在TCP/IP的实现上引入了BSD代码;经过重新编译,在当前Windows版本中,还采用了许多BSD命令行下的网络工具。