dosbox如何挂载 dosbox怎么用

编译自: http://changelog.complete.org/archives/9836-an-old-dos-bbs-in-a-docker-container 作者: John Goerzen
译者: geekpi
不久前,我写了一篇我的 Debian Docker 基本映像[1] 。我决定进一步扩展这个概念:在 Docker 中运行 DOS 程序 。
但首先,来看看题图 。
事实证实这是可能的,但很难 。我使用了所有三种主要的 DOS 模仿器(dosbox、qemu 和 dosemu) 。我让它们都能在 Docker 容器中运行,但有很多有趣的问题需要解决 。
都要做的事是在 DOS 环境下提供一个伪造的调制解调器 。它需要作为 TCP 端口暴露在容器外部 。有很多方法可以做到 —— 我使用的是 tcpser 。dosbox 有一个 TCP 调制解调器接口,但事实证实,这样做太问题太多了 。
挑战来自你希望能够一次接受多个传入 telnet(或 TCP)连接 。DOS 不是一个多任务操作系统,所以当时有很多黑客式的方法 。一种是有多台物理机,每个有一根传入电话线 。或者它们可能会在 DESQview[2]、OS/2 甚至 Windows 3.1 等多任务层下运行多个伪 DOS 实例 。
(注重:我刚刚了解到 DESQview/X[3],它将 DESQview 与 X11R5 集成在一起,并取代了 Windows 3 驱动程序[4]来把 Windows 作为 X 应用程序运行 。)
出于各种原因,我不想尝试在 Docker 中运行其中任何一个系统 。这让我模仿了原来的多物理节点设置 。从理论上讲,非常简朴 —— 运行一组 DOS 实例,每个实例最多使用 1MB 的模仿 RAM,这就行了 。但是这里面临挑战 。
在多物理节点设置中,你需要某种文件共享,因为你的节点需要访问共享的消息和文件存储 。在老式的 DOS 时代,有很多粗笨的方法可以做到这一点 —— Netware[5]、LAN manager[6],甚至一些 PC NFS 客户端 。我没有访问 Netware 。我尝试了 DOS 中的 Microsoft LM 客户端,与在 Docker 容器内运行的 Samba 服务器交互 。这样可以使用,但 LM 客户端即使有各种高内存技巧还是占用了很多内存,BBS 软件也无法运行 。我无法在多个 dosbox 实例中挂载底层文件系统,因为 dosbox 缓存不兼容 。
这就是为什么我使用 dosemu 的原因 。除了有比 dosbox 更完整的模仿器之外,它还有一种共享主机文件系统的方式 。
【dosbox如何挂载 dosbox怎么用】所以,所有这一切都在此:jgoerzen/docker-bbs-renegade[7] 。
我还为其他想做类似事情的人预备了构建块:docker-dos-bbs[8] 和底层 docker-dosemu[9] 。
意外的收获是,我也试图了在 Joyent 的 Triton(基于 Solaris 的 SmartOS)下运行它 。让我感到兴奋的印象是,几乎可以在这下面工作 。是的,在 Solaris 机器上的一个基于 Linux 的 DOS 模仿器的容器中运行 Renegade DOS BBS 。
via: http://changelog.complete.org/archives/9836-an-old-dos-bbs-in-a-docker-container
作者:John Goerzen[10] 译者:geekpi 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出
点击“了解更多”可访问文内链接