unable to find any master var store for loader error

Michal Privoznik mprivozn at redhat.com
Tue Oct 13 11:51:55 UTC 2020


On 10/12/20 10:52 PM, daggs wrote:
> Greetings,
> 
> I have the following machine: https://dpaste.com/5BPA3F77F which I'm trying to boot in uefi.
> /etc/libvirt/qemu.conf looks like this: https://dpaste.com/B3SFHUY6R and the ovmf files exists in the path, see:
> # ll /usr/share/edk2-ovmf/OVMF_CODE.fd /usr/share/edk2-ovmf/OVMF_VARS.fd /usr/share/edk2-ovmf/OVMF_CODE.secboot.fd /usr/share/edk2-ovmf/OVMF_VARS.secboot.fd
> -rw-r--r-- 1 root root 1966080 Aug 21 14:32 /usr/share/edk2-ovmf/OVMF_CODE.fd
> -rw-r--r-- 1 root root 1966080 Aug 21 14:32 /usr/share/edk2-ovmf/OVMF_CODE.secboot.fd
> -rw-r--r-- 1 root root  131072 Aug 21 14:32 /usr/share/edk2-ovmf/OVMF_VARS.fd
> -rw-r--r-- 1 root root  131072 Aug 21 14:32 /usr/share/edk2-ovmf/OVMF_VARS.secboot.fd
> 
> when I try to start the machine, I get this error:
> error: Failed to start domain vm1
> error: operation failed: unable to find any master var store for loader: /usr/share/edk2-ovmf/OVMF_CODE.fd
> 
> libvirt version is 6.7.0 and qemu version is 5.1.0
> 
> any idea how to fix this issue?

Hey,

I'll paste the interesting part of domain XML here so that it doesn't 
get lost:

   <os>
     <type arch='x86_64' machine='pc-q35-5.0'>hvm</type>
     <loader readonly='yes' 
type='pflash'>/usr/share/edk2-ovmf/OVMF_CODE.fd</loader>
     <nvram>/var/lib/libvirt/qemu/nvram/vm1_VARS.fd</nvram>
     <boot dev='hd'/>
   </os>

And then in qemu.conf you define the pair:

nvram = [
	"/usr/share/edk2-ovmf/OVMF_CODE.fd:/usr/share/edk2-ovmf/OVMF_VARS.fd",
	"/usr/share/edk2-ovmf/OVMF_CODE.secboot.fd:/usr/share/edk2-ovmf/OVMF_VARS.secboot.fd"
]

But as the comment in qemu.conf (just above your line) says, this is 
ignored if FW metadata files exist which is exactly your case and this bug:

https://bugzilla.redhat.com/show_bug.cgi?id=1763477

For your convenience you can switch to <os firmware='efi'/> (the 
<loader/> element will be removed automatically) or if you insist on 
using the old style then provide @template attribute to <nvram/>:

<nvram 
template="/usr/share/edk2-ovmf/OVMF_CODE.fd">/var/lib/libvirt/qemu/nvram/vm1_VARS.fd</nvram>


There is an internal list that is still consulted when finding matching 
_VARS fails, but your path is not on it:

https://gitlab.com/libvirt/libvirt/-/blob/master/src/qemu/qemu_conf.c#L98

But it exists mostly to give distros enough time to switch to FW 
descriptors.

Michal




More information about the libvirt-users mailing list