与任何其他的 UNIX 派生系统相比,由于 NetBSD 的巧妙设计决策和对可移植代码的不懈追求,使得它可以运行于更多种类的硬件平台之上。无论正在将操作系统移植到专用的嵌入式系统,或者正在寻找具有稳定性和跨实验室硬件平台的兼容性的系统,相对于 Linux 和 GNU 公共许可 (GPL) 而言,NetBSD 及其开放许可都是一种颇具吸引力的选择。
NetBSD Web 站点上列出的一个特性是,该操作系统根本不用做广告。不做广告没有关系,但针对该操作系统中一些常常被忽视的方面给出相应的描述,当然也没有什么坏处。
NetBSD 具有一种重要的体系结构,这种体系结构得到了广泛的认可,并且很少在 Berkeley Software Distribution (BSD) 领域之外被谈及。该系统经过构思良好的设计,这提供了广泛的硬件支持、占用空间小、可靠性和安全性等特性。NetBSD 的独一无二的特性包括用于处理设备驱动程序的新的范例和其他重要的创新。
这些设计决策和对源代码的不懈追求(它不仅能够工作,并且能够正确地工作)帮助 NetBSD 成为了现有的、最具可移植性的 UNIX® 派生系统。它特别适合于嵌入式系统,但是您也应该考虑将其作为更多的主流服务器、台式计算机和便携式计算机的操作系统。
三种可免费获得的、主要的 BSD 派生操作系统分别是:NetBSD、FreeBSD 和 OpenBSD。所有这三种系统都与原始的 BSD UNIX 分发版有关,而 BSD UNIX 则可以追溯到 20 世纪 70 年代。在 20 世纪 90 年代早期,几乎同时出现了 Linux®,它成为 UNIX 真正的竞争者,并形成了创建免费的基于 BSD 的类 UNIX 操作系统的不同路线。所有这三种 BSD 版本都具有自己的长处,FreeBSD 拥有最广泛的用户基础,OpenBSD 则在安全性方面占优势,而 NetBSD 以可移植性著称。
您可以将 NetBSD 移植到几乎所有具有处理器的计算机上,所以就有了这样的格言,“它当然可以运行于 NetBSD”。NetBSD 支持 50 多种平台,从旧式的 68K 和每秒百万条指令 (MIPS) 系统,到来自 Advanced Micro Devices, Inc. (AMD) 和 Intel® 的最新 x86_64 处理器。而且可能更重要的是,对 NetBSD 进行了相应的移植,使其可用于各种各样的嵌入式系统。
在 21 世纪的日常生活中,嵌入式系统扮演了重要的角色,其销售数量远远超过了传统的计算设备,如台式计算机、便携式计算机和服务器。从移动电话到汽车,再到有线电视盒,在生活中的各个方面都更有可能使用到计算机。通常,这些设备中的操作系统和软件与设计过程中传统的工程决策一样重要。
NetBSD 嵌入式系统的示例也很多,从有用的设备(路由器和交换机)到不同寻常的设备(NetBSD 烤面包机)。嵌入式系统中常用的体系结构的种类要远远超过传统计算机的选择,所以可移植性是至关重要的。
NetBSD 的占用空间小、易于移植和 BSD 许可都使得它成为嵌入式系统的最佳选择。占用空间小是非常重要的,因为大多数嵌入式系统仅具有很小的内存容量。因此,操作系统必须尽可能占用少的空间。易于移植可以显著地减少将新产品推向市场的开发时间,这是在竞争中保持领先优势的关键。BSD 许可允许各个公司基于 NetBSD 构建自己的商业产品,并在保持源代码专有的同时,销售其商业产品以获得利润。
当一个组织为其商业产品选择 NetBSD(或其他的 BSD 变种)而不是 Linux 时,BSD 许可是公司决策制定过程中的一个非常重要的因素。Linux 内核和大多数 Linux 软件的发行都符合通用公共许可 (GPL),该许可需要发行所有经过修改的源代码。与此相反,BSD 许可允许公司修改并销售 NetBSD 代码,而无需发行经过修改的源代码,从而允许公司在利用开放源码的软件作为其产品基础时,最大限度地保护其知识产权。
近些年来,大量的公司因为不恰当地使用 GPL 软件而受到控告。选择符合 BSD 许可而发行的软件,为商业产品提供了更大的操作空间,这是 NetBSD 适合于嵌入式系统的另一个原因。例如,如果公司 A 打算在运行 Intel XScale® 技术的新型智能电话中使用 NetBSD,那么该公司可以为 Evolution-Data Optimized (EV-DO) 设备添加内核支持。在 BSD 许可下,该公司可以保持其代码的所有权,所以公司 B 将无法在其新的电话中使用相同的代码。如果公司 A 决定使用 Linux 内核,那么在 GPL 许可下,他们必须发布对内核进行的任何修改的源代码。
注意:要查找关于构建小型 NetBSD 内核作为嵌入式系统的起点的信息,可参阅参考资料部分中的 BSD 新闻稿。
任何具有一定工作经验的系统管理员都明白,硬件的更改是不可避免的。您经常可以看到这样的信息技术 (IT) 体系结构,它们曾经风靡一时,但却没能经受住时间的考验,这可能是出于技术的或商业的原因。遗憾的是,当许多这样的系统消失时,其中的操作系统也随之消失。运行具有高度可移植性的操作系统(如 NetBSD)的重要优点是跨平台的一致性。如果系统管理员可以确信,某种操作系统可以成功地运行于实验室中最旧的工作站和最新式的服务器,那么管理员的工作将变得更加简单。这种简化过程可以称为通过同种软件实现硬件的兼容性。通过在两个平台上使用 Microsoft Office 程序,可以在运行 Microsoft® Windows® 和 Mac OS X 的计算机之间共享效率文档,这就是一个类似的示例。在操作系统级别上进行共享,是相同概念的高级扩展,它适合于开发人员而不是普通用户。
有些系统管理员可能会争辩说,他们一直并将始终使用 x86 平台。所以,他们为什么应该对具有移植性的操作系统感兴趣呢?这里有两个答案(其中一个包含了相应的问题):
如果意识到不需要将软件和控制系统移植到新的操作系统是实实在在的优点,则可以节省投资并获得内心的宁静。通过这些优点,系统管理员和程序员可以重点关注更深入的问题,而不是仅关注如何与新的操作系统保持一致。
NetBSD 内核的每个部分都经过仔细的分析,并充分考虑到了灵巧的设计和可移植性。下面简要地介绍 NetBSD 内核中的一些设计要素。
NetBSD 的与计算机无关的驱动程序框架是一种处理设备驱动程序的独特方法,并且是简单而快速的移植的关键。在大多数操作系统中,设备驱动程序特定于相应的硬件(显卡、网卡 (NIC),等等)、总线(如互连外围设备 (PCI)、工业标准体系结构 (ISA)、通用串行总线 (USB))和平台(i386、68k、PowerPC®,等等)。在 NetBSD 中,编写设备驱动程序的目标是跨多总线和多平台,从而允许开发人员可以通过包含附加设备驱动程序代码来为新的设置添加兼容性,而不用重新编写全新的驱动程序。与传统的操作系统设备驱动程序范例相比,这是一个巨大的改变,它可以帮助操作系统开发人员、系统管理员和组件供应商克服最大的障碍。
NetBSD 鼓励可移植性和互操作性,它包括对许多不同的文件系统的支持。Berkeley 快速文件系统 (FFS) 是缺省选择,它支持 32 位和 64 位的配置。NetBSD 支持的其他主要文件系统包括 Linux ext2、Windows NTFS 和 FAT32 文件系统。它还通过 Rockridge 和 Joliet 扩展支持标准的 CD 文件系统、国际标准组织 (ISO) 9660。
现在,便携式计算机的广泛使用以及以数字形式存储的公司和个人信息越来越多,使得灾难的发生成为可能。每隔几个月,您就会在新闻标题中读到这样的故事,包含敏感数据的计算机、硬盘丢失了,失主可能是政府实验室、信用卡公司或个人,他或她将其所有的金融信息存储在个人计算机中,其中包括他们的身份证号。实际上,帐号、密码和权限只能在遵守固定规则的操作系统环境中保护您的数据。比特数据毕竟是比特数据,可以将硬盘从一台计算机中取出并放入到另一台计算机中,这样就可以很容易地读取其中的数据,除非对数据进行了加密处理。可以通过各种方式来实现文件加密,但通常很少使用,因为这会加重系统管理员或用户的工作负担。大多数数据加密方法需要对在什么地方与什么时候对数据进行加密作出明确的决策、手动装入和卸载加密的映像,并输入相应的密码。
NetBSD 使用加密设备驱动程序 (CGD) 通过虚拟设备实现加密的文件系统。CGD 位于操作系统中的其他部分和实际磁盘之间,CGD 可以作为连接到系统的其他磁盘设备,允许对安全存储数据进行透明访问。
注意:有关如何启用 CGD 的信息,请参阅.netbsd.html#resources">参考资料部分的 NetBSD 指南。
NetBSD 对安全性非常重视,包含 CGD 仅仅是许多示例中的一个。如果说可移植性是 NetBSD 社区最重要的规则,那么安全性也非常重要。致力于编写良好的代码是极为重要的,包含代码审核和后续的检查过程。其次,如 OpenBSD,缺省安装包括最少的安装包和配置。在服务器上安装了 NetBSD 之后,系统管理员的第一件事情可能就是配置网络并启用安全 Shell (SSH),这也说明了缺省配置仅启用了很少的内容。尽管有些新用户可能认为这种方法给他们带来了一些困难,但对于任何类 UNIX 操作系统来说,学习如何控制和配置服务是非常重要的环节,并且该学习过程不会需要很长的时间。快速地阅读官方的 NetBSD 指南将有助于新用户掌握这些内容。
注意:有关 gna.org 中为 NetBSD 的新用户提供文档说明的附加链接,请参阅参考资料部分。
NetBSD 中的应用程序支持非常广泛,而且各式各样。类 UNIX 操作系统的管理员所熟悉的大多数标准软件都是在 NetBSD 中可用的、以及可以通过 NetBSD Packages Collection (pkgsrc) 轻松安装的,其中包括 5000 多个包。如果无法在 pkgsrc 中找到所需的内容,您可以通过 NetBSD 中内置的二进制模拟器来运行,模拟器中最著名的是运行于 i386 的 Linux 模拟器。
然而,NetBSD 的缺省安装所占用的空间非常小。不仅关闭了大多数的服务,而且只安装了很少的包。基础分发版中包含了内核、编译器、网络服务、XFree 和标准的 UNIX 实用工具。要安装那些在类 UNIX 操作系统中找到的包(如 MySQL 或 PostgreSQL),可以使用 pkg_add
命令提取和安装软件(从本地磁盘、CD/DVD,或通过网络)。如果您正在安装 x86 系统,那么可以使用 i386pkg-3.0.iso CD 中的 /cdrom/packages/i386/All/。通过 pkg_add
命令安装的包位于 /usr/pkg/,不会和 NetBSD 的核心组件发生冲突。
对于非本机的应用程序,NetBSD 可以透明地运行来自各种类 UNIX 操作系统的二进制代码,并且不会对性能造成很大的影响。尽管已经将大多数流行的开放源码应用程序移植到了 NetBSD,但是有些商业应用程序(如 Matlab 和 Mathematica)无法由用户团体进行移植,因为这些代码是专有的。在这种情况下,二进制模拟对于 NetBSD 用户来说非常重要。模拟过程进行了简化,因为这些二进制代码对于该系统的基础体系结构而言是本地的。不要将二进制模拟和硬件模拟的较少使用 CPU 的进程弄混,这里没有使用到后者。二进制模拟通常适合于在产品环境中运行处理器密集型应用程序。
NetBSD 细致入微的、编写良好的代码和高度的可移植性使得它成为许多部署方案的最佳选择。遗憾的是,许多开发人员和系统管理员并不十分熟悉 BSD 派生系统,从而错过了重要的机会。要进行正确的决策,最重要的是做到博识。BSD 可能是或者不是您合适的选择,但是不要仅因为您对其他的系统比较熟悉而忽视它。使用本文作为起点,让您自己去熟悉 NetBSD,然后尝试使用该分发版,至少您可以学习如何去使用它。