在 Linux 和 FreeDOS 之間復(fù)制文件
下面是我如何在我的 FreeDOS 虛擬機和 Linux 桌面系統(tǒng)之間傳輸文件。
我運行 Linux 作為我的主要操作系統(tǒng),我在一個虛擬機中啟動 FreeDOS。大多數(shù)時候,我使用 QEMU 作為我的 PC 模擬器,但有時我會用 GNOME Boxes(它使用 QEMU 作為后端虛擬機)或用 VirtualBox 運行其他實驗。
我喜歡玩經(jīng)典的 DOS 游戲,有時我也會調(diào)出一個最喜歡的 DOS 應(yīng)用。我在管理信息系統(tǒng)(MIS)課上講計算機的歷史,有時我會用 FreeDOS 和一個傳統(tǒng)的 DOS 應(yīng)用錄制一個演示,比如 As-Easy-As(我最喜歡的 DOS 電子表格,曾經(jīng)作為“共享軟件”發(fā)布,但現(xiàn)在可以 從 TRIUS 公司免費獲得)。
但是以這種方式使用 FreeDOS 意味著我需要在我的 FreeDOS 虛擬機和我的 Linux桌 面系統(tǒng)之間傳輸文件。讓我來展示是如何做到這一點的。
用 guestmount 訪問鏡像
我曾經(jīng)通過計算第一個 DOS 分區(qū)的偏移量來訪問我的虛擬磁盤鏡像,然后用正確的選項組合來調(diào)用 Linux 的 mount
命令來匹配這個偏移量。這總是很容易出錯,而且不是很靈活。幸運的是,有一個更簡單的方法可以做到這一點。來自 libguestfs-tools 包的 guestmount
程序可以讓你從 Linux 中訪問或 掛載 虛擬磁盤鏡像。你可以在 Fedora 上用這個命令安裝 libguestfs-tools
:
$ yum install libguestfs-tools libguestfs
使用 guestmount
并不像從 GNOME 文件管理器中雙擊文件那么簡單,但命令行的使用并不難。guestmount
的基本用法是:
$ guestmount -a image -m device mountpoint
在這個用法中,image
是要使用的虛擬磁盤鏡像。在我的系統(tǒng)中,我用 qemu-img
命令創(chuàng)建了 QEMU 虛擬磁盤鏡像。guestmount
程序可以讀取這種磁盤鏡像格式,以及 GNOME Boxes 使用的 QCOW2 鏡像格式,或者 VirtualBox 使用的 VDI 鏡像格式。
device
選項表示虛擬磁盤上的分區(qū)。想象一下,把這個虛擬磁盤當(dāng)作一個真正的硬盤使用。你可以用 /dev/sda1
訪問第一個分區(qū),用 /dev/sda2
訪問第二個分區(qū),以此類推。這就是 guestmount
的語法。默認(rèn)情況下,F(xiàn)reeDOS 1.3 RC4 在一個空的驅(qū)動器上創(chuàng)建了一個分區(qū),所以訪問這個分區(qū)的時候要用 /dev/sda1
。
而 mountpoint
是在你的本地 Linux 系統(tǒng)上“掛載” DOS 文件系統(tǒng)的位置。我通常會創(chuàng)建一個臨時目錄來工作。你只在訪問虛擬磁盤時需要掛載點。
綜上所述,我使用這組命令從 Linux 訪問我的 FreeDOS 虛擬磁盤鏡像:
$ mkdir /tmp/freedos
$ guestmount -a freedos.img -m /dev/sda1 /tmp/freedos
之后,我可以通過 /tmp/freedos
目錄訪問我的 FreeDOS 文件,使用 Linux 上的普通工具。我可以在命令行中使用 ls /tmp/freedos
,或者使用桌面文件管理器打開 /tmp/freedos
掛載點。
$ ls -l /tmp/freedos
total 216
drwxr-xr-x. 5 root root 8192 May 10 15:53 APPS
-rwxr-xr-x. 1 root root 85048 Apr 30 07:54 COMMAND.COM
-rwxr-xr-x. 1 root root 103 May 13 15:48 CONFIG.SYS
drwxr-xr-x. 5 root root 8192 May 15 16:52 DEVEL
drwxr-xr-x. 2 root root 8192 May 15 13:36 EDLIN
-rwxr-xr-x. 1 root root 1821 May 10 15:57 FDAUTO.BAT
-rwxr-xr-x. 1 root root 740 May 13 15:47 FDCONFIG.SYS
drwxr-xr-x. 10 root root 8192 May 10 15:49 FDOS
-rwxr-xr-x. 1 root root 46685 Apr 30 07:54 KERNEL.SYS
drwxr-xr-x. 2 root root 8192 May 10 15:57 SRC
-rwxr-xr-x. 1 root root 3190 May 16 08:34 SRC.ZIP
drwxr-xr-x. 3 root root 8192 May 11 18:33 TEMP
使用 GNOME 文件管理器來訪問虛擬磁盤
例如,要從我的 Linux projects
目錄中復(fù)制幾個 C 源文件到虛擬磁盤鏡像上的 C:\SRC
,以便我以后能在 FreeDOS 下使用這些文件,我可以使用 Linux cp
命令:
$ cp /home/jhall/projects/*.c /tmp/freedos/SRC
虛擬驅(qū)動器上的文件和目錄在技術(shù)上是不分大小寫的,所以你可以用大寫或小寫字母來引用它們。然而,我發(fā)現(xiàn)使用所有大寫字母來輸入 DOS 文件和目錄更為自然。
$ ls /tmp/freedos
APPS CONFIG.SYS EDLIN FDCONFIG.SYS KERNEL.SYS SRC.ZIP
COMMAND.COM DEVEL FDAUTO.BAT FDOS SRC TEMP
$ ls /tmp/freedos/EDLIN
EDLIN.EXE MAKEFILE.OW
$ ls /tmp/freedos/edlin
EDLIN.EXE MAKEFILE.OW
用 guestmount 卸載
在你再次在虛擬機中使用虛擬磁盤鏡像之前,你應(yīng)該總是先 卸載。如果你在運行 QEMU 或 VirtualBox 時讓鏡像掛載,你有可能弄亂你的文件。
與 guestmount
配套的命令是 guestunmount
,用來卸載磁盤鏡像。只要給出你想卸載的掛載點就可以了:
$ guestunmount /tmp/freedos
請注意命令拼寫與 Linux 的 umount
稍有不同。