在树莓派上运行 DOS

不同的 CPU 架构意味着在树莓派上运行 DOS 并非易事,但也不是非常复杂。
409 位读者喜欢这篇文章。
4 cool facts you should know about FreeDOS

FreeDOS

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

作为 FreeDOS 项目的创始人兼项目协调员,当用户提出问题时,我通常是首选的求助对象。 最近我经常被问到的一个问题是:“你能在树莓派上运行 FreeDOS 吗?”

这个问题并不奇怪。 毕竟,Linux 在树莓派上运行得很好,而 FreeDOS 是一个比 Linux 需要更少资源的旧操作系统,所以为什么 FreeDOS 不应该在树莓派上运行呢?

[参加我们的 树莓派周赠品活动,有机会获得这个街机游戏套件。]

简单的答案是,由于 CPU 架构的原因,FreeDOS 本身无法在树莓派上运行。 像任何 DOS 一样,FreeDOS 需要 Intel x86 CPU 和 BIOS 来提供基本的运行时服务。 但是树莓派是一个完全不同的架构。 树莓派运行 ARM CPU,它与 Intel CPU 不是二进制兼容的,并且不包含 BIOS。 所以 FreeDOS 无法在树莓派的“裸机”层面上运行。

幸运的是,可以通过 PC 模拟在树莓派上运行 FreeDOS。 也许这不如本地运行 FreeDOS 那么酷,但这是一种在树莓派上运行 DOS 应用程序的好方法。

DOSBox 怎么样?

有些人可能会问:“为什么不使用 DOSBox 呢?” DOSBox 是一个开源的 x86 模拟器,可以在包括 Linux 在内的各种系统上运行。 它是一个很棒的系统,提供了一个类似 DOS 的环境,主要用于运行游戏。 因此,如果您只想运行一个经典的 DOS 游戏,DOSBox 可以为您做到。 但是,如果您想运行 DOS 应用程序,DOSBox 并不是最佳平台。 如果您在 DOSBox 论坛上提问,他们会告诉您 DOSBox 实际上是为游戏而设计的。

对于大多数用户来说,这是一个偏好的问题。 我更喜欢安装 FreeDOS 来运行经典的 DOS 游戏和其他程序,这应该不足为奇。 我发现完整的 DOS 体验比运行 DOSBox 给我更大的灵活性和控制权。 我使用 DOSBox 玩一些游戏,但对于大多数事情,我更喜欢运行完整的 FreeDOS。

在树莓派上安装 FreeDOS

QEMU(Quick EMUlator 的缩写)是一个开源的虚拟机软件系统,可以在 Linux 上将 DOS 作为“guest”操作系统运行。 大多数流行的 Linux 系统默认包含 QEMU。 QEMU 适用于 Raspbian,这是我在树莓派上使用的 Linux 发行版。 我使用运行 Raspbian GNU/Linux 9 (Stretch) 的树莓派截取了本文中的 QEMU 屏幕截图。

去年,我写了一篇关于使用 QEMU 如何在 Linux 中运行 DOS 程序的文章。 使用 QEMU 安装和运行 FreeDOS 的步骤在树莓派上与在基于 GNOME 的系统上基本相同。

在 QEMU 中,您需要通过指示 QEMU 添加虚拟机的每个组件来“构建”您的虚拟系统。 让我们首先定义一个虚拟磁盘映像,我们将使用它来安装和运行 DOS。 `qemu-img` 命令允许您创建虚拟磁盘映像。 对于 FreeDOS,我们不需要太多的空间,所以我创建的虚拟磁盘有 200 兆字节

qemu-img create freedos.img 200M

与 VMware 或 VirtualBox 等 PC 模拟器系统不同,您需要通过指示 QEMU 添加虚拟机的每个组件来“构建”您的虚拟系统。 虽然这看起来很费力,但并不难。 我使用这些参数来运行 QEMU 以在我的树莓派上安装 FreeDOS

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

您可以在我的另一篇文章中找到该命令行的完整描述。 简而言之,该命令行定义了一个与 Intel i386 兼容的虚拟机,具有 16 兆字节的内存、美国/英语键盘和一个基于我本地系统时间的实时时钟。 该命令行还定义了一个经典的 Sound Blaster 16 声卡、Adlib 数字音乐卡和标准的 Cirrus Logic VGA 卡。 文件 `freedos.img` 被定义为第一个硬盘驱动器(`C:`),而 `FD12CD.iso` 映像被定义为 CD-ROM(`D:`)驱动器。 QEMU 设置为从 `D:` CD-ROM 驱动器启动。

FreeDOS 1.2 发行版很容易安装。 只需按照提示操作即可。

Install FreeDos

opensource.com

Install FreeDos

opensource.com

Install FreeDos

opensource.com

Install FreeDos

opensource.com

Install FreeDos

opensource.com

但是,由于在安装操作系统时存在大量的磁盘 I/O,并且 microSD 卡的速度并不是很快,因此安装需要很长时间。

您的结果可能会因您使用的 microSD 卡而异。 我使用的是 SanDisk Ultra 64GB microSDXC UHS-I U1A1 卡。 U1 旨在支持 1080p 视频录制(例如您可能在 GoPro 相机中使用),最小串行写入速度为 10MB/s。 相比之下,V60 针对的是可以进行 4K 视频录制的相机,其最小连续写入速度为 60MB/s。 如果您的 Pi 有 V60 microSD 卡,甚至是 V30 (30MB/s),您将看到比我更好的磁盘 I/O 性能。

在树莓派上运行 FreeDOS

安装 FreeDOS 后,您可能更喜欢直接从虚拟 `C:` 驱动器启动。 修改您的 QEMU 命令行以更改启动顺序,使用 `-boot order=c`,如下所示

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

一旦您在树莓派上的 QEMU 中安装了 FreeDOS,您应该不会注意到任何性能问题。 例如,游戏通常会在您启动每个级别时加载地图、精灵、声音和其他数据。 虽然在游戏中启动一个新级别可能需要一段时间,但我没有注意到在树莓派上的 FreeDOS 中玩 DOS 游戏时有任何性能滞后。

FreeDOS 1.2 发行版包含许多您可能感兴趣的游戏和其他应用程序。 您可能需要运行 `FDIMPLES` 包管理器程序来安装这些额外的软件包。 我在 FreeDOS 1.2 中最喜欢的游戏是 WING,这是一款太空射击游戏,非常让人想起经典的街机游戏 Galaga。(WING 这个名称是 Wing Is Not Galaga 的递归首字母缩写词。)

Installing WING

opensource.com

Installing WING

opensource.com

Playing WING

opensource.com

我最喜欢的 DOS 程序之一是共享软件 As-Easy-As 电子表格程序。 它是 20 世纪 80 年代和 90 年代流行的电子表格应用程序,其功能与今天的 Microsoft Excel 和 LibreOffice Calc 或当年基于 DOS 的 Lotus 1-2-3 电子表格相同。 As-Easy-As 和 Lotus 1-2-3 都将数据保存为 WKS 文件,较新版本的 Microsoft Excel 无法读取这些文件,但 LibreOffice Calc 可能仍然支持这些文件,具体取决于兼容性。 虽然 As-Easy-As 的原始版本是共享软件,但 TRIUS Software 免费提供了 As-Easy-As 5.7 的激活码

As Easy As spreadsheet

opensource.com

As Easy As chart

opensource.com

我也非常喜欢 GNU Emacs 编辑器,FreeDOS 包含一个类似的 Emacs 式文本编辑器,名为 Freemacs。 如果您想要一个比默认 FreeDOS Edit 更强大的编辑器,并且想要像 GNU Emacs 一样的体验,那么 Freemacs 适合您。 您可以使用 FreeDOS 1.2 发行版中的 `FDIMPLES` 包管理器安装 Freemacs。

Installing Freemacs

opensource.com

Freemacs

opensource.com

是的,你可以在树莓派上运行 DOS(某种程度上)

虽然您无法在树莓派上的“裸机”上运行 DOS,但很高兴知道您仍然可以通过模拟器在树莓派上运行 DOS。 感谢 QEMU PC 模拟器和 FreeDOS,可以在树莓派上玩经典的 DOS 游戏和运行其他 DOS 程序。 在执行任何磁盘 I/O 时,尤其是在磁盘上执行某些密集型操作(例如写入大量数据)时,预计会出现轻微的性能下降,但之后一切都会正常运行。 一旦您将 QEMU 设置为虚拟机模拟器并安装了 FreeDOS,您就可以在树莓派上享受您最喜欢的经典 DOS 程序了。

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

3 条评论

DOSbox 的有用替代方案。 您应该可以通过将文件系统移动到 USB 连接的 HDD/SSD 来提高磁盘密集型任务的性能。 我只将 /boot 保留在小 SD 卡上,/ 是一个 320GB HDD,通过 cmdline.txt 文件中的 UUID 引用。

我认为如果用同等的软件库替换 BIOS 中的基本运行时服务,并用同等的 ARM 汇编代码替换 Intel 汇编代码,就可以本地运行 FreeDOS。

值得注意的是,FreeDos 包含 DJGPP 开发软件套件,它提供了一组相当不错的,虽然老旧但仍然非常实用的编程组件。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.