概要

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

v虚拟机 UEFI和BIOS uefi 虚拟化_串口

可以看出/usr/share/OVMF/OVMF_CODE.fd就是启动的引导程序,这个路径是由XML中配置的,XML路径在这里/etc/libvirt/qemu/efi.xml也可以在这里将之前的OVMF路径改成自己的路径;要重启主机才能生效;这样修改也比较麻烦,我觉得直接将替换跟方便;

搭建

打开Virt-manage,新建虚拟机,选择网络引导,因为可以不提供镜像,缺点是第一次起会很慢;

v虚拟机 UEFI和BIOS uefi 虚拟化_v虚拟机 UEFI和BIOS_02

生成新虚拟机选择Ubuntu

v虚拟机 UEFI和BIOS uefi 虚拟化_串口_03

内存给1G

v虚拟机 UEFI和BIOS uefi 虚拟化_v虚拟机 UEFI和BIOS_04

硬盘也选1G足够了,应为只放一些efi文件;

v虚拟机 UEFI和BIOS uefi 虚拟化_v虚拟机 UEFI和BIOS_05

添加盘

v虚拟机 UEFI和BIOS uefi 虚拟化_运维_06

配置硬盘,一定要raw,不然起来就不是fs,只是哥blk,无法使用;

v虚拟机 UEFI和BIOS uefi 虚拟化_运维_07

下一步,红框一点选上,这是为了在安装之前可以选择uefi启动

v虚拟机 UEFI和BIOS uefi 虚拟化_运维_08

完成后配置,在如下红框中选择uefi;

v虚拟机 UEFI和BIOS uefi 虚拟化_v虚拟机 UEFI和BIOS_09

磁盘设置

格式化磁盘,并放入文件;

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:了

v虚拟机 UEFI和BIOS uefi 虚拟化_运维_10

磁盘一定要格式化成fat格式,不然在进入uefishell中无法识别出来,拷贝文件可以按照上面步骤进行;

编译完成后替换

sudo cp OVMF_VARS.fd OVMF_CODE.fd /usr/share/OVMF/

网络环境

网卡信息

v虚拟机 UEFI和BIOS uefi 虚拟化_运维_11

需要一个网卡驱动,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

v虚拟机 UEFI和BIOS uefi 虚拟化_串口_12

验证与主机的联通

v虚拟机 UEFI和BIOS uefi 虚拟化_串口_13

连接串口

查看串口设备在Virt-manage

v虚拟机 UEFI和BIOS uefi 虚拟化_linux_14

minicom 进行查看,配置如下

v虚拟机 UEFI和BIOS uefi 虚拟化_linux_15

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进行;