我需要在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?
我对这一切感到困惑,如果有更多知识渊博的人能以友好的方式帮助我,我会非常感激。
答案 0 :(得分:1)
对于汇编文件,您需要知道它们的汇编程序。如果它们是nasm
那么你很幸运,它可以直接为你写一个com
文件(它只是一个平面二进制文件,所以使用-f bin
)。
要将其导入qemu,您需要使用一些允许操作原始磁盘映像的工具,例如mtools。您应该创建并格式化图像(简单的软盘),然后将您的com文件复制到其上。然后你可以将它作为qemu中的第二个软盘驱动器附加。如果dos磁盘中有足够的空间,您当然可以将com文件复制到该映像中。
如果你有自己的启动记录,你可以将它作为平面二进制文件发出并将其作为磁盘映像传递给qemu(确保它被填充到512字节的倍数,除了qemu不是非常挑剔关于大小)。这假设您不需要文件系统,因为那时您必须以某种方式替换引导扇区。如果所有其他方法都失败了,您可以抓取dd
的Windows端口。