Docker 容器中的老式 DOS BBS
创始人
2024-03-01 22:07:55
0

不久前,我写了一篇我的 Debian Docker 基本映像。我决定进一步扩展这个概念:在 Docker 中运行 DOS 程序。

但首先,来看看题图。

事实证明这是可能的,但很难。我使用了所有三种主要的 DOS 模拟器(dosbox、qemu 和 dosemu)。我让它们都能在 Docker 容器中运行,但有很多有趣的问题需要解决。

都要做的事是在 DOS 环境下提供一个伪造的调制解调器。它需要作为 TCP 端口暴露在容器外部。有很多方法可以做到 —— 我使用的是 tcpser。dosbox 有一个 TCP 调制解调器接口,但事实证明,这样做太问题太多了。

挑战来自你希望能够一次接受多个传入 telnet(或 TCP)连接。DOS 不是一个多任务操作系统,所以当时有很多黑客式的方法。一种是有多台物理机,每个有一根传入电话线。或者它们可能会在 DESQview、OS/2 甚至 Windows 3.1 等多任务层下运行多个伪 DOS 实例。

(注意:我刚刚了解到 DESQview/X,它将 DESQview 与 X11R5 集成在一起,并取代了 Windows 3 驱动程序来把 Windows 作为 X 应用程序运行。)

出于各种原因,我不想尝试在 Docker 中运行其中任何一个系统。这让我模拟了原来的多物理节点设置。从理论上讲,非常简单 —— 运行一组 DOS 实例,每个实例最多使用 1MB 的模拟 RAM,这就行了。但是这里面临挑战。

在多物理节点设置中,你需要某种文件共享,因为你的节点需要访问共享的消息和文件存储。在老式的 DOS 时代,有很多笨重的方法可以做到这一点 —— NetwareLAN manager,甚至一些 PC NFS 客户端。我没有访问 Netware。我尝试了 DOS 中的 Microsoft LM 客户端,与在 Docker 容器内运行的 Samba 服务器交互。这样可以使用,但 LM 客户端即使有各种高内存技巧还是占用了很多内存,BBS 软件也无法运行。我无法在多个 dosbox 实例中挂载底层文件系统,因为 dosbox 缓存不兼容。

这就是为什么我使用 dosemu 的原因。除了有比 dosbox 更完整的模拟器之外,它还有一种共享主机文件系统的方式。

所以,所有这一切都在此:jgoerzen/docker-bbs-renegade

我还为其他想做类似事情的人准备了构建块:docker-dos-bbs 和底层 docker-dosemu

意外的收获是,我也试图了在 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 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

摩尔线程发布AI算力笔记本...
钛媒体App 12月20日消息,摩尔线程创始人、董事长兼CEO张建...
2025-12-20 17:46:02
Svelte 团队成员开源...
作者 | Bruno Couriol 译者 | 田橙 Ripp...
2025-12-17 10:15:10
英特尔,下一个 AI 时代...
找一张三年前的照片,需要多久?你需要翻遍混乱的相册,还是依赖飘忽的...
2025-12-16 16:45:37
梯度科技申请基于Kuber...
国家知识产权局信息显示,梯度科技(北京)有限公司申请一项名为“基于...
2025-12-06 21:16:54
破解算力资源利用难题,华为...
近日,华为数据存储产品线发布了AI容器技术——Flex:ai,同时...
2025-11-24 11:45:25
华为开源创新AI容器技术F...
观点网讯:11月21日,华为在上海举办的“2025 AI容器应用落...
2025-11-22 06:15:15

热门资讯

2020 年的 GitHub ... 距离 2020 年结束只剩下区区 24 天,我们即将结束魔幻的 2020 ,迎来新的一年,新的一年或...
开源新闻速递:openSUSE... 今日关注openSUSE 项目组的 Dominique Leuenberger 在他的周报中说:“这...
KDE4.11 Beta1 正...   KDE 项目工作组刚刚发布了 KDE Software Compilation 4.11 Bet...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
使用时间序列数据,用开源工具助... InfluxData 是一个开源的时间序列数据库平台。下面介绍了它是如何被用于边缘应用案例的。收集到...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Textual:为 Pytho... 快速入门使用 TextualPython 在 Linux 上有像 TkInter 这样的优秀 GUI...
硬核观察 #1245 Open... #1 OpenAI 悄然删除禁止将 ChatGPT 用于 “军事和战争” 的禁令在 1 月 10 日...