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

运行的效果图如下:
UEFI开发与调试---利用QEMU虚拟盘调试UEFI APP_第1张图片

你可能感兴趣的:(UEFI开发和调试)