Linux 认证
Linux 成功的因素之一是其对标准的遵守。Unix-like 操作系统最早的标准之一是 POSIX.1 (IEC/ISO 9945-1:1990 或 IEEE Std. 1003.1-1990),它规定了系统服务、接口和系统限制。自推出以来,它已被所有主要的 Unix 供应商采用。来自 X/Open(一个计算机供应商组织)的更高级别标准,如 XPG4,与 POSIX.1 向上兼容。最后,一旦操作系统被标记为 Single Unix(或 Spec 1170),它就可以正式命名为 Unix (TM)(该名称由 X/Open 控制)。
幸运的是,Linux 的设计目标是 POSIX.1,因此几乎所有必要的功能从一开始就已实现;然而,它需要测试。
我们在 Unifix 的首要目标是美国国家标准与技术研究院 (NIST) 制定的联邦信息处理标准 (FIPS) 151-2,NIST 是美国政府机构。FIPS 151-2 要求 POSIX.1 中一些可选的功能;因此,FIPS 151-2 包含 POSIX.1 及更多内容。我们计划为 Intel 平台上的 Linux 获得认证。
尽管 ANSI-C (ISO/IEC 9899:1990) 通常与编程语言相关联,但它是 FIPS 151-2 的必备条件,也是首先要满足的标准。来自 Unifix 的 Rüdiger Helsch 开始清理头文件(命名空间污染问题)并修复数学库,以确保完全符合 ANSI-C 标准。测试是使用我们自己的工具完成的。
1995 年秋季,我们从 NIST 获得了 FIPS 151-2 的测试套件。测试程序在 IEEE Std 1003.3-1991 和 2003.3-1992 中定义。在编译测试程序时发现了最初的差异。在稍后阶段,生成的报告显示了测试失败的地方。在接下来的几个月中,我们进行了大量的内核、libc 和测试程序重新编译(超过 80 次内核编译)。不要尝试在 4MB 内存的 386 SX 上这样做!大多数修复必须在 exit.c 和 termios 包中完成。在我们的系统中进行了大约 250 次修复,并在测试程序中进行了两次修复后,NIST 的 bin/verify 报告不再有不合规行为。那时我们感到有些自豪,但还没有完成。Rüdiger 编写了强制性的 POSIX 合规性文档,其中规定了所有系统限制和特性。提示:有一种简单的方法可以检查 POSIX.1 合规性;没有这些文档的系统永远不合规。
Unifix 位于德国的 Braunschweig,而我们的独立测试实验室位于美国。因此,我们必须转移我们修改后的 Linux 以及设置测试 PC 的说明,以重现我们的测试结果。实验室进行了全新的测试,并在此后负责合规性。他们不允许使用任何预先运行的测试结果,因此一切都必须从头开始。经过一些长途电话,所有配置不匹配都已解决(最后一个问题是合适的串行环回电缆),并且测试成功运行。那时,我们以 Linux-FT 的名称以及我们新成立的公司 Open Linux Ltd.(X/Open 成员)注册了该产品。
为了确认一切顺利,我们发送了一封电子邮件到 POSIX@nist.gov,主题为 send 151-2reg。邮件机器人返回了一个包含所有认证产品的列表,其中之一就是我们的系统。
这值得吗?为了达到这一点,我们投入了大量的金钱和精力。我们在英国的合作伙伴 Lasermoon 在财务和后勤方面为我们提供了支持。我们确信,通过认证过程,我们获得了更高的稳定性和可移植性。信号处理得到了显著改进。源代码中散布的许多小缺陷和瑕疵都已修复。应用程序中大多数丑陋的 #ifdef linux hack 正在消失。对于应用程序开发人员和移植人员来说,这些优势是显而易见的。Linux-FT 现已可用,并包含所有源代码(由 GPL 保证)。
Heiko Eifeldt (heiko@unifix.de) 在德国 Braunschweig 的 Unifix GmbH 工作。