qemu,从主机到DOS获取文件,并运行引导加载程序

时间:2014-04-06 20:50:06

标签: assembly windows-xp qemu

我需要在QEMU中专门运行一些.com文件和一个引导加载程序。 我正在使用0.9.0版本的Qemu运行Win XP机器。

对于.com文件,我下载了MS-DOS 6.22 img,然后根据本教程: http://gunkies.org/wiki/Installing_MS-DOS_on_Qemu 我跑了命令:

qemu-img create -f qcow msdos.disk 128M

但是它只是创建大小为1KB的msdos.disk文件。

然后我运行了这个命令:

qemu -hda msdos.disk -m 64 -L . -fda dos622.img -boot a

在指南中说它应该启动某种安装,但它实际上可以为我知道的所有内容提供MS-DOS。它给了我一个命令行,其中我尝试了dir,它显示了一些名为MOUSE.EXE等的.com和.exe文件,好像那些是某种驱动程序。

我已经谷歌搜索了一段时间,我找到的只是一堆Linux指南。

首先,我需要编译一些以org 100h(。com文件)开头的.asm文件,然后在DOS中编写它们。所以我想我编译它们来生成.o.bin文件。但接下来呢?如何从Win XP中将它们放入虚拟Qemu DOS机器中?

还有第二件事,当我准备好asm代码时,如何运行手写的bootloader?我会以某种方式将它编译成某种.img吗?如何让Qemu运行我的bootloader?

我对这一切感到困惑,如果有更多知识渊博的人能以友好的方式帮助我,我会非常感激。

1 个答案:

答案 0 :(得分:1)

对于汇编文件,您需要知道它们的汇编程序。如果它们是nasm那么你很幸运,它可以直接为你写一个com文件(它只是一个平面二进制文件,所以使用-f bin)。

要将其导入qemu,您需要使用一些允许操作原始磁盘映像的工具,例如mtools。您应该创建并格式化图像(简单的软盘),然后将您的com文件复制到其上。然后你可以将它作为qemu中的第二个软盘驱动器附加。如果dos磁盘中有足够的空间,您当然可以将com文件复制到该映像中。

如果你有自己的启动记录,你可以将它作为平面二进制文件发出并将其作为磁盘映像传递给qemu(确保它被填充到512字节的倍数,除了qemu不是非常挑剔关于大小)。这假设您不需要文件系统,因为那时您必须以某种方式替换引导扇区。如果所有其他方法都失败了,您可以抓取dd的Windows端口。