Linux 机器能做的最有用的工作之一就是在它上面运行其它操作系统的程序。这能极大地简化您的工作。
很多公司已经在“服务器合并”上花了数百万,希望藉此降低维护、管理甚至是散热负担。可是,他们的做法往往只是在几种不同的 UNIX 之间移来移去罢了。
然而,他们往往没有意识到,这些由 Linux 托管的 OS 仿真,有着相当大的范围和相当高的质量。其中有部分 OS,诸如 CP/M、RSX、OpenVMS 和 DOS 都是相当老的系统。此外,很多公司对于使用该软件在多大程度上提高了服务器室操作的方便性也不甚了解。
当然,说明这一点正是 服务器诊所的任务之一。去年,本专栏致力于介绍各种在 Linux 下能完美运行的自动操作(尽管它们没有被广泛地应用),诸如:Fortran 应用程序、PDF 生成、Word 文档管理、构建 Windows 可执行文件等等。 这个月,该看看 Linux 对那些使用“次要的”老式 OS 的人能有多少帮助了。
举个例子来说,假设您需要运行一些 CP/M 程序。那么究竟怎样才“需要”运行一个二十年前就很陈旧的 OS 呢?如果您在开发嵌入式系统,就很可能会有这种需要。同产品至少每年都更新的信息技术相比,一般认为,许多嵌入式系统一旦启动就会默默地自行运行数十年。
这引发了至少几个开发问题,系统顾问工程师 Rene Tschaggelar 概括为:“有鉴于嵌入式系统要运行十年到二十年甚至更长时间,人们也就必须在这段时间内为它们提供支持。”有人确实需要维护这些系统,而这通常意味着必须把一些老设备和程序收藏起来以备不时之需。
这样不仅费钱而且往往很麻烦。要弄到老式的装有 CP/M 的 S-100 机器的部件不容易。很难告诉客户,因为有人不小心弄丢了 8 吋盘上的存档(那可是 真正的软盘),因而无法兑现承诺。一个确实可供选择的替代解决办法是在 Linux 机器内建立一个虚拟 CP/M 主机。注意这不只是给您一个更易于管理和负担得起的虚拟 CPU 而已;通过在您所安装的文件系统和硬件上工作,同时也将维护实践与已有的基础结构(包括用于版本控制、归档、远程访问等的工具)统一起来。
这种情况下仿真所冒的风险在于仿真器不会忠实再现您所要求的原始硬件的行为。然而,还是有很多用户 确实报告说对现有仿真器很满意。此外,作为开放源码软件,您或者为您工作的专家大有机会按您的需要对其做任何修正。
那么,让虚拟 CP/M 工作需要些什么呢?并不多。有许多不同的仿真器可供选择。我目前喜欢用的是 Andreas Gerlich 的 YAZE 2.0。它安装和启动方便,并且在适应不常见的硬件或其它需求方面有着高度的灵活性。要使用它,只需下载它(请参阅 参考资料中的链接),解压缩并用以下命令生成即可:
make -f Makefile_linux |
然后执行:
./yaze.bin |
不久会看到如下显示:
A>dir
|
缺省的 YAZE 配置定位在一个虚拟 A:驱动器上,Gerlich 在此驱动器上提供最基本的指令:
E.COM 、
HELP.COM 和
dir 。注意执行
E.com 是离开仿真器会话的标准方式。
所以如果您一直有意重新编译一个老的设备驱动程序,或者要为某个特定客户完成承诺,因而需要运行某个“古老”的嵌入式系统开发工具箱,那就别迟疑了。不用去修理您的旧硬件。直接在现成的 Linux 主机上安装 YAZE,把工作复制到虚拟机中,然后完成您的项目。
仿真也可用于同时期的许多其它计算机,包括 C64、MP/M、CP/M-86 计算机、Sinclair 和 Apple II 系列等。
OpenVMS 形成了一个有趣的对比。OpenVMS 在其许可和技术方面与它大致同时代的其他微机 OS(如 CP/M)完全不同。OpenVMS 现在仍在销售,而且仍是一个完整、有用的产品;举例来说,OpenVMS 长期提供分布式文件系统、交叉语言互操作性以及群集,这些都领先于其他的商用 OS。
但 OpenVMS 的硬件很昂贵,而且还可能一直这样昂贵。对一个组织来说,如果只有少量用于“关键任务”的 OpenVMS 应用程序而年度维护要数万美元的话,很难证明这些开销的合理性。
于是 Linux 又有用武之地了。一个适当配置的 Linux 服务器能够仿真一台经许可的 OpenVMS 副本的硬件,和一年只用上几小时还嗡嗡叫的老古董相比,花费要少多了。这一替代方案是如此重要以至于有一个商业产品 Charon-VAX,是专门针对这种仿真而设计的。
SIMH 项目旨在对数十个老式操作系统的全系列进行这样的仿真,包括:1130、Eclipse、Altair、Interdata 16b 等等。
仿真世界中也有一点遗漏。和 OpenVMS 一样,MPE/iX 是一个“中型”OS,有着活跃的用户社区和对 Linux 仿真方面极大的兴趣。虽然为 MPE/iX 开发仿真器是可能的,但要等到某个许可的细节问题解决后,到 2004 年或 2005 年这种仿真器才可能会登场。
使用仿真器时另一事实是:它们并没有完整全面的文档记录。Web 上许多相关链接已经失效。此外,不少仿真器的作者已经“成熟”而不再需要它们,因而也不再为自己的作品提供支持。
尽管如此,对于许多操作仿真器托管有着极大的优势。有了 Linux,不用担心缺乏硬件会妨碍您运行需要的软件了。
- 您可以参阅本文在 developerWorks 全球站点上的
英文原文.
- 查看
服务器诊所(Server clinic)以前的专栏文章。
- 在 Thomas Scherrer 的
Z80 系列官方支持页面上有精心维护的 Z80 仿真器的“跳转页”。
- YAZE是一个特别精确的 Z80 仿真器,可以在 Linux 上基本实现 CP/M 3.0 的所有功能。
- Michael Haardt,YAZE 的原作者,还编写了用于访问 CP/M 文件系统的
cpmtools。
- 如果您依赖最初的 8086 级个人计算机的 VGA、软盘或 EMS,那么由 David Hedley 创建的,由 David Given 和 Michael Hope 更新的开放源码项目
pcemu可能会让您感兴趣。
- 由于 OpenVMS 是 Digital Equipment Corporation(DEC)在并购之前的一个开拓性标志;因此可以从
DEC 仿真网站开始研究在 Linux 上仿真 OpenVMS。
- CHARON-VAX是用于仿真 VAX 体系结构的一系列产品,OpenVMS 最初就出现在 VAX 上。
- VAX for Linux是 SourceForge 托管的一个开放源码项目。
- 计算机历史仿真项目(Computer History Simulation Project),简称 SIMH,涵盖了大量的体系结构。
- 按照
JOYCE 主页上所讲的,“JOYCE 在 UNIX 或 Windows 上仿真了 Amstrad PCW”。
- 服务器诊所的前几篇专栏文章介绍了怎样在 Linux 上完成某些许多程序员认为一定要在其他系统进行的工作,包括:“
服务器上的 RTF”和“
用于服务器的 PDF”。Cameron 同时在“
Fortran,在 Linux 上安家”中谈到了另一个 Linux 能很好解决的老问题。
- 那些希望使用逆向计算仿真以达到其极限的人应该看一下
C-ONE 可重新配置的计算机,它通过重新配置现场可编程门阵列(FPGA)硬件以仿真其他计算机。
- 本专栏专门介绍了仿真,当然除此之外还有其他访问老式应用程序的方法,包括在“
Bring legacy applications to the Web with a portal solution”(
developerWorks,2003 年 3 月)中介绍的有关 CICS、VT 以及相关主机老式应用程序的“portlet”解决方案。
- Linux 不仅适用于托管其他 OS,它本身也能被
托管,特别是可以在 z/VM 上托管,在一个 z/VM 大型机上可以运行多个各自独立的 Linux 实例。此
红皮书概述了 S/390 上的 Linux ,您也可以在
Linux on zSeries library找到更多相关参考资料的详细清单。
- 在
developerWorksLinux 专区中寻找更多
用于 Linux 开发人员的参考资料。
Cameron 是一名 Phaseit,Inc. 全职顾问。他经常就开放源码和其它技术主题撰写文章并发表演说。您可以通过 claird@phaseit.net与 Cameron 联系。