10. 模拟器和虚拟机

Linux 经常被批评游戏不如其他平台丰富。坦率地说,对我来说游戏已经足够多了,尽管能玩到一些最新的游戏和经典游戏,比如半条命和 Carmageddon,那真是太好了。幸运的是,我们拥有的模拟器多到数不清。虽然玩模拟游戏有时不如在原生机器上玩那么有趣,而且要让一些模拟器良好运行可能是一项艰巨的任务,但它们就在这里,而且数量很多!

10.1. 什么是虚拟机?

一台“真正的计算机”为操作系统提供许多东西,包括 CPU、I/O 通道、内存、BIOS 以提供对主板和 I/O 资源的底层访问等等。当操作系统想要写入硬盘驱动器时,它会通过设备驱动程序进行通信,该驱动程序直接与硬件设备内存接口。

然而,有可能为程序提供它所需的所有硬件资源。当它想访问硬盘驱动器时,给它一些内存来写入。当它想设置 IRQ 时,给它一些虚假的指令,让它以为自己设置了 IRQ。如果你这样做正确,那么原则上,可怜的应用程序就无法知道它是在真正访问硬件,还是被给予模拟硬件的资源所欺骗。虚拟机就是这种环境,它欺骗应用程序,让它们相信自己运行在真正的计算机上。它提供了一台真正的计算机将提供的所有服务。

虚拟机最初在 1960 年代被用于模拟分时操作系统,但现在我们使用它们来运行为外国操作系统编写的软件,或者更常见的是,整个操作系统。由于虚拟机的性质,外国操作系统无法分辨是在虚拟机中还是在“真实”机器中运行。

10.2. Apple 8 位机

所有 8 位 Apple ][ 模拟器都需要原始 ROM 的副本,用于你想要模拟的任何系统,放在一个文件中。如果你努力搜索,你可以找到 Apple ][、][+、][e、][c 和 //gs 的 ROM 文件副本。它们仍然受 Apple 的版权保护,如果你实际拥有一台这些计算机,你才能合法使用它们。

10.2.1. KEGS

KEGS 是 Kent Dickey 编写的 Apple II 模拟器最初是为 HP-UX 编写的,但经过改进和定制以适应 Linux。它在 X Window 系统下以任何颜色深度运行,并支持可更改的内存大小、操纵杆和声音。KEGS 启动所有 Apple II 变体,并支持所有 Apple ][ 的图形模式。我找不到这个应用程序的有效主页。

10.2.2. apple2 和 xapple2

基于 SVGAlib 的apple2和基于 X Window 系统的xapple2可以模拟除 //gs 之外的任何 Apple ][ 变体。界面有点奇怪,但可用。配置也有点奇怪;这个模拟器将受益于一个基于 SVGA 或 X Window 系统的配置工具。它支持 6502 指令集中一些游戏依赖的未公开部分。apple2目前由 Michael Deutschmann 维护并且似乎以缓慢但稳定的速度开发。我认为这个应用程序没有主页。

10.3. DOS

10.3.1. dosemu

dosemu <http://www.dosemu.org> 是 Linux 上规范的 DOS 模拟器。当你想起 DOS 时,不要想到像 PROCOM PLUS 或其他 PROGRA~1 这样名称简短且全部大写的程序。有一些为 DOS 编写的真正经典的游戏,比如 Carmageddon、Redneck Rampage 和 Tomb Raider。dosemu 可以运行这些游戏。不幸的是,要让 dosemu 工作可能需要付出很多努力,而且截至 2002 年 1 月,声音代码有些损坏。当你试图运行 Wordperfect 或旧的数据库应用程序时,这没什么大不了的。但对于游戏来说,这是一个绝对的致命问题。要让 dosemu 良好运行并不容易,但不幸的是,对于 DOS 游戏来说,这是最好的途径。祝你好运。如果你成功使用 dosemu,我很想听到你的消息。

10.4. Win16

10.4.1. Wabi

Wabi 是一款商业 Win16 模拟器。也就是说,它可以从 Windows 3.1、Windows 3.11 或 Windows for Workgroups 3.11 环境运行 Windows 16 位应用程序。Wabi 最初由 SCO Unix 在很久以前创建,然后在 2001 年年中左右被 Caldera 收购。

Wabi 速度很快,并且对于它所做的事情来说做得很好,尽管我听说 Solaris 上的 wabi 比 Linux 更稳定。它可能对玩旧的 Win16 游戏有用,但存在三个问题

  • 你必须拥有 Windows 3.1/3.11 或 WfW 3.11 的许可副本。

  • Wabi 对于它所做的事情来说非常昂贵。

  • Wabi 在 32bpp 或 24bpp 颜色下不起作用。

Wabi 本身不做 DOS,但看起来它可以使用 DOS 模拟器作为运行 DOS 程序的后端。曾有关于 Wabi 3.0 的讨论,它将进行 Win32 模拟,但据我所知,这个项目已被无限期搁置。我认为 Wabi 将在所有架构的 Linux 下运行(有人可以验证这一点吗?)

10.5. Win32

10.5.1. wine

Wine <http://www.winehq.com>,它带有 GNU 风格的首字母缩略词“Wine Is Not An Emulator”,是 Win32 API 的非商业实现。它不是模拟器的原因很微妙,并且大多数非计算机科学家不感兴趣,所以我们在这里称之为模拟器(它实际上是对 Win32 API 的调用进行运行时翻译,将其转换为 POSIX/X11 调用)。Wine 已经取得了长足的进步,并且能够模拟许多重要的程序,这对想要这类东西的 Linux 用户来说是个好消息。

Wine提供 DOS API,因此你不能使用它来运行 DOS 应用程序。为此,你应该看看 dosemu(第 10.3.1 节)。Wine 在实现 DirectX 方面一直不太擅长,尽管已知许多游戏可以在 wine 下运行。对于游戏,你可能需要看看 winex(第 10.5.3 节)。

除了将 Win32 API 运行时翻译为 POSIX/X11(它在 Linux 上运行 Windows 应用程序)之外,wine 还进行 Win32 API 到 POSIX/X11 的编译时翻译(它在 Linux 上编译 Windows 应用程序源代码)。从这个意义上说,wine 是一个 Windows 到 Linux 的移植实用程序。x86 架构不是必需的,但建议使用,因为它允许实际的 x86 二进制执行以及直接 DLL 使用)。

你可以“与 Windows 一起”使用 wine,这意味着 wine 使用实际上来自 Microsoft Windows 本身的库。只有当你拥有一份当前未在计算机上使用的 Windows 副本时,这才是合法的。据说 wine 与 Windows 一起运行时效果最佳。你也可以在没有 Windows 的情况下运行 wine。 winehq 的人们正在编写他们自己的库集,称为libwine它完全在没有 Microsoft 代码的情况下实现了 Win32 API。

Wine 最初是在 MIT/X11 许可下授权的,因此它可以用于商业和非商业目的。在 2002 年年中,wine 的一部分以 LGPL 重新授权,以便它只能用于非商业目的。这给像 Transgaming (第 10.5.3 节) 这样的公司带来了问题,并促使了 wine 的一个分支,名为 ReWind (第 10.5.2 节)。

10.5.2. rewind

Rewind <http://rewind.sourceforge.net/> 由 Eric Pouech(一位 wine 开发人员)和 Ove Kåven(一位 winex 开发人员)发起,以响应 wine 的许可证变更)。它最初是 wine 的最后一个完全在 MIT/X11 许可下授权的版本的快照。目的是保持 rewind 基于 MIT/X11,以便像 Transgaming 这样的公司可以提供基于 wine 的产品。

10.5.3. winex

Winex 由一家名为 Transgaming <http://www.transgaming.com> 的公司发布。开发人员使用 wine(参见 第 10.5.1 节)并添加 DirectX/DirectDraw 支持。虽然 winex 是商业的,但他们有一个有趣的商业模式。

最终用户(你)可以免费下载源代码。但是,每月 5 美元,你可以成为 Transgaming 的订阅者。成为 Transgaming 的订阅者有三个主要好处

  • 订阅者可以随时下载方便打包的 winex 版本,格式为 deb、rpm 或 tar.gz,包括更新。它们还比公开提供的 tarball 具有更多功能:后者是旧版本,缺少一些最新功能,例如对受复制保护程序的支持。

  • 有每月投票,订阅用户可以对他们希望 winex 开发人员从事的工作进行投票。例如,他们可以投票支持诸如“改进对受复制保护程序的支持”、“更好的 Installshield 支持”或“改进 DirectX 8.0 支持”之类的事情。据我所见,开发人员确实会听取订阅者投票的意见。

  • Transgaming 网站有一些用户支持论坛。一方面,他们使用了我见过的最糟糕、最可怕、最令人困惑、最浪费、最愚蠢的格式,我希望上帝保佑我再也不会看到格式像 Transgaming 那样糟糕的论坛。另一方面,你可以寻求帮助,开发人员非常乐意解答你的问题;他们的警惕性令人印象深刻。非订阅者可以浏览论坛,但只有订阅者可以发帖(因此,寻求支持)。

winex 的开发人员打算“时不时地”将其 Installshield、DirectX 和 DirectDraw 增强功能发布到 wine 中。作为回报,随着 wine 成熟度的提高,winex 开发人员将采用新版本的 wine 并将其用于 winex。然而,自从 Transgaming 诞生以来,wine 的一部分已根据更严格的 GNU LGPL 许可证重新授权(第 10.5.1 节)。这基本上意味着在重新授权日期之后发布的 wine 版本将不再能被 winex 使用。因此,winex 现在将基于 rewind(第 10.5.2 节)。

10.5.4. Win4Lin

Win4Lin <http://www.netraverse.com> 是 Netraverse 的商业产品。与 vmware (第 10.5.5 节) 一样,它使用虚拟机方法来运行 Windows 应用程序,因此你将获得一个大窗口,从中你可以启动 Windows 并运行各种 Windows 应用程序。与 vmware 不同,Win4Lin 仅支持 Windows 95/98/ME,但这对于游戏玩家来说更好。由于 Win4Lin 专注于这些操作系统,报告称它在这些操作系统下运行游戏的速度更快,并且比 vmware 效果更好。它也比 vmware 便宜得多。截至 2003 年 6 月,Win4Lin 的最新版本是 5.0。但它仍然存在一些限制

  • 它不支持 DirectX 或 DirectDraw,而 vmware 对 DirectX 有“有限的”支持。

  • 它仅支持串行和并行设备。这对于使用 USB 操纵杆的人来说很重要。请注意,vmware 最多支持 2 个 USB 设备。

  • 截至 2003 年 6 月,预计支付 89.99 美元(不含印刷文档)和 99.99 美元(含印刷文档)。此外,没有评估副本可用,尽管你获得了 30 天退款保证。但是,由于它是商业产品,你确实可以获得技术支持。vmware 要贵得多。

  • 与 vmware 一样,你需要拥有 Win95 或 Win98 的许可副本。Win4Lin 不能像 wine 那样使用现有的 Windows 安装。

  • 它仅在 x86 架构上运行。

10.5.5. VMWare

VMWare 是一款虚拟机,可以在标准 PC 上同时运行多个操作系统:支持的操作系统包括 Microsoft 的操作系统、Linux、Novell Netware 和 FreeBSD。你可以使用它来运行 MS Windows 操作系统并在那里启动你最喜欢的游戏。你甚至可以在 Linux 下运行另一个 Linux;如果你想测试另一个发行版,这很有用。太棒了!现在说说缺点。你肯定应该有一个良好的配置才能运行它;他们声称最低配置是 500MHz x86 CPU 和 128MB RAM,但如果你想要合理的性能,更快的处理器和至少 256MB RAM 似乎是最低要求。并非所有 Linux 发行版都受支持:最新的 RedHat、Mandrake 和 Suse 受支持,但如果你有其他版本和/或发行版(如 Debian),你就不走运了。此外,vmware 对 DirectX 的支持有限,你可能无法玩最新的游戏。

有关更多信息,请参阅 http://www.vmware.com。它不是很便宜(工作站版本约 300 美元),但你可以获得 30 天的评估副本。

10.5.6. 我应该选择什么?

首先,你应该尝试模拟器。虽然有些游戏可能在 wine 下运行,但你可能会在 winex 中获得最大的成功:它的 DirectX 支持正在不断改进。截至 3.1 版本,DirectX 8 支持几乎完成,但这可能不是较旧的 DirectX 版本(因此也是较旧的游戏)的情况。

你也可以尝试像 Win4LinVMWare 这样的虚拟机而不是模拟器。如果你的目标是在 Linux 上运行 Win95/98/ME 应用程序,而没有 USB 并且在 x86 架构上,那么 Win4Lin 的成本和对 Win95 类型操作系统的关注使其成为比 vmware 更好的选择。但是,如果你必须有 USB 支持或在 x86 以外的平台上运行 Linux,那么 vmware 是你唯一的选择。

现在,如果你的目标是在 Linux 下运行 Win95 类型操作系统游戏,那么 Win4Lin 几乎看起来比 vmware 更好。致命的问题是 vmware 对 DirectX 的支持有限,而 Win4Lin 则完全没有。仅凭这一事实就使得 Win4Lin 和 vmware 都不适合大多数硬核游戏目的。但是,如果你打算尝试一下,你更有可能在 vmware 中获得成功。