Linux中國

Docker 容器中的老式 DOS BBS

事實證明這是可能的,但很難。我使用了所有三種主要的 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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國