如何将 FreeDOS 用作嵌入式系统

如今,许多嵌入式系统都在 Linux 上运行。但曾几何时,嵌入式系统要么在定制的专有平台上运行,要么在 DOS 上运行。
47 位读者喜欢这篇文章。
Computer laptop in space

Opensource.com

FreeDOS 网站 指出,大多数人使用 FreeDOS 主要用于三个任务:

  1. 玩经典的 DOS 游戏
  2. 运行旧版 DOS 软件
  3. 运行嵌入式系统

但是,运行“嵌入式”系统意味着什么呢?

嵌入式系统基本上是一个非常精简的系统,专门用于运行特定任务。 您可以将如今的嵌入式系统视为物联网 (IoT) 的一部分,包括传感器、恒温器和门铃摄像头。 如今,许多嵌入式系统都在 Linux 上运行。

但曾几何时,嵌入式系统要么在定制的专有平台上运行,要么在 DOS 上运行。 其中一些基于 DOS 的嵌入式系统至今仍在运行,例如收银机或电话专用交换机 (PBX) 系统。 最近在 2017 年的一个例子中,火车迷发现一个俄罗斯电力火车控制系统(俄语:САВПЭ)运行着 FreeDOS,并带有特殊的软件来控制和监控市郊列车的路线并进行乘客广播。

在 DOS 上设置嵌入式系统需要定义一个运行单个应用程序的最小 DOS 环境。 幸运的是,设置最小的 FreeDOS 环境非常容易。 从技术上讲,启动 FreeDOS 并运行 DOS 应用程序所需的全部内容是内核和 FDCONFIG.SYS 配置文件。

安装最小系统

我们可以使用 QEMU 模拟器和非常小的分配来模拟专用的最小 FreeDOS 系统。 为了更准确地反映嵌入式系统,我将定义一个虚拟机,它只有 8 兆字节的内存和一个仅 2 兆字节的虚拟硬盘驱动器。

为了创建微型虚拟硬盘驱动器,我将使用此 qemu-img 命令来定义一个 2 兆字节的文件

$ qemu-img create tiny.img 2M
Formatting 'tiny.img', fmt=raw size=2097152

此命令行定义了一个 32 位“i386”CPU,具有 8 兆字节的内存,使用 2 兆字节的 tiny.img 文件作为硬盘驱动器映像,并将 FreeDOS 1.3 RC4 LiveCD 用作 CD-ROM 介质。 我们还将机器设置为从 CD-ROM 驱动器启动 (-boot order=d),尽管我们只需要它进行安装。 设置好一切后,我们将从硬盘驱动器启动已完成的嵌入式系统

qemu-system-i386 -m 8 -hda tiny.img -cdrom FD13LIVE.iso -boot order=d

使用“Live Environment mode”(实时环境模式)启动系统——这为我们提供了一个正在运行的 FreeDOS 系统,我们可以使用它将最小的 FreeDOS 传输到硬盘驱动器。

 

embedded setup

启动进入 LiveCD 环境

(Jim Hall,CC-BY SA 4.0

我们需要在虚拟硬盘驱动器上为我们的程序创建一个分区。 为此,请从命令行运行 FDISK 程序。 FDISK 是 FreeDOS 上的标准固定磁盘实用程序。 使用 FDISK 创建一个跨越整个(2 兆字节)硬盘驱动器的单个硬盘驱动器分区。

 

embedded setup

FDISK,在创建 2 兆字节分区后

(Jim Hall,CC-BY SA 4.0

但是 FreeDOS 在您重新启动之前不会看到新的硬盘驱动器分区——FreeDOS 仅在启动时读取硬盘驱动器详细信息。 退出 FDISK 并重新启动,您就可以进行下一步了。

重新启动后,您需要在新的硬盘驱动器上创建一个 DOS 文件系统。 由于只有一个虚拟硬盘驱动器,FreeDOS 会将其识别为C:驱动器。 您可以使用 FORMAT 命令在C:上创建 DOS 文件系统。 /S选项将操作系统文件(内核,加上COMMAND.COM shell 的副本)传输到新驱动器。

 

embedded setup

格式化新驱动器以创建 DOS 文件系统

(Jim Hall,CC-BY SA 4.0

现在您已经创建了驱动器并对其进行了格式化,您可以安装将在嵌入式系统上运行的应用程序了。

安装专用应用程序

 

嵌入式系统实际上只是在专用系统上运行的单用途应用程序。 这种应用程序通常是为它将控制的系统定制构建的,例如收银机、显示终端或控制环境。 对于此演示,让我们使用 FreeDOS 1.3 RC4 安装 CD-ROM 中的程序。 它需要足够小,才能安装到我们为其创建的微型 2 兆字节硬盘驱动器中。 这可以是任何东西——所以只是为了好玩,让我们把它做成一个游戏。

 

FreeDOS 1.3 RC4 包括几个有趣的游戏。 我喜欢的一个游戏是名为 Simple Senet 的棋盘游戏。 它基于 Senet,一种古埃及棋盘游戏。 游戏的细节对于此演示并不重要,除了我们将安装它并将其设置为嵌入式系统的专用应用程序。

注意:FreeDOS 1.3 中的路径已更改。 本文是在 FreeDOS 1.3 Release Candidate 4 为最新版本时编写的,但 FreeDOS 1.3(非 RC4)更改了一些路径,包括 SENET.EXE 程序的路径。

如果您想在 FreeDOS 1.3 上尝试本文中的步骤,则必须更新您的路径。 在 FreeDOS 1.3 RC4 中,SENET.EXE 二进制文件位于 BIN 目录中。 在 FreeDOS 1.3 中,SENET.EXE 位于 GAMES\SENET 目录中。

也就是说,如果您使用 unzip senet.zip -d C:\FDOS 解压缩 Simple Senet,然后在您的 FDCONFIG.SYS 文件中使用 SHELL=C:\FDOS\GAMES\SENET\SENET.EXE

要安装应用程序,请进入 FreeDOS 1.3 RC4 LiveCD 上的 \PACKAGES\GAMES 目录。 您会在那里看到一长串软件包,我们想要的是 SENET.ZIP

embedded setup

FreeDOS 1.3 RC4 中的游戏软件包列表

(Jim Hall,CC-BY SA 4.0

要将 Simple Senet 软件包解压缩到虚拟硬盘驱动器上,请使用 UNZIP 命令。 所有 FreeDOS 软件包都是 Zip 文件,因此您可以使用任何与 Zip 兼容的存档实用程序来管理它们。 FreeDOS 1.3 RC4 包括 ZIP 用于创建 Zip 存档,以及 UNZIP 用于解压缩 Zip 存档。 两者都来自 Info-Zip 项目

UNZIP SENET.ZIP -d C:\FDOS

通常,使用 UNZIP 会将 Zip 文件解压缩到当前目录中。 命令行末尾的 -d C:\FDOS 选项告诉 UNZIP 将 Zip 文件解压缩到 C:\FDOS 目录。(-d 表示“destination”,即“目标”。)

 

embedded setup

解压缩 Simple Senet 游戏

(Jim Hall,CC-BY SA 4.0

为了在每次嵌入式系统启动时运行 Simple Senet 游戏,我们需要告诉 FreeDOS 使用 Senet 作为系统“shell”。 默认的 FreeDOS shell 是 COMMAND.COM 程序,但您可以使用 FDCONFIG.SYS 内核配置文件中的 SHELL= 指令定义不同的 shell 程序。 我们可以使用 FreeDOS Edit 创建新的 C:\FDCONFIG.SYS 文件。

 

如果您需要定义其他参数来支持嵌入式系统,您可以将这些参数添加到 FDCONFIG.SYS 文件中。 例如,您可能需要使用 SET 操作设置环境变量,或者使用 FILES=BUFFERS= 语句调整 FreeDOS 内核。

运行嵌入式系统

在完全定义嵌入式系统后,我们现在可以重新启动机器以运行嵌入式应用程序。 运行嵌入式系统通常只需要有限的资源,因此对于此演示,我们将调整 QEMU 命令行以仅从硬盘驱动器启动 (-boot order=c) 并且不定义 CD-ROM 驱动器

qemu-system-i386 -m 8 -hda tiny.img -boot order=c

当 FreeDOS 内核启动时,它会读取 FDCONFIG.SYS 文件以获取其启动参数。 然后,它使用 SHELL= 行运行 shell。 这会自动运行 Simple Senet 游戏。

 

embedded setup

将 Simple Senet 作为嵌入式系统运行

(Jim Hall,CC-BY SA 4.0

我们使用 Simple Senet 演示了如何在 FreeDOS 上设置嵌入式系统。 根据您的需要,您可以使用任何您喜欢的独立应用程序。 在 FDCONFIG.SYS 中的 SHELL= 行中将其定义为 DOS shell,FreeDOS 将在启动时自动启动该应用程序。

但是,这里有一个限制。 嵌入式系统通常不需要退出回到命令提示符,因此这些专用应用程序通常不允许用户退出到 DOS。 如果您设法退出嵌入式应用程序,您可能会看到“Bad or missing Command Interpreter”(错误或缺少命令解释器)提示,您需要在其中输入新 shell 的完整路径。 对于以用户为中心的桌面系统,这将是一个问题。 但是在专用于仅执行一项工作的嵌入式系统上,您应该永远不需要退出。

接下来阅读什么

FreeDOS 入门

它看起来像是复古计算,但它是一个现代操作系统,您可以用来完成工作。

(通讯员)
2021 年 6 月 1 日

FreeDOS 如何启动

概述您的计算机如何启动并启动像 FreeDOS 这样的简单操作系统。

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

评论已关闭。

Creative Commons 许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.