关于BSD操作系统
2009-09-26 17:59:04 Administrator

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


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

历史
最初的 Unix 套件源自1970年代的贝尔实验室,操作系统中包含源码,这样研究人员以及大学都可以参与修改扩充。1974年,第一个伯克利的 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小惡魔正式出场,最初是 Marshall Kirk McKusick 的画作,出现在打印好的文档封面上,由 USENIX 发行。

1986 年6月,4.3BSD 发布。该版本主要是将 4.2BSD 的许多新贡献作性能上的提高,原来的 4.1BSD 沒有很好地协调。在该版本之前,BSD 的 TCP/IP 实现已经跟 BBN 的官方实现有较大差异。经过数月测试后,DARPA 认为 4.2BSD 更合适,所以在 4.3BSD 中作了保留。

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 的开发几乎同时起步,林納斯·托瓦茲曾说,当时如果有自由的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 的許可證。

伯克利的最终版本是1995年的 4.4BSD-Lite Release 2,而后 CSRG 解散,在伯克利的 BSD 开发告一段落。在这之后,几种基于 4.4BSD 的套件(比如 FreeBSD、OpenBSD 和 NetBSD)得以继续维护。
另外,由于 BSD許可證的宽容,许多其他的操作系统,不管是自由还是专属,都采用了 BSD 的代码。例如,Microsoft Windows在 TCP/IP 的实现上引入了 BSD 代码;经过重新编译,在当前 Windows 版本中,还采用了许多BSD命令行下的网络工具。

技术
BSD 开创了现代计算机的潮流。伯克利的 Unix 率先包含了库,以支持互联网协议栈(Stack)、伯克利套接字(sockets)。通过将套接字与Unix操作系统的文件描述符相整合,库用户通过计算 机网络读写数据,跟直接在磁盘上操作一样容易。AT&T 实验室最后也发布了他们的 STREAMS 库,在软件栈中引入了类似的功能,虽然结构层有所改进,但由于套接字库已经使用广泛,另外由于少了对开放套接字的轮询功能(类似于伯克利库中的 select调用),使得将软件移植到这个新的API很困难。

时至今日,BSD 仍在学术机构,乃至许多商业或自由产品的高科技实验中,继续被用作试验平台,甚至在嵌入式设备中,其使用也在增长。由于 BSD 设计出众,代码编写清晰,包括它的文档(特别是参考文档,常被称为“man pages”),使得这样的系统,几乎成了程序员眼中的乐土。

许多公司都使用 BSD 衍生出的代码,如此便可以支持他们的知识产权,许多自由软件,如 Linux、GNU 工程都遵照 GNU General Public License,与之相比,BSD 执照要更加灵活。当然这也导致人们的机器上在跑一些 BSD 软件,但自己却并不知情。有兴趣的话,可以试着找找符号 “University of California, Berkeley”,比如在产品文档内,二进制代码中的静态数据段,或者 ROM中,还有通过一些产品的用户界面看看“about”(关于)内容。

有意思的是,通过一个二进制兼容层(compatibility layer),在 BSD 操作系统上,可以运行相同构架下其他操作系统上的原程序。这比模拟器要快得多,通过这个方法,针对 Linux 的应用程序,也可以在 BSD 上全速运行。所以BSD 不仅适合作为服务器,也可作为工作站来使用,众所周知,现在针对 Linux 的商业或封闭源码软件越来越多了。管理员也可以将一些原本只用于商业UNIX 变种的专属软件,转移到 BSD,这样在保持原有功能的同时,操作系统更趋现代,可继续使用这些软件,直到有更好的替代。

结末,当前的 BSD 操作系统 变种支持各种通用标准,包括 IEEE、ANSI、ISO 以及 POSIX,同时保持了传统 BSD 的良好风范。

BSD 家族
不同的 BSD 操作系统针对不同的用途及用户,可应用于多种硬件构架。在政府机构中常能看到 BSD 的身影。虽然下面的 BSD 功能可能并非独有,但每种 BSD 在各自的领域,都逐渐具有了良好声誉,有的专注于性能,有的则以安全见长。


* FreeBSD在 BSD 家族中以易用性与高性能而著称,由于主要用作微处理器架构,如i386、AMD's 64-bit i386 扩展(AMD64),所以 FreeBSD 非常关注眾多处理器。FreeBSD在 x86 和 AMD64 服务器上,运行得非常好,当然它也可以在其他硬件构架上运行。

* NetBSD 拥有出色的可移植性,能在多达54种平台上运行,小到嵌入式的掌上设备,大到服务器群,NetBSD 甚至还在国际空间站中服务。

* OpenBSD 在密码学和安全方面特别出众,可移植性也很好,但是略逊于 NetBSD。安全功能如 OpenSSH,是由 OpenBSD 率先开创的。以 OpenBSD 作为嚴格與高度安全的机器运行,普遍的受到好评。

* DragonflyBSD 是一个由 FreeBSD 4-STABLE 分支出来的项目,重点在于轻量级而高效能的线程、多处理支持以及其它用户工具、第三方软件管理系统的改进。它同时是最年轻的 BSD 。提供比 FreeBSD 更优秀的对称多处理机系统,并使内核直接支持SSI集群,以取得更好的计算效果。这个项目在此方向上,才开始数年,主要关注 x86 平台。

* Darwin是苹果公司的项目、Mac OS X的基础,很大程度上使用 FreeBSD 的代码和工具。

* FreeSBIE 项目提供 FreeBSD各个发行版本的 live CD,类似于基于Linux的Knoppix项目。

* Frenzy 是另一个基于 FreeBSD 的 live CD 项目,主要针对俄语用户。启动中按“e”才是英文版界面。

* BSDeviant 是一个 FreeBSD 的 live CD 项目,目的在于产生可以存在一张迷你CD-R上的系统。

* PicoBSD 為了在單張 1.44MB磁片 執行而設計的 FreeBSD 精簡版本。

* m0n0wall 是一个基于 FreeBSD 的防火墙项目。

* FreeNAS 是一個基於 FreeBSD 的 NAS 輕量級伺服器。

* PC-BSD 為桌面/個人環境設計的 BSD 分支。

* relaxBSD 為桌面/個人環境設計的 BSD分支,由華人開發,注重中文環境。

* RedBSD 嵌入式的影像,使用BSD和Ruby内核。

必须注意的是,上面所罗列的,更多地是基于感性认识,并针对其开发焦点,并没有严格地比较规则。实际而言,每种具体的 BSD 都可担当许多角色任务。

结构
跟 AT&T Unix 一样,BSD 也采用单内核,这意味着内核中的设备驱动,在核心态下运行,从而作为操作系统的核心部分。BSD 的早期版本被用作组建 Sun公司的SunOS,造就了 Unix 工作站的第一波热潮。

BSD的后裔
当前衍生自BSD的Unix类操作系统:
* BSD/OS(已倒闭)
* FreeBSD
o DragonFly BSD
+ FireFlyBSD
o Freesbie(live CD版,光盘自启动版)
o DesktopBSD(采用Userland/Kernel,与FreeBSD同步)
o PC-BSD(采用Userland/Kernel,与FreeBSD同步)
o PicoBSD
o TrustedBSD -(非操作系统,而是为FreeBSD和Darwin构件扩展的一个项目)
o ClosedBSD
o pfSense
o m0n0wall
o FreeNAS
* NetBSD
o OpenBSD
+ ekkoBSD(已倒闭)
+ MicroBSD
+ MirOS BSD
* NeXTSTEP
o OpenStep(已被Mac OS X和Mac OS X Server取代)
* Darwin(Mac OS X的核心, 由FreeBSD 4.5和NeXTSTEP混合派生)
o Mac OS X
* HPBSD(已倒闭)

关于FreeBSD
FreeBSD 是什么?
FreeBSD 是一种先进的操作系统,它支持 x86 兼容(包括 Pentium 和 Athlon)、amd64 兼容(包括 Opteron、Athlon64 和 EM64T)、 ARM、IA-64、PC-98以及 UltraSPARC 架构的计算机。FreeBSD 源于 BSD ──美国加州大学伯克利分校开发 UNIX 版本它由来自世界各地的志愿者开发和维护。 FreeBSD 为不同架构的计算机系统提供了不同程度的支持。

先进特性
FreeBSD 提供了网络、性能、安全以及兼容性等多方面的先进特性,这些特性即使是在当今最优秀的商业操作系统中亦有所欠缺。

强大的互联网解决方案
FreeBSD 是理想的 Internet 和 Intranet 服务器。即使是在超重负载下,它仍然能够有效地使用内存,为同时运行的数以千计的用户进程提供良好的响应时间。

能够运行大量可供选择的应用
FreeBSD 的卓越品质,配合当今廉价而高速的 PC 硬件,使FreeBSD 成为经济地代替商业 UNIX 工作站的绝佳系统。另外,FreeBSD 还集成了大量的桌面 和服务器应用程序,使它能够很好的满足您的各种需要。

易于安装
FreeBSD 能通过多种介质进行安装,包括普通光盘、DVD 光盘、软盘、磁带以及 MS-DOS分区等,如果您拥有网络连接,您甚至可以直接通过匿名 FTP,或者 NFS 服务器安装 FreeBSD。您只需按照我们为您准备的安装指导操作就可以了。

FreeBSD 是 free 的
您或许认为如此优秀的操作系统必定需要花费大笔金钱来购买,而 FreeBSD 却从发行版本到它的全部源代码都免费提供!您可以购买或下载一份来体验一下 FreeBSD 所能带给您的惊喜。

帮助 FreeBSD
帮助FreeBSD 并不是一件困难的事情。您需要做的,就是找出 FreeBSD 需要改进的地方,并将您 (经过精心编写和整理过) 的改进通过 send-pr 发回 FreeBSD 计划,或者直接把它们转交给您认识的 FreeBSD committer。我们欢迎包括从文档到艺术作品,乃至源代码在内的任何改进。此外,您还可以通过帮助 FreeBSD这篇文章了解更多的信息。

即使您不是开发人员,也仍然可以通过其他途径帮助 FreeBSD。FreeBSD 基金会是一个非赢利性组织,对其捐款是完全课税减免的。要了解更多有关 FreeBSD 基金会的信息,请和 board@FreeBSDFoundation.org 联系,或致信: The FreeBSD Foundation, 7321 Brockway Dr. Boulder, CO 80303, USA.

关于FreeBSD 技术上的先进性
FreeBSD 提供了许多先进特性。
无论运行何种应用, 您总会希望系统资源发挥其最大潜能。FreeBSD 的先进特性,能够帮助您达成这一目的。

基于 4.4BSD 的完整操作系统。
FreeBSD 的高贵根基,派生于来自加州大学伯克利分校计算机系统研究小组最新的 BSD 软件版本。 因此, 由 4.4BSD 系统架构师们撰写的 The Design and Implementation of 4.4BSD Operating System (4.4BSD 操作系统的设计与实现) 也详细地介绍了 FreeBSD 的大部分核心功能。

来自全球各地的富有经验和开发技能的志愿者的长期努力,使得 FreeBSD Project 得以在许多方面拓展 4.4BSD 操作系统的能力, 并不断使这一操作系统的每一个新版本更为稳定、性能更好,并提供用户所需的各种新功能。

FreeBSD 不仅提供了更好的性能,也提供了更好的与其它操作系统的兼容性,于此同时,其所需要的人工管理和干预却比其他操作系统更少。

FreeBSD 的开发人员解决了许多操作系统设计上的疑难问题, 能够为您提供许多先进特性:
* 与虚拟内存整合的文件系统快取缓存能够持续地调整用于程序和磁盘快取缓存的内存量。其结果是,不仅为应用程序提供了良好的内存管理,也提供了更高的磁盘访问性能,并将系统管理员从调整快取缓存尺寸的工作中解放出来。

* 兼容性模块 使得其他操作系统的应用程序能够在 FreeBSD 上正确运行,目前已经能够兼容为 Linux、 SCO UNIX,以及 System V Release 4 所编译的二进制形式的程序。

* Soft Updates 在不牺牲安全性和可靠性的情况下,大大改善了文件系统性能。它能够分析文件系统的元数据操作,并避免以同步方式执行全部操作。它维护关于元数据操作的一组内部状态,并利用这些信息对元数据进行缓存,并通过重新组织元数据操作的方法,来合并对同一文件的后续操作,并重新排列元数据操作,以便使其更为有效地进行处理。 包括后台文件系统检查,以及文件系统快照等在内的一系列功能,均是在 soft updates 所提供的一致性和性能基础之上完成的。

* 文件系统快照,使得管理员能够获得文件系统的原子快照,并利用文件系统中的剩余空间来实现备份以及 后台 fsck,使系统立即进入多用户模式,而无需等待突然断电之后所需的文件系统清理操作。

* 支持安全 IP (IPsec) 为网络提供了更好的安全性,并支持下一代 Internet 协议,IPv6。FreeBSD 的 IPsec 实现同时还支持许多硬件加密加速设备。

* 直接可用的 IPv6 支持 来自 KAME 的 IPv6 协议栈,使得 FreeBSD 得以无缝地接入下一代网络环境。FreeBSD 甚至还附带了许多支持 IPv6 的应用程序!

* 多线程的 SMP 架构 能够在多个处理器上并行地运行内核,配合抢占式内核,使得高优先级的内核任务能够抢占其他内核动作,从而缩短响应时间。这包括了多线程的网络协议栈以及多线程的虚拟内存子系统。从 FreeBSD 6.x 开始,完全并行执行的VFS,使得 UFS 文件系统能够同时在多个处理器上执行,从而使得 CPU-密集的 I/O 优化所造成的负荷得以分担。

* 通过 pthread 接口提供的 M:N 应用程序线程支持 使得线程能够以具有强适应性的方式在多个 CPU 上执行,并将许多用户线程映射为少量 内核调度实体(KSE)。通过采用 调度器激活(Scheduler Activation) 模型,线程支持能够适应更多应用程序的需要。

* Netgraph 可插入式网络协议栈,使开发人员能够很容易地通过清晰的网络层次抽象来动态扩展网络协议栈。Netgraph 节点能够实现各式各样的新网络服务,包括封装、隧道、加密,以及性能适配。其结果是,能够轻易地迅速完成原形构建,以及产品级的部署,也减少了引入新问题的机会。

* 可扩展的内核安全 TrustedBSD MAC 框架,能够使开发人员为特定的环境定制操作系统的安全模型,无论是建立强化的安全策略,还是部署完整性策略的强制性机密标签。示范的安全策略包括多级别安全 (MLS),以及 Biba 完整性保护。第三方模块包括 SEBSD,一种基于 FLASK 实现的 Type Enforcement。

* GEOM 可插入式存储层,使您能够迅速开发并将新的存储服务完全集成进 FreeBSD 存储系统。 GEOM 提供了一致和连贯的模型,用于发现和堆叠存储服务,从而使层次式服务,如 RAID 和卷管理更为容易。

* FreeBSD 基于 GEOM 的磁盘加密 (GBDE),通过 GEOM 框架提供了强加密保护,并能用于保护文件系统、交换区设备,以及其他保存在存储介质上的数据。

* 内核队列(Kernel Queues, kqueue) 使得应用程序能够更为高效地响应各种异步事件,包括文件和 socket IO,从而改善应用程序和系统性能。

* 数据接收过滤器 (Accept Filters) 使得类似 web 服务器这样的连接密集型应用,能够将它们的部分功能,完全放入操作系统内核进行,从而改善性能。

FreeBSD 提供了一系列用于保护网络和服务器的安全功能。
FreeBSD 的开发人员在关注性能和稳定性的同时,也同样非常关注安全。FreeBSD 包含了内核级的状态式 IP 防火墙,以及许多其他服务,如 IP 代理网关、访问控制表、强制式访问控制、基于 jail 的虚拟主机,以及加密保护的存储。这些功能可以用于支持高度安全地为不同的不受信客户或消费者提供托管服务,为网络进行可靠的分区,以及建立安全的信息净化和信息流传递途径。

FreeBSD 也包含了对于加密软件、安全 shell (SSH)、Kerberos 认证、通过 jail 建立 "虚拟服务器"、 通过 chroot 服务限制应用程序访问文件系统的能力,安全 RPC 机制,以及为支持 TCP wrapper 的服务建立访问控制表等多种能力。

关于OpenBSD
OpenBSD 致力于开发一个自由,基于 4.4BSD 的多平台,与 UNIX 兼容的操作系统。我们重点致力于可移植性,标准化,正确性,前瞻的安全性和完整的加密技术。OpenBSD 支持 SVR4(Solaris),FreeBSD,Linux,BSD/OS,SunOS 和 HP-UX 下大多数程序的二进制仿真运行。

我们提供密码系统
简单的说: 因为我们有这个能力。OpenBSD 项目基地设在加拿大。加拿大出口控制列表没有对密码学软件的出口设置特别的限制性条款,甚至明文规定允许自由出口自由的密码学软件。Marc Plumb 已经做了一些研究来验证相关的法律。

因此,OpenBSD 项目把密码学技术嵌入了操作系统的很多地方。我们要求所使用的加密软件可以免费获取并拥有良好版权许可。我们不会直接使用那些带有令人厌恶的专利权的加密 软件。我们还要求这些软件是从有出口许可的国家输出的,因为我们并不想违反任何国家的法律。我们当前使用的密码学软件组件来自阿根廷,澳大利亚,加拿大,德国,希腊, 挪威和瑞士。

当我们制作 OpenBSD 发行版本和快照版本的时候,我们在允许自由输出的国家来完成,以保证我们提供的源码和二进制代码可以被用户自由使用。在过去,我们提供的编译好的版本是在加拿大,瑞士和德国完成的。

OpenBSD 包含了 Kerberos V。其基本代码来自瑞士的可以出口的 Heimdal 版本。我们的 X11 源码也已经扩展到可以使用 Kerberos 验证机制了VPNC TEST PARTNER OpenBSD 是第一个带 IPsec 栈的操作系统。我们从1997年发行的 OpenBSD 2.1 版本就开始带 IPsec。我们完全内嵌在内核里面的 IPsec 栈,加上可基于多种卡的硬件加速,以及我们自由的 ISAKMP 守护进程, 被用于 VPNC 中的一些 IPsec 兼容性测试主机。

今天,密码学技术成为了增强操作系统安全性的一个重要手段。OpenBSD 中对密码学技术的利用可以分为以下几个方面。

OpenSSH
从版本 2.6 开始,OpenBSD 包含 OpenSSH,一个完全自由免费,没有任何专利权限制的 ssh 实现。 OpenSSH 除了兼容 ssh 版本 1 之外还增加了很多新特性:
* 所有受限制的组件(也就是专利权,参见 ssl(8)) 都已被直接从源码中去除掉;任何有版权或者专利权的软件用外部函数库的形式提供。
* 已经更新到支持 ssh 协议 2。
* 增加对 Kerberos 验证和票据传递的支持
* 支持使用 skey(1) 进行一次性密码验证。
粗略的说,我们发行的是 OpenBSD 自由的兼容版 ssh。大约过了一年后,我们把 OpenSSH 扩展至支持 SSH 2 协议,从而 OpenSSH 就可以支持所有主要的 3 个 SSH 协议: 1.3,1.5 和 2.0。

伪随机数生成器
伪随机数生成器(PRNG)为应用程序提供数字流,并且为系统安全提供了重要的特性:
* 对外界来说,即使知道上次的输出,也不可能推测出随机数生成器下次的输出。
* 产生的数字不应该有重复模式,这意味着 PRNG 应该有很长的周期。

PRNG 通常只是算法,相同的初始值将产生同样的输出序列。在一个多用户操作系统上,有很多来源为 PRNG 产生种子。 OpenBSD 内核使用鼠标中断时间,网络数据中断延时,键盘按键间隔时间,和磁盘 IO 信息来填充熵池。内核例程可以读取随机数,而且也通过设备输出到了用户空间程序。到目前为止,随机数用于如下场合:
* Dynamic sin_port allocation in bind(2).
* PIDs of processes.
* IP datagram IDs.
* RPC transaction IDs (XID).
* NFS RPC transaction IDs (XID).
* DNS Query-IDs.
* Inode generation numbers, see getfh(2) and fsirand(8).
* Timing perturbance in traceroute(8).
* Stronger temporary names for mktemp(3) and mkstemp(3)
* Randomness added to the TCP ISS value for protection against spoofing attacks.
* random padding in IPsec esp_old packets.
* To generate salts for the various password algorithms.
* For generating fake S/Key challenges.
* In isakmpd(8) to provide liveness proof of key exchanges.

密码学散列函数
散列函数在接收输入的数据后,将其压缩到一个恒定的大小。对散列函数来说,不可能出现以下情况:
* 两个输入产生同样的输出(抵抗冲突)。
* 对于一个给定的输入,找到一个不同的输入得到了相同的输出(抵抗前象)。

在 OpenBSD 中,MD5,SHA1,和 RIPEMD-160 用于散列函数,举例来说:
* In S/Key(1) to provide one time passwords.
* In IPsec(4) and isakmpd(8) to authenticate the data origin of packets and to ensure packet integrity.
* For FreeBSD-style MD5 passwords (not enabled by default), see passwd.conf(5)
* In libssl for digital signing of messages.

密码学变换
密码学变换被用于数据的加密和解密。通常是一个加密密钥用于数据加密,一个解密密钥用作数据的解密。一个密码学变换的安全性取决于密钥自身。OpenBSD 提供了 DES, 3DES, Blowfish 和 Cast 用于内核与用户空间的程序,它们用于许多场合,例如:
* In libc for creating Blowfish passwords. See also the USENIX paper on this topic.
* In IPsec(4) to provide confidentiality for the network layer.
* In isakmpd(8) to protect the exchanges where IPsec key material is negotiated.
* In AFS to protect the messages passing over the network, providing confidentiality of remote filesystem access.
* In libssl to let applications communicate over the de-facto standard cryptographically secure SSL protocol.

关于NetBSD
NetBSD是一个免费的,具有高度移植性的 UNIX-like 操作系统,是现行可移植平台最多的操作系统,可以在许多平台上执行,从 64bit alpha 服务器到手持设备和嵌入式设备。NetBSD计划的口号是:"Of course it runs NetBSD"。它设计简洁,代码规范,拥有众多先进特性,使得它在业界和学术界广受好评。由于简洁的设计和先进的特征,使得它在生产和研究方面,都有卓越的表现,而且它也有受使用者支持的完整的源代码。许多程序都可以很容易地通过NetBSD Packages Collection获得。

特色
NetBSD 应用在广大的硬件平台范围而且是非常易于移植的,可能是世界上最容易移植的操作系统。NetBSD 核心和应用程序的完整原始码在所支持的平台上,都是有效的,NetBSD 的基本特色有:
可移植性(超过 20 种平台被支持)
程序代码的品质与正确度高
稳定性
研究与革新

上述的特性也带来了间接的优势。举例来说,如果你只在单一平台上工作, 你可能认为你的兴趣并不在可移植性方面,但是可移植性早已是程序代码的品质特性之一:没有良好的撰写和组织的基础,要同时支持许多平台是不可能的,而且高品质的程序代码是任何完善且稳定的软件系统的基础,不用担心只有少数人能理解它。由于着重于架构性与品质性的问题,这有助于增进 NetBSD 程序代码的潜力和驱动程序的品质。

经由区分这些 NetBSD 特性的差异,我们可得知它是无法满足于只在某些方 面能得以实行的情况。某些系统似乎有着如此的设计哲学"如果它能运作,它便是良好的 "。而就 NetBSD 方面来说,它可以描写成"除非它是对的,不然它将无法工作"。想想看,有多少重量级和"有特色" 的程序在今日早已被伤心地丢弃了;所以你将了解为什么 NetBSD 要避免 这种浪费成本的情形发生。

目标使用者
在 NetBSD 网站上有着如此叙述:" NetBSD 项目提供了一个可以免费自由散布的系统,不论是专家,玩家和研究者都可以随心所欲的使用它 "。我要补充的是如果你想要学习 Unix,NetBSD 是一个蛮理想的系统,主要是因为它所坚持的标准(此项目的目标之一)以及在有专有作 业系统的硬件平台上,能执行得和它们一样好;我们可以说"想要学习和使用 Unix,你不需要购买昂贵的硬件:你可以再利用在你仓库里堆放 的老旧 PC 或 Mac"。当然,如果你需要在种种不同的平台上执行,NetBSD 可能是你最佳的(唯一的)选择。

哲学
与同时代的很多操作系统不同的是, NetBSD安装程序充分体现了占用空间小的特性,它坚持生产出一个稳定的完整的不冗余的基系统。在执行安装后你得到的是一个完整的可运行系统,但是还缺少很多应用程序,比如举例说,浏览器(NetBSD与其它的操作系统相反,不将浏览器作为一系统的一个组成部分):你有决定安装什么样的程序在你的机器上的自由,包安装的方式也使得你安装新的程序非常地便捷。

这种途径的另一个优势就是基系统的运行可以独立与这些附加的包;如果你想升级你的Perl的版本,你根本没必要去担心这样会破坏你系统的一些其他部分。当你安装NetBSD时,你不会发现有巨大的应用程序的预打包:你现在可能认为这是个缺点,但是如果你开始理解了在这个现象之后的理念你就会感到这样提供给你很大的自由度。当你安装这些软件集合时(其他认为你设计好的) 你会发现你的硬盘里存储了大量的程序,但这些中的大部分你都不会用到(甚至根本不知道它是什么),这只能浪费空间(或许使你的系统稳定性减弱):这些可是典型的BSD用户所不希望的。

即使你开始了解NetBSD,还总是会有一些东西使你感到迷惑,极端一致性,系统的逻辑结构以及对细节的关注:什么事情都不会发生的很偶然,任何事情都在预料之中。是的,这就是质量,在我看来,这就是NetBSD与其他操作系统特性上的最大差别。

我们可以花上数天去争论操作系统相对的优点(有些人就喜欢这么做),但是如果你不去认真的尝试你就不能做出真正的判断。我深信我的观点,因为我在我的邮件列表当中看到很多次:如果你尝试着使用NetBSD,你就会被它在复杂性与高效性之间的完美的平衡所征服;所有的问题都有不止一种解决方案:NetBSD不会满足于寻求“一种”解决方案,而总是尽力去发掘最简便,最一流的方法。NetBSD是一种能使你用你自己的方式去做你的工作的工具。在这个意义上他就是一个可供选择的工具;就像用钢笔一样:你努力的去学如何去用他,但一旦你学会了你就可以忘记所有与这钢笔有关的事情,去尽情的写尽情的画。


关于OpenBSD与NetBSD的一些对比

OpenBSD在安全体系结构方面做得更多,比如编译器支持防止缓冲区溢出,地址随机化,这样攻击者就无法预测任何东西,严格的内存保护,因此可写内存是不可执行的,这种机制会使开发人员更难窥探信息和无法利用任何漏洞。这也使得运行不安全的软件更加安全。

OpenBSD也是第一个引入许多新技术的公司,特别是在实用密码领域,例如更强的密码哈希(bcrypt)、交换加密等。不会影响任何漏洞利用率的东西(这并不是一个安全指标,如果一个人没有发现一个bug,也许他只是不够努力),但对于实际的安全性有很大帮助。在实际的安全部分,可以看到广泛的特权分离,经典的chrooting,因为如果发生了坏事情,会使它变得不那么糟糕。

通常来看,NetBSD绝不缺乏安全性,但其核心项目目标并未明确提及安全性:
提供设计良好、稳定、快速的BSD系统,
避免许可证麻烦,
提供可移植系统,可在多种硬件平台上运行,
与其他系统良好的互操作性,
尽可能符合开放系统标准。

NetBSD和OpenBSD是非常相似的内核和共享。内核具有几乎完全相同的体系结构,并且共享许多相同的特性。两者之间的项目目标是不同的,NetBSD试图与不同的处理器架构兼容。所有的*BSD的首要目标是非常安全,这也意味着很少有功能。


该文章最后由 阿炯 于 2020-09-08 11:36:14 更新,目前是第 3 版。