如何在 Linux 中运行 DOS 程序!

传统的 dos 操作系统支持的许多非常优秀的应用程序: 文字处理,电子表格,游戏和其它的程序。但是一个应用程序太老了,并不意味着它没用了。
如今有很多理由去运行一个旧的 dos 应用程序。或许是从一个遗留的业务应用程序中提取一个报告,或者是想玩一个经典的 dos 游戏,或者只是因为你对“传统计算机”很好奇。你不需要去双引导你的系统去运行 dos 程序。取而代之的是,你可以在linux中在一个 pc 仿真程序和 freedos 的帮助下去正确地运行它们。
freedos 是一个完整的、免费的、dos 兼容的操作系统,你可以用它来玩经典的游戏、运行旧式业务软件,或者开发嵌入式系统。任何工作在 ms-dos 中的程序也可以运行在 freedos 中。
在那些“过去的时光”里,你安装的 dos 是作为一台计算机上的独占操作系统。 而现今,它可以很容易地安装到 linux 上运行的一台虚拟机中。 qemu (快速仿真程序quick emulator的缩写) 是一个开源的虚拟机软件,它可以在 linux 中以一个“访客guest”操作系统来运行 dos。许多流行的 linux 系统都默认包含了 qemu 。
通过以下四步,很容易地在 linux 下通过使用 qemu 和 freedos 去运行一个老的 dos 程序。
第 1 步:设置一个虚拟磁盘
你需要一个地方来在 qemu 中安装 freedos,为此你需要一个虚拟的 c: 驱动器。在 dos 中,字母a: 和 b: 是分配给第一和第二个软盘驱动器的,而 c: 是第一个硬盘驱动器。其它介质,包括其它硬盘驱动器和 cd-rom 驱动器,依次分配 d:、e: 等等。
在 qemu 中,虚拟磁盘是一个镜像文件。要初始化一个用做虚拟 c: 驱动器的文件,使用 qemu-img 命令。要创建一个大约 200 mb 的镜像文件,可以这样输入:
qemu-img create dos.img 200m
与现代计算机相比, 200mb 看起来非常小,但是早在 1990 年代, 200mb 是非常大的。它足够安装和运行 dos。
第 2 步: qemu 选项
与 pc 仿真系统 vmware 或 virtualbox 不同,你需要通过 qemu 命令去增加每个虚拟机的组件来 “构建” 你的虚拟系统 。虽然,这可能看起来很费力,但它实际并不困难。这些是我们在 qemu 中用于去引导 freedos 的参数:
qemu-system-i386qemu 可以仿真几种不同的系统,但是要引导到 dos,我们需要有一个 intel 兼容的 cpu。 为此,使用 i386 命令启动 qemu。-m 16我喜欢定义一个使用 16mb 内存的虚拟机。它看起来很小,但是 dos 工作不需要很多的内存。在 dos 时代,计算机使用 16mb 或者 8mb 内存是非常普遍的。-k en-us从技术上说,这个-k选项是不需要的,因为 qemu 会设置虚拟键盘去匹配你的真实键盘(在我的例子中, 它是标准的 us 布局的英语键盘)。但是我还是喜欢去指定它。-rtc base=localtime每个传统的 pc 设备有一个实时时钟 (rtc) 以便于系统可以保持跟踪时间。我发现它是设置虚拟 rtc 匹配你的本地时间的最简单的方法。-soundhw sb16,adlib,pcspk如果你需要声音,尤其是为了玩游戏时,我更喜欢定义 qemu 支持 soundblaster 16 声音硬件和 adlib 音乐。soundblaster 16 和 adlib 是在 dos 时代非常常见的声音硬件。一些老的程序也许使用 pc 喇叭发声; qemu 也可以仿真这个。-device cirrus-vga要使用图像,我喜欢去仿真一个简单的 vga 视频卡。cirrus vga 卡是那时比较常见的图形卡, qemu 可以仿真它。-display gtk对于虚拟显示,我设置 qemu 去使用 gtk toolkit,它可以将虚拟系统放到它自己的窗口内,并且提供一个简单的菜单去控制虚拟机。-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 “standard” 安装器 (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
select your keyboard layout
selecting which packages to install
rebooting after installation
在你安装完成之后,关闭窗口退出 qemu。
第 4 步:安装并运行你的 dos 应用程序
一旦安装完 freedos,你可以在 qemu 中运行各种 dos 应用程序。你可以在线上通过各种档案文件或其它网站找到老的 dos 程序。
qemu 提供了一个在 linux 上访问本地文件的简单方法。比如说,想去用 qemu 共享 dosfiles/ 文件夹。 通过使用 -drive 选项,简单地告诉 qemu 去使用这个文件夹作为虚拟的 fat 驱动器。 qemu 将像一个硬盘驱动器一样访问这个文件夹。
-drive file=fat:rw:dosfiles/
现在,你可以使用合适的选项去启动 qemu,加上一个外部的虚拟 fat 驱动器:
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 电子表格程序。这是一个在上世纪八九十年代非常流行的电子表格程序,它和现在的 microsoft excel 和 libreoffice calc 或和以前更昂贵的 lotus 1-2-3 电子表格程序完成的工作是一样的。 as-easy-as 和 lotus 1-2-3 都保存数据为 wks 文件,最新版本的 microsoft excel 不能读取它,但是,根据兼容性, libreoffice calc 可以支持它。
as-easy-as 电子表格程序
我也喜欢在 qemu中引导 freedos 去玩一些收藏的 dos 游戏,比如原版的 doom。这些老的 dos 游戏玩起来仍然非常有趣, 并且它们现在在 qemu 上运行的非常好。
doom
heretic
jill of the jungle
commander keen
qemu 和 freedos 使得在 linux 上运行老的 dos 程序变得很容易。你一旦设置好了 qemu 作为虚拟机仿真程序并安装了 freedos,你将可以在 linux 上运行你收藏的经典的 dos 程序。
所有图片要致谢 freedos.org。
作者简介:
jim hall 是一位开源软件的开发者和支持者,可能最广为人知的是他是 freedos 的创始人和项目协调者。 jim 也非常活跃于开源软件适用性领域,作为 gnome outreachy 适用性测试的导师,同时也作为一名兼职教授,教授一些开源软件适用性的课程,从 2016 到 2017, jim 在 gnome 基金会的董事会担任董事,在工作中, jim 是本地政府部门的 cio。

PCB出现多层板压板怎么办
屏蔽基本介绍
ARM版Windows 10笔记本今年亮相
基于GP32开发板上实现μC/OS-II内核的移植
扫地机器人哪款好?这款非常适合铲屎官
如何在 Linux 中运行 DOS 程序!
微软发首个应用在ARM64设备的x64模拟器
Intel不给力 AMD的处理器份额节节攀升
RTOS消息队列的多种用途
华为Mate X 5G折叠屏手机预计将于10月份在国内发售
MS4525DO-DS3BI005DS空速传感器的测量原理
华为数字能源助力福建清洁能源产业高质量发展
边缘计算在智慧家庭的应用
物联网统计列表详细介绍
科技新潮物丨aigo国民好物固态U盘U393带来SSD级速度
戴森挑战特斯拉:投14亿研发电池技术
锂电安全刻不容缓!星恒牵头编制中国第一部《电动车用锂电池安全使用白皮书》,打造行业安全教科书!
明基PD2700U评测 在亮度和色彩效果上的表现相当不错
华为荣耀Magic上手评测,投石问路之作也惊喜满满绝对颠覆
沉浸式体验ICDIA 2022,思尔芯两大产品助力汽车电子,推动国产替代