Linux中國

在 Linux 和 FreeDOS 之間複製文件

我運行 Linux 作為我的主要操作系統,我在一個虛擬機中啟動 FreeDOS。大多數時候,我使用 QEMU 作為我的 PC 模擬器,但有時我會用 GNOME Boxes(它使用 QEMU 作為後端虛擬機)或用 VirtualBox 運行其他實驗。

我喜歡玩經典的 DOS 遊戲,有時我也會調出一個最喜歡的 DOS 應用。我在管理信息系統(MIS)課上講計算機的歷史,有時我會用 FreeDOS 和一個傳統的 DOS 應用錄製一個演示,比如 As-Easy-As(我最喜歡的 DOS 電子表格,曾經作為「共享軟體」發布,但現在可以 從 TRIUS 公司免費獲得)。

但是以這種方式使用 FreeDOS 意味著我需要在我的 FreeDOS 虛擬機和我的 Linux桌 面系統之間傳輸文件。讓我來展示是如何做到這一點的。

用 guestmount 訪問鏡像

我曾經通過計算第一個 DOS 分區的偏移量來訪問我的虛擬磁碟鏡像,然後用正確的選項組合來調用 Linux 的 mount 命令來匹配這個偏移量。這總是很容易出錯,而且不是很靈活。幸運的是,有一個更簡單的方法可以做到這一點。來自 libguestfs-tools 包的 guestmount 程序可以讓你從 Linux 中訪問或 掛載 虛擬磁碟鏡像。你可以在 Fedora 上用這個命令安裝 libguestfs-tools

$ yum install libguestfs-tools libguestfs

使用 guestmount 並不像從 GNOME 文件管理器中雙擊文件那麼簡單,但命令行的使用並不難。guestmount 的基本用法是:

$ guestmount -a image -m device mountpoint

在這個用法中,image 是要使用的虛擬磁碟鏡像。在我的系統中,我用 qemu-img 命令創建了 QEMU 虛擬磁碟鏡像。guestmount 程序可以讀取這種磁碟鏡像格式,以及 GNOME Boxes 使用的 QCOW2 鏡像格式,或者 VirtualBox 使用的 VDI 鏡像格式。

device 選項表示虛擬磁碟上的分區。想像一下,把這個虛擬磁碟當作一個真正的硬碟使用。你可以用 /dev/sda1 訪問第一個分區,用 /dev/sda2 訪問第二個分區,以此類推。這就是 guestmount 的語法。默認情況下,FreeDOS 1.3 RC4 在一個空的驅動器上創建了一個分區,所以訪問這個分區的時候要用 /dev/sda1

mountpoint 是在你的本地 Linux 系統上「掛載」 DOS 文件系統的位置。我通常會創建一個臨時目錄來工作。你只在訪問虛擬磁碟時需要掛載點。

綜上所述,我使用這組命令從 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 file manager](/data/attachment/album/202107/04/181333y8zys7s11kz3s8i1.png "Using GNOME file manager to access the virtual disk")

使用 GNOME 文件管理器來訪問虛擬磁碟

例如,要從我的 Linux projects 目錄中複製幾個 C 源文件到虛擬磁碟鏡像上的 C:SRC,以便我以後能在 FreeDOS 下使用這些文件,我可以使用 Linux cp 命令:

$ cp /home/jhall/projects/*.c /tmp/freedos/SRC

虛擬驅動器上的文件和目錄在技術上是不分大小寫的,所以你可以用大寫或小寫字母來引用它們。然而,我發現使用所有大寫字母來輸入 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 卸載

在你再次在虛擬機中使用虛擬磁碟鏡像之前,你應該總是先 卸載。如果你在運行 QEMU 或 VirtualBox 時讓鏡像掛載,你有可能弄亂你的文件。

guestmount 配套的命令是 guestunmount,用來卸載磁碟鏡像。只要給出你想卸載的掛載點就可以了:

$ guestunmount /tmp/freedos

請注意命令拼寫與 Linux 的 umount 稍有不同。

via: https://opensource.com/article/21/6/copy-files-linux-freedos

作者:Jim Hall 選題:lujun9972 譯者: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中國