<domain type='kvm'>
...
<os>
<loader readonly='yes' type='pflash'>/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
<nvram template='/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd'>
...
</os>
</domain>
Once the guest is started, a copy of the NVRAM templace is made an placed under /var/lib/libvirt/qemu/nvram/$DOMAIN_VARS.fd. This then becomes part of the state of the VM.
On the QEMU commandline, you'll need to manually create a copy of the VARS file for each VM and specify the CODE and VARS as:
/usr/libexec/qemu-kvm ... \
-drive if=pflash,format=raw,readonly,file=/path/to/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=/copy/of/OVMF_VARS.fd
I'm also told that virt-install and virt-manager support for OVMF are coming real soon and the interface will be similar to the XML, allowing selection of both a CODE and template VARS files. The libvirt config file, /etc/libvirt/qemu.conf, also allows a default VARS template image to be specified per code image, so that the <nvram> entry gets filled in automatically based on the file used for the <loader> entry.
Finally, how do you tell whether you have a split or unified image for OVMF? Lacking some sort of parser, apparently the best way to tell is by file size. A unified image will be exactly 2MB while the split CODE image will be 2MB-128KB and the VARS image will be 128KB. Unsurprisingly then, you can also create a split image with dd, taking the first 128K as VARS and the rest as CODE.
Good luck.
Alex, if this can support spice, many user are use spice connect VM. Do you have plan to add spice support for this?
ReplyDeleteLook forward for your reply!