怎麼在 Linux 中運行 DOS 程序
傳統的 DOS 操作系統支持的許多非常優秀的應用程序: 文字處理,電子表格,遊戲和其它的程序。但是一個應用程序太老了,並不意味著它沒用了。
如今有很多理由去運行一個舊的 DOS 應用程序。或許是從一個遺留的業務應用程序中提取一個報告,或者是想玩一個經典的 DOS 遊戲,或者只是因為你對「傳統計算機」很好奇。你不需要去雙引導你的系統去運行 DOS 程序。取而代之的是,你可以在 Linux 中在一個 PC 模擬程序和 FreeDOS 的幫助下去正確地運行它們。
FreeDOS 是一個完整的、免費的、DOS 兼容的操作系統,你可以用它來玩經典的遊戲、運行舊式業務軟體,或者開發嵌入式系統。任何工作在 MS-DOS 中的程序也可以運行在 FreeDOS 中。
在那些「過去的時光」里,你安裝的 DOS 是作為一台計算機上的獨佔操作系統。 而現今,它可以很容易地安裝到 Linux 上運行的一台虛擬機中。 QEMU ( 快速模擬程序 的縮寫) 是一個開源的虛擬機軟體,它可以在 Linux 中以一個「 訪客 」操作系統來運行 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-i386 |
QEMU 可以模擬幾種不同的系統,但是要引導到 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](/data/attachment/album/201710/31/214640lx55gm1f11xjbb5j.png "Starting FreeDOS installation")
![Select your keyboard layout](/data/attachment/album/201710/31/214640vhaawkwgwjnjazh2.png "Select your keyboard layout")
![Selecting which packages to install](/data/attachment/album/201710/31/214641g7hw0zobrijh1o6p.png "Selecting which packages to install")
![Rebooting after installation](/data/attachment/album/201710/31/214641agkiu1ic4d7d133k.png "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 spreadsheet program](/data/attachment/album/201710/31/214642h4cgh0e8klxu0lda.png "As-Easy-As spreadsheet program")
As-Easy-As 電子表格程序
我也喜歡在 QEMU中引導 FreeDOS 去玩一些收藏的 DOS 遊戲,比如原版的 Doom。這些老的 DOS 遊戲玩起來仍然非常有趣, 並且它們現在在 QEMU 上運行的非常好。
![Doom](/data/attachment/album/201710/31/214643zunqji9tx9hyblul.png "Doom")
Doom
![Heretic](/data/attachment/album/201710/31/214644vyzlp3767uub5c6u.png "Heretic")
Heretic
![Jill of the Jungle](/data/attachment/album/201710/31/214644ozgp1yyue8u460on.png "Jill of the Jungle")
Jill of the Jungle
![Commander Keen](/data/attachment/album/201710/31/214644tnny43c8zn6o04qo.png "Commander Keen")
Commander Keen
QEMU 和 FreeDOS 使得在 Linux 上運行老的 DOS 程序變得很容易。你一旦設置好了 QEMU 作為虛擬機模擬程序並安裝了 FreeDOS,你將可以在 Linux 上運行你收藏的經典的 DOS 程序。
所有圖片要致謝 FreeDOS.org。
作者簡介:
Jim Hall 是一位開源軟體的開發者和支持者,可能最廣為人知的是他是 FreeDOS 的創始人和項目協調者。 Jim 也非常活躍於開源軟體適用性領域,作為 GNOME Outreachy 適用性測試的導師,同時也作為一名兼職教授,教授一些開源軟體適用性的課程,從 2016 到 2017, Jim 在 GNOME 基金會的董事會擔任董事,在工作中, Jim 是本地政府部門的 CIO。
via: https://opensource.com/article/17/10/run-dos-applications-linux
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive