如何在 Linux 中运行 DOS 程序

QEMU 和 FreeDOS 让在 Linux 下运行旧 DOS 程序变得容易。
543 位读者喜欢这个。
An introduction to GNU Screen

Opensource.com

经典的 DOS 操作系统支持许多优秀的应用程序:文字处理器、电子表格、游戏和其他程序。仅仅因为一个应用程序很旧并不意味着它不再有用。

今天有很多理由运行旧的 DOS 应用程序。也许是为了从遗留的业务应用程序中提取报告。或者玩经典的 DOS 游戏。或者只是因为你对“经典计算”感到好奇。你不需要双启动你的系统来运行 DOS 程序。相反,你可以借助 PC 模拟器和 FreeDOS,直接在 Linux 中运行它们。

FreeDOS 是一个完整、免费、与 DOS 兼容的操作系统,你可以用它来玩经典的 DOS 游戏、运行遗留的商业软件或开发嵌入式系统。任何在 MS-DOS 上运行的程序也应该在 FreeDOS 上运行。

在“过去”,你将 DOS 安装为计算机上唯一的操作系统。如今,在 Linux 下运行的虚拟机中安装 DOS 要容易得多。QEMU(Quick EMUlator 的缩写)是一个开源软件虚拟机系统,可以将 DOS 作为 Linux 的“访客”操作系统运行。大多数流行的 Linux 系统默认包含 QEMU。

以下是在 Linux 下使用 QEMU 和 FreeDOS 运行旧 DOS 应用程序的四个简单步骤。

步骤 1:设置虚拟磁盘

你需要一个在 QEMU 中安装 FreeDOS 的位置,为此你需要一个虚拟的 C: 盘。在 DOS 中,驱动器是用字母指定的——A:B: 是第一个和第二个软盘驱动器,C: 是第一个硬盘驱动器。其他介质,包括其他硬盘驱动器或 CD-ROM 驱动器,被分配为 D:E: 等。

在 QEMU 下,虚拟驱动器是镜像文件。要初始化一个可以用作虚拟 C: 盘的文件,请使用 qemu-img 命令。要创建一个大约 200MB 的镜像文件,请输入以下命令

qemu-img create dos.img 200M

与现代计算相比,200MB 可能看起来很小,但在 1990 年代初期,200MB 已经很大了。这足以安装和运行 DOS。

步骤 2:QEMU 选项

与 VMware 或 VirtualBox 等 PC 模拟器系统不同,你需要通过指示 QEMU 添加虚拟机的每个组件来“构建”你的虚拟系统。虽然这看起来很费力,但实际上并没有那么难。以下是我用来在 QEMU 中启动 FreeDOS 的参数

qemu-system-i386

QEMU 可以模拟几种不同的系统,但要启动 DOS,我们需要一个与 Intel 兼容的 CPU。为此,请使用 i386 命令启动 QEMU。

-m 16

我喜欢定义一个具有 16MB 内存的虚拟机。这可能看起来很小,但 DOS 不需要太多内存来完成其工作。在 DOS 盛行时,配备 16MB 甚至 8MB 内存的计算机非常常见。

-k en-us

从技术上讲,-k 选项不是必需的,因为 QEMU 会将虚拟键盘设置为与你的实际键盘匹配(在我的例子中,是标准美国布局的英语)。但我还是喜欢指定它。

-rtc base=localtime

每台经典 PC 都提供一个实时时钟 (RTC),以便系统可以跟踪时间。我发现将虚拟 RTC 简单地设置为与你的本地时间匹配是最容易的。

-soundhw sb16,adlib,pcspk

如果你需要声音,特别是对于游戏,我更喜欢使用 SoundBlaster16 声卡硬件和 AdLib Music 支持来定义 QEMU。SoundBlaster16 和 AdLib 是 DOS 时代最常见的声卡硬件。一些较旧的程序可能会使用 PC 扬声器发出声音;QEMU 也可以模拟这一点。
-device cirrus-vga 为了使用图形,我喜欢模拟一个简单的 VGA 显卡。Cirrus VGA 卡在当时是一种常见的显卡,QEMU 可以模拟它。

-display gtk

对于虚拟显示器,我将 QEMU 设置为使用 GTK 工具包,这会将虚拟系统放在它自己的窗口中,并提供一个简单的菜单来控制虚拟机。
-boot order= 你可以告诉 QEMU 从各种来源启动虚拟机。要从软盘驱动器(通常在 DOS 机器上为 A:)启动,请指定 order=a。要从第一个硬盘驱动器(通常称为 C:)启动,请使用 order=c。或者要从 CD-ROM 驱动器(通常由 DOS 分配为 D:)启动,请使用 order=d。你可以组合字母以指定特定的启动首选项,例如 order=dc 以首先使用 CD-ROM 驱动器,如果 CD-ROM 驱动器不包含可启动介质,则使用硬盘驱动器。

步骤 3:启动并安装 FreeDOS

现在 QEMU 已设置为运行虚拟系统,我们需要一个 DOS 版本来安装并在该虚拟计算机中启动。FreeDOS 使这变得容易。最新版本是 FreeDOS 1.2,于 2016 年 12 月发布。

FreeDOS 网站 下载 FreeDOS 1.2 发行版。FreeDOS 1.2 CD-ROM “标准”安装程序 (FD12CD.iso) 非常适合 QEMU,所以我推荐这个版本。

安装 FreeDOS 很简单。首先,告诉 QEMU 使用 CD-ROM 镜像并从中启动。请记住,C: 盘是第一个硬盘驱动器,因此 CD-ROM 将显示为 D: 盘。

qemu-system-i386 -m 16 -k en-us -rtc base=localtime -soundhw sb16,adlib -device cirrus-vga -display gtk -hda dos.img -cdrom FD12CD.iso -boot order=d

只需按照提示操作,你将在几分钟内安装好 FreeDOS。

Starting FreeDOS installation

opensource.com

Select your keyboard layout

opensource.com

Selecting which packages to install

opensource.com

Rebooting after installation

opensource.com

完成后,通过关闭窗口退出 QEMU。

步骤 4:安装并运行你的 DOS 应用程序

安装 FreeDOS 后,你可以在 QEMU 中运行不同的 DOS 应用程序。你可以在各种档案或其他 网站 上在线查找旧的 DOS 程序。

QEMU 提供了一种访问 Linux 本地文件的简便方法。假设你想与 QEMU 共享 dosfiles/ 文件夹。只需告诉 QEMU 使用该文件夹作为虚拟 FAT 驱动器,方法是使用 -drive 选项。QEMU 将像访问硬盘驱动器一样访问此文件夹。

-drive file=fat:rw:dosfiles/

现在,使用你的常规选项以及额外的虚拟 FAT 驱动器启动 QEMU

qemu-system-i386 -m 16 -k en-us -rtc base=localtime -soundhw sb16,adlib -device cirrus-vga -display gtk -hda dos.img -drive file=fat:rw:dosfiles/ -boot order=c

一旦你在 FreeDOS 中启动,你保存到 D: 盘的任何文件都将保存到 Linux 上的 dosfiles/ 文件夹中。这使得从 Linux 直接读取文件变得容易;但是,请注意在启动 QEMU 后不要从 Linux 更改 dosfiles/ 文件夹。QEMU 在启动 QEMU 时构建一次虚拟 FAT 表。如果在启动 QEMU 后在 dosfiles/ 中添加或删除文件,模拟器可能会感到困惑。

我像这样使用 QEMU 来运行我最喜欢的 DOS 程序,例如 As-Easy-As 电子表格程序。这是 1980 年代和 1990 年代流行的电子表格应用程序,它执行与今天的 Microsoft Excel 和 LibreOffice Calc 相同的工作,或者更昂贵的 Lotus 1-2-3 电子表格在过去所做的工作。As-Easy-As 和 Lotus 1-2-3 都将数据保存为 WKS 文件,较新版本的 Microsoft Excel 无法读取这些文件,但 LibreOffice Calc 可能仍然支持,具体取决于兼容性。

As-Easy-As spreadsheet program

opensource.com

我也喜欢在 QEMU 下启动 FreeDOS 来玩一些我最喜欢的 DOS 游戏,比如最初的 Doom。这些旧游戏仍然很有趣,而且它们在 QEMU 下都能很好地运行。

Doom

opensource.com

Heretic

opensource.com

Jill of the Jungle

opensource.com

Commander Keen

opensource.com

QEMU 和 FreeDOS 让在 Linux 下运行旧 DOS 程序变得容易。一旦你将 QEMU 设置为虚拟机模拟器并安装了 FreeDOS,你就应该可以从 Linux 运行你最喜欢的经典 DOS 程序了。

所有图片均由 FreeDOS.org 提供。

photo of Jim Hall
Jim Hall 是一位开源软件倡导者和开发者,以 GNOME 中的可用性测试以及作为 FreeDOS 的创始人 + 项目协调员而闻名。

16 条评论

为什么这样做而不是使用 dosbox?

DOSBox 也是一个很好的系统。但我认为 DOSBox 只是用于游戏的。

如果你只想玩游戏,DOSBox 提供了一个很棒的平台。它不太适合在 DOS 环境中进行其他工作。在他们的 wiki 上,DOSBox 说“DOSBox 还带有自己的类 DOS 命令行提示符。它仍然非常简陋,缺少 MS-DOS 中的许多功能,但它足以安装和运行大多数 DOS 游戏。”

使用 FreeDOS 和 PC 模拟器,你可以做的不仅仅是玩游戏。我们在 FreeDOS 中添加了比经典“DOS”提供的更多功能,同时保持与 DOS 的兼容性。FreeDOS “基础”包括那些替换原始 MS-DOS 行为的程序和实用程序。我们的其他软件包包括编译器/软件开发、编辑器、存档器、音乐播放器、文本处理以及使 FreeDOS 不仅仅是“DOS”的其他功能。我们也有游戏。

回复 作者 Andrew Patterson (未验证)

实际上,这些不是在 Linux(或 Windows)上运行 DOS 应用程序的最佳方法。我建议任何有遗留 DOS 应用程序、游戏或业务生产问题的人都研究一下 DOSBOX。它不仅提供了其他解决方案的所有功能,还提供了声音和速度缩放支持。

呵呵,freedos 很好,没错。虽然最简单的仍然是 DOSbox。

运行 Doom 或 Heretic 的更好方法是使用 gzDoom 和原始 WAD :) 不过文章写得不错 :)

另一个选择:HP 15.6 英寸 ZBook 15u G4 移动工作站,它加载了 FreeDOS 2.1 作为其操作系统!
安装 Linux 作为“双启动”应该是理所当然的。B&H 售价 750 美元。

惠普和戴尔是两家在(某些)系统上提供 FreeDOS 选项的 PC 制造商。很高兴看到 FreeDOS 以这种方式使用。:-)

我想你指的是 “1.2” 而不是 “2.1”。FreeDOS 1.2 是最新版本。我们目前正在讨论 “2.0”。

回复 作者 robertservice (未验证)

感谢您的纠正(我想这不算作在使 FreeDOS 达到 2.1 版方面的“贡献”或“帮助”,对吗?我不这么认为!)。
继续保持你的出色工作。而且,你认为是否可以轻松地在这台 H-P 机器上双启动 Linux 呢?

回复 作者 Jim Hall

这是一篇非常棒的文章!

我通过以下两种方式运行 DOS:DOSBox 和 dosemu。从来没有对 Virtualbox 运行 DOS 感兴趣,因为我需要更直接(和自然)地访问共享数据。

QEMU 听起来像是第三个很棒的选择。“-drive file=fat:rw:dosfiles/” 说服了我,还有声音支持。

我很高兴尽快尝试一下。

谢谢!

我过去常常通过 DOSEMU 进行很多 FreeDOS 开发。这是一个很棒的小系统。但后来我发现了 QEMU,我现在真的很喜欢使用它。它使启动 FreeDOS 变得非常容易,特别是对于测试新版本的安装。

回复 作者 jake (未验证)

非常感谢 Jim!!!:-)
这是一份很棒的指南!

就个人而言,为了在我的系统上使用 DOS,我(按此顺序)使用 1) DOSBox(本地添加一些 FreeDOS 实用程序),2) DOSEMU(它预装了 FreeDOS,尽管可以为某些 FreeDOS 工具安装更新的版本)和 3) 安装在 VirtualBox 上的 FreeDOS。

我将尽快安装 QEMU。
再次感谢!!!:-)
G.

有一种在 dosemu 下使用 Freedos 的方法。
我尝试过,但从未能够使其工作或找到逐步教程
如果你有兴趣或知道好的操作方法,我很乐意阅读并再次尝试。

我不知道,但这可能是因为我正在学习成为一名程序员,所以我看不到这个的价值?我的意思是,我理解整个“怀旧”氛围,但在一个实际的世界中?这似乎不值得付出努力。当有那么多其他事业可以进行时,例如构建 NoSQL 数据库,从远程/卫星 Linux 机器将其连接到它,学习编程,例如 C++....Python...和 Ruby On Rails...等等。我想在网络世界中每个人都有自己的东西!不过文章写得很好,内容丰富!

不幸的是,就游戏支持而言,FreeDOS 缺少一个关键的东西。声霸卡。
请添加经典声卡模拟。这是唯一缺少的部分。

嘿嘿,这个方法效果很差。2D 游戏出现故障,《毁灭战士》原版根本无法启动。

我遇到了这个错误,但不知道如何启用 GTK 支持

qemu-system-i386: -display gtk: GTK 支持已禁用

但是,我只是省略了 -display gtk 选项,它就工作了。

顺便说一句,如果有人考虑在 VirtualBox 中尝试这个,你不能添加访客增强功能(不支持 Win 2000 之前),所以你不能缩放窗口。

我还没有弄清楚如何使显示分辨率更大。我可以拉伸窗口,现在这样还可以。不确定这会对游戏产生什么影响,直到我让一个游戏运行起来。

© . All rights reserved.