On 04/15/16 10:45, Philip Abernethy wrote:
> I'm using extra/ovmf on my machine and just had to add
> nvram = [
Ouch. That hurt. A lot.
- Elements in the nvram list are pairs.
- Each pair has a first component, and a second component.
- The first component is a firmware binary.
- The second component is a variable store template that is compatible
with the firmware binary in the first component.
- When you create a new virtual machine with libvirt, you specify the
firmware binary that you want to use. This is a selection from the
- Libvirt will map your selection to the second component (the varstore
template that is compatible with the firmware binary that you
- For the new VM, it will create a copy of that varstore template.
- This copy is called the VM's own private variable store. Generally, it
lives under /var/lib/libvirt/qemu/nvram/.
- The VM will use the firmware binary (= first component) directly.
- The VM will never use the varstore template (= second component). It
will use its own private varstore, which came into existence as a copy
of the varstore template (= second component).
- When you upgrade your OVMF package, the VM will pick up the upgraded
firmware binary the next time it is shut down and relaunched. The VM's
private varstore will not be affected by the package upgrade in any
way. That's the *entire point* of the split files scheme.
For example, on my laptop, I have
nvram = [
* If I pick the
firmware binary (which is the first component of the 4th element),
then libvirt will map it to the
variable store template (which is the second component of the 4th
element). Then the new VM's own varstore will be created as a copy of
* If I pick
(1st component of the 7th element) then libvirt will map it to the
varstore template (2nd component of the 7th element). The new VM's own
varstore will be then created as a copy of this latter file.
* Assuming that on an ArchLinux host, you have the following two files:
/usr/share/ovmf/x64/ovmf_code_x64.bin -- firmware binary
/usr/share/ovmf/x64/ovmf_vars_x64.bin -- varstore template that is
compatible with the above
Your nvram list should look like:
nvram = [
* If you use Gerd's "edk2.git-ovmf-x64" package, then:
nvram = [
and when you create a new VM, you should pick the first one:
unless you have specific reasons for picking the second or the third.