JobPlus知识库 IT 网络硬件 文章
UEFI开发与调试---利用QEMU虚拟盘调试UEFI APP

由前文我们知道如何制作qemu虚拟盘了,那么对于UEFI的开发者,也可以通过虚拟盘来模拟启动过程,或者方便自己uefi app的调试。当我们制作好了虚拟盘之后,后续可以通过编译生成uefi app,然后把app放到虚拟盘中并更新,即可快速调试和验证,这种方式的优点是不用重复编译整个UEFI OVMF系统。

QEMU可以支持很多种文件格式,下面将以qcow2和raw两种格式的镜像为例进行讲解。需要特别注意的是,UEFI能识别到的文件系统类型比较有限,我们建议格式化镜像时都使用VFAT格式。注意这里的VFAT和前面说的qcow2和raw并不冲突,两者一个是镜像中的文件系统,一个是镜像的封装格式。

  • qcow2格式的镜像文件

sudo modprobe nbd max_part=16

qemu-img create -f qcow2 hda.img 10M  #创建qcow2虚拟盘

sudo qemu-nbd -c /dev/nbd0 ~/hda.img    #映射nbd设备

mkfs -t vfat /dev/nbd0                           #格式化该设备为vfat格式

sudo mount /dev/nbd0 /mnt/image        #挂载nbd设备


......(work in mnt dir)

sudo umount /mnt/image                       #卸载nbd设备            

sudo qemu-nbd -d /dev/nbd0               #解除nbd映射


  • 采用dd命令生成的镜像文件(raw镜像)

dd if=/dev/zero of=~/hda.img bs=1 count=10M 

mkfs -t vfat ~/hda.img 

losetup /dev/loop0 ~/hda.img  #映射loop设备

sudo mount /dev/loop0 /mnt/image  #挂载loop设备


......(work in mnt dir) 

umount /mnt/image              #卸载loop设备

losetup -d /dev/loop0           #解除loop映射


  • 使用qemu加载对应的虚拟盘

这里我们使用虚拟OVMF.fd作为uefi调试固件:

qemu-system-x86_64  -bios  "path/to/OVMF.fd" -hda hda.img


运行的效果图如下: 


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
39人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序