[libvirt] On the content of 'nvram' section in /etc/libvirt/qemu.conf

Cole Robinson crobinso at redhat.com
Tue Apr 16 21:07:30 UTC 2019


On 4/16/19 12:50 PM, Kashyap Chamarthy wrote:
> I learnt from Dan Berrangé that the 'nvram' section in
> `/etc/libvirt/qemu.conf` will now go away in light of all the work done
> in QEMU ('firmware.json', et al) and libvirt (the firmware
> auto-selection).  
> 
> But for my own education, can anyone confirm that the current content of
> 'nvram' is out of date in terms of mapping of OVMF binaries to their
> corresponding variable store ("VARS") files?
> 
> Let's see what I mean.
> 
> On my Fedora 29 box, in `/etc/libvirt/qemu.conf`, I see the following
> mapping of OVMF binaries to their correspoindg "VARS" file under the
> 'nvram' section:
> 
>     #nvram = [
>     #   "/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd",
>     #   "/usr/share/OVMF/OVMF_CODE.secboot.fd:/usr/share/OVMF/OVMF_VARS.fd",
>     #   "/usr/share/AAVMF/AAVMF_CODE.fd:/usr/share/AAVMF/AAVMF_VARS.fd",
>     #   "/usr/share/AAVMF/AAVMF32_CODE.fd:/usr/share/AAVMF/AAVMF32_VARS.fd"
>     #]
>
> Now let's enumerate the content of 'edk2-ovmf' package:
> 
>     $> rpm -ql edk2-ovmf
>     /usr/share/OVMF
>     /usr/share/OVMF/OVMF_CODE.fd
>     /usr/share/OVMF/OVMF_CODE.secboot.fd
>     /usr/share/OVMF/OVMF_VARS.fd
>     /usr/share/OVMF/OVMF_VARS.secboot.fd
>     /usr/share/OVMF/UefiShell.iso
>     /usr/share/doc/edk2-ovmf
>     /usr/share/doc/edk2-ovmf/README
>     /usr/share/doc/edk2-ovmf/ovmf-whitepaper-c770f8c.txt
>     /usr/share/edk2
>     /usr/share/edk2/ovmf
>     /usr/share/edk2/ovmf/EnrollDefaultKeys.efi
>     /usr/share/edk2/ovmf/OVMF_CODE.fd
>     /usr/share/edk2/ovmf/OVMF_CODE.secboot.fd
>     /usr/share/edk2/ovmf/OVMF_VARS.fd
>     /usr/share/edk2/ovmf/OVMF_VARS.secboot.fd
>     /usr/share/edk2/ovmf/Shell.efi
>     /usr/share/edk2/ovmf/UefiShell.iso
>     /usr/share/licenses/edk2-ovmf
>     /usr/share/licenses/edk2-ovmf/LICENSE.openssl
>     /usr/share/licenses/edk2-ovmf/License.txt
> 
> There is the /usr/share/edk2/ovmf/OVMF_VARS.secboot.fd file (which comes
> with the default UEFI keys enrolled).
> 
> So, the mapping of OVMF binary to VARS file in the earlier mentioned
> 'nvram' section should have been:
> 
>     /usr/share/OVMF/OVMF_CODE.secboot.fd:/usr/share/edk2/ovmf/OVMF_VARS.secboot.fd
> 
> Yes?
> 

Unfortunately the qemu.conf comment is not authoritatize. I believe
that's the default value hardcoded in libvirt, but it can also be
changed with a build time flag, which we do for fedora. The spec file
has this change:

%if 0%{?fedora}
    # Nightly edk2.git-ovmf-x64

LOADERS="/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd:/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd"
    # Nightly edk2.git-ovmf-ia32

LOADERS="$LOADERS:/usr/share/edk2.git/ovmf-ia32/OVMF_CODE-pure-efi.fd:/usr/share/edk2.git/ovmf-ia32/OVMF_VARS-pure-efi.fd"
    # Nightly edk2.git-aarch64

LOADERS="$LOADERS:/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2.git/aarch64/vars-template-pflash.raw"
    # Nightly edk2.git-arm

LOADERS="$LOADERS:/usr/share/edk2.git/arm/QEMU_EFI-pflash.raw:/usr/share/edk2.git/arm/vars-template-pflash.raw"

    # Fedora edk2-ovmf

LOADERS="$LOADERS:/usr/share/edk2/ovmf/OVMF_CODE.fd:/usr/share/edk2/ovmf/OVMF_VARS.fd"
    # Fedora edk2-ovmf-ia32

LOADERS="$LOADERS:/usr/share/edk2/ovmf-ia32/OVMF_CODE.fd:/usr/share/edk2/ovmf-ia32/OVMF_VARS.fd"
    # Fedora edk2-aarch64

LOADERS="$LOADERS:/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2/aarch64/vars-template-pflash.raw"
    # Fedora edk2-arm

LOADERS="$LOADERS:/usr/share/edk2/arm/QEMU_EFI-pflash.raw:/usr/share/edk2/arm/vars-template-pflash.raw"
    %define arg_loader_nvram --with-loader-nvram="$LOADERS"
%endif

So that's 8 pairs that we look for in fedora. That default commented out
value is probably what we use on RHEL with standard RHEL packaging

- Cole




More information about the libvir-list mailing list