如何将 ISO 文件加载到 RAM 并从中启动 MS-DOS?

如何将 ISO 文件加载到 RAM 并从中启动 MS-DOS?

我在这方面没有太多经验,所以我来这里寻求帮助。

我的问题是:

我想将 USB 闪存驱动器上的 ISO 加载到我的 RAM 中。该 ISO 中应包含正在运行的 MS-DOS(最初哪个版本并不重要)。

我还想将第二个 ISO 安装到 RAM 中,但如果有必要,这些文件也可以加载到第一个映像中。(我只是介意软盘的最大容量为 1.44 MB,它装不下。)

因此,当我拔下 USB 时,所有数据都应该可以通过 RAM 访问。

我的第一个想法是使用 GRUB 将其加载到 RAM 中并启动它。不幸的是,如果我编辑 MS-DOS ISO(以任何方式,例如切换键盘布局或包含另一个小文件),它就会拒绝启动它。

我需要一个编辑过的 MS-DOS,因为我想要包含诸如xcopynet use等命令文件NTFS4DOS

因此,在启动时,我希望 MS-DOS 能够访问其他数据。这些数据是否位于同一个“驱动器”(例如 ISO)或第二个驱动器上无关紧要。

如何将 MS-DOS 和附加文件加载到 RAM 中并启动它?

GRUB 不是必需的,它只是我在网上研究了很长时间后发现的。

答案1

Syslinux 项目包含一个名为memdisk,它可以启动虚拟硬盘。因此,如果您将 MS-DOS 安装放在硬盘上,它会将磁盘加载到内存中并从中启动。您还可以加载多个硬盘驱动器映像以查看多个磁盘。

但是,只有当您的软件使用 int13 访问磁盘时,驱动器才会工作,并且它并不适用于所有 BIOS。此外,此解决方案根本不使用 ISO 映像 - 但如果它可以在您的系统上运行,它可能会解决您的问题。

答案2

您可以使用 Rufus 或其他类似的实用程序来创建可启动的 MS-DOS USB 驱动器,如所述这里

那你必须创建一个 ramdisk并将系统文件传输到那里。

Windows 98 救援磁盘使用相同的方法,使用 ramdisk 中的实用程序提取 cab 文件的内容。

答案3

我想将 USB 闪存驱动器上的 ISO 加载到我的 RAM 中。该 ISO 中应包含正在运行的 MS-DOS(最初哪个版本并不重要)。

MS-DOS 使用实模式 16 位 BIOS 调用来枚举和访问磁盘,以及您可能安装的任何内容DEVICE=DEVICEHIGH=CONFIG.SYS

您可能会想,然后您可以找到一些基于 DOS 的 RAM 磁盘(RAMDRIVE.SYS?已经很久了……)问题是,当 DOS 启动时,它需要加载IO.SYSMSDOS.SYS,然后加载指向的CONFIG.SYS任何文件,它将使用 BIOS 例程来执行此操作。至少在和加载之前CONFIG.SYS,RAM 驱动器都不可用- 并且它将尝试从 AFAIK 启动时的同一位置加载它。IO.SYSMSDOS.SYS

没有办法通过“预加载”来CONFIG.SYS解决这个问题。

所以 - 除非您的 BIOS(而不是其他任何东西)支持在 RAM 中加载 .ISO 并使其看起来像连接到系统的另一个硬盘驱动器(没有一个支持 - 但 80 年代后期有一些 BIOS 在 ROM 中具有 DOS 等),或者您运行在启动 MS-DOS 之前执行此操作的覆盖加载器(我不知道有任何覆盖加载器或者它是否会起作用),否则您无法执行此操作。

相关内容