概要
EDK2 中编译出来的OVMF可以使用qemu运行验证,这也是UEFI调试的虚拟环境qemu-system-x86_64 -bios OVMF.fd
,但是在使用网络相关调试的时候,qemu就比较繁琐了,需要创建虚拟网卡,设置桥接等;Virt-manage就是一个qemu的管理器,也可以用KVM搭建虚拟环境,有完善的配置网络环境,所以想用Virt-Manage跑OVMF;
Virt-Manage UEFI其实跑的是OVMF_VARS.fd 和 OVMF_CODE.fd 而不是OVMF.fd,文件的位置是/usr/share/OVMF/
有的 Virt-Manage安装也是没有/usr/share/OVMF/
这个路径(ubuntu安装完就是这样),使用的是传统BIOS,可以手动创建路径,在Vit-Manage中选择也是可以的;
环境
x86/deepin v20/Ubuntu20.04EDK2 remotes/origin/stable/202011
安装Virt-manage
sudo apt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager
修改Virt-manage 配置
镜像存储路径:/opt/vm/默认的xml文件路径:/etc/libvirt/qemu
可以看出/usr/share/OVMF/OVMF_CODE.fd
就是启动的引导程序,这个路径是由XML中配置的,XML路径在这里/etc/libvirt/qemu/efi.xml
也可以在这里将之前的OVMF路径改成自己的路径;要重启主机才能生效;这样修改也比较麻烦,我觉得直接将替换跟方便;
搭建
打开Virt-manage,新建虚拟机,选择网络引导,因为可以不提供镜像,缺点是第一次起会很慢;
生成新虚拟机选择Ubuntu
内存给1G
硬盘也选1G足够了,应为只放一些efi文件;
添加盘
配置硬盘,一定要raw,不然起来就不是fs,只是哥blk,无法使用;
下一步,红框一点选上,这是为了在安装之前可以选择uefi启动
完成后配置,在如下红框中选择uefi;
磁盘设置
格式化磁盘,并放入文件;
mkfs -t vfat ubuntu18.04 #格式化losetup /dev/loop0 ubuntu18.04 #映射loop设备sudo mount /dev/loop0 /mnt/image #挂载loop设备......(work in mnt dir)umount /mnt/image #卸载loop设备losetup -d /dev/loop0 #解除loop映射
格式化后就变成FS0:了
磁盘一定要格式化成fat格式,不然在进入uefishell中无法识别出来,拷贝文件可以按照上面步骤进行;
编译完成后替换
sudo cp OVMF_VARS.fd OVMF_CODE.fd /usr/share/OVMF/
网络环境
网卡信息
需要一个网卡驱动,E3522X2.EFI
从这里下载http://194.116.247.242/TRUSTER/TRUSTER_SN4236/Intel/LAN/v21.1/APPS/EFI/EFIx64/E3522X2.EFI
load E3522X2.EFI
配置网络为dhcp,默认是static
ifconfig -s eth0 dhcp
查看网络配置
ifconfig -l
验证与主机的联通
连接串口
查看串口设备在Virt-manage
minicom 进行查看,配置如下
Shell> helpalias - Displays, creates, or deletes UEFI Shell aliases.attrib - Displays or modifies the attributes of files or directories.bcfg - Manages the boot and driver options that are stored in NVRAM.cd - Displays or changes the current directory.cls - Clears the console output and optionally changes the background and foreground color.comp - Compares the contents of two files on a byte-for-byte basis.connect - Binds a driver to a specific device and starts the driver.cp - Copies one or more files or directories to
总结
Virt-Manage验证UEFI是非常好用的环境,应为它与OVMF是相对应的;其实普通的验证OVMF我们用QEMU就可以了,使用Virt-Manage主要还是为了搭建网络环境,调试串口也是可以使用的,唯一不足的就是磁盘不能直接使用本地磁盘,想拷贝文件时还要mount进行;