在 Linux 和 FreeDOS 之间复制文件

以下是我如何在 FreeDOS 虚拟机和 Linux 桌面系统之间传输文件的方法。
55 位读者喜欢这篇文章。
Files in a folder

我使用 Linux 作为我的主要操作系统,并在虚拟机中启动 FreeDOS。大多数时候,我使用 QEMU 作为我的 PC 模拟器,但有时我会使用 GNOME Boxes(它使用 QEMU 作为后端虚拟机)或 VirtualBox 进行其他实验。

我喜欢玩经典的 DOS 游戏,有时我会启动一个我喜欢的 DOS 应用程序。我教一门管理信息系统 (MIS) 课程,我在课上谈论计算机的历史,有时我会录制一个演示,使用 FreeDOS 和一个旧的 DOS 应用程序,例如 As-Easy-As(我最喜欢的 DOS 电子表格——曾经作为“共享软件”发布,但现在可以从 TRIUS, Inc 免费获取)。

但是以这种方式使用 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

之后,我可以使用 Linux 上的普通工具通过 /tmp/freedos 目录访问我的 FreeDOS 文件。我可能会在命令行使用 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

使用 GNOME 文件管理器访问虚拟磁盘

(Jim Hall, CC-BY SA 4.0)

例如,要将几个 C 源文件从我的 Linux projects 目录复制到虚拟磁盘镜像上的 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 系统命令略有不同。

接下来阅读什么

FreeDOS 入门

它看起来像复古计算,但它是一个现代操作系统,您可以使用它来完成工作。

(通讯员)
2021 年 6 月 1 日

如何将 FreeDOS 用作嵌入式系统

如今,许多嵌入式系统都在 Linux 上运行。但曾经有一段时间,嵌入式系统要么在自定义的专有平台上运行,要么在 DOS 上运行。

(通讯员)
2021 年 6 月 16 日

为什么 FreeDOS 有 16 种颜色

为什么文本只有这种有限的调色板,以及为什么 FreeDOS 使用这些颜色和色调,而不是其他颜色?答案就像技术中的许多事情一样,是……

(通讯员)
2021 年 6 月 17 日
标签
photo of Jim Hall
Jim Hall 是一位开源软件倡导者和开发人员,以 GNOME 中的可用性测试以及作为 FreeDOS 的创始人 + 项目协调员而闻名。

评论已关闭。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.