我在这方面没有太多经验,所以我来这里寻求帮助。
我的问题是:
我想将 USB 闪存驱动器上的 ISO 加载到我的 RAM 中。该 ISO 中应包含正在运行的 MS-DOS(最初哪个版本并不重要)。
我还想将第二个 ISO 安装到 RAM 中,但如果有必要,这些文件也可以加载到第一个映像中。(我只是介意软盘的最大容量为 1.44 MB,它装不下。)
因此,当我拔下 USB 时,所有数据都应该可以通过 RAM 访问。
我的第一个想法是使用 GRUB 将其加载到 RAM 中并启动它。不幸的是,如果我编辑 MS-DOS ISO(以任何方式,例如切换键盘布局或包含另一个小文件),它就会拒绝启动它。
我需要一个编辑过的 MS-DOS,因为我想要包含诸如xcopy
、net 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.SYS
和MSDOS.SYS
,然后加载指向的CONFIG.SYS
任何文件,它将使用 BIOS 例程来执行此操作。至少在和加载之前CONFIG.SYS
,RAM 驱动器都不可用- 并且它将尝试从 AFAIK 启动时的同一位置加载它。IO.SYS
MSDOS.SYS
没有办法通过“预加载”来CONFIG.SYS
解决这个问题。
所以 - 除非您的 BIOS(而不是其他任何东西)支持在 RAM 中加载 .ISO 并使其看起来像连接到系统的另一个硬盘驱动器(没有一个支持 - 但 80 年代后期有一些 BIOS 在 ROM 中具有 DOS 等),或者您运行在启动 MS-DOS 之前执行此操作的覆盖加载器(我不知道有任何覆盖加载器或者它是否会起作用),否则您无法执行此操作。