[openstack-dev] [nova] how does UEFI booting of VM manage per-instance copies of OVMF_VARS.fd ?
Jay Pipes
jaypipes at gmail.com
Thu Sep 28 16:53:16 UTC 2017
On 09/27/2017 09:09 AM, Waines, Greg wrote:
> Hey there ... a question about UEFI booting of VMs.
>
> i.e.
>
> glance image-create --file cloud-2730. qcow --disk-format qcow2
> --container-format bare --property “hw-firmware-type=uefi” --name
> clear-linux-image
>
> in order to specify that you want to use UEFI (instead of BIOS) when
> booting VMs with this image
>
> i.e. /usr/share/OVMF/OVMF_CODE.fd
>
> /usr/share/OVMF/OVMF_VARS.fd
>
> and I believe you can boot into the UEFI Shell, i.e. to change UEFI
> variables in NVRAM (OVMF_VARS.fd) by
>
> booting VM with /usr/share/OVMF/UefiShell.iso in cd ...
>
> e.g. to changes Secure Boot keys or something like that.
>
> My QUESTION ...
>
> ·how does NOVA manage a unique instance of OVMF_VARS.fd for each instance ?
>
> oi believe OVMF_VARS.fd is suppose to just be used as a template, and
> is supposed to be copied to make a unique instance for each VM that UEFI
> boots
>
> ohow does NOVA manage this ?
>
> §e.g. is the unique instance of OVMF_VARS.fd created in
> /etc/nova/instances/<UUID>/ ?
>
> o... and does this get migrated to another compute if VM is migrated ?
Hi Greg,
I think the following part of the code essentially sums up what you're
experiencing [1]:
LOG.warning("uefi support is without some kind of "
"functional testing and therefore "
"considered experimental.")
[1]
https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L4530-L4532
From what I can tell, the bootloader is hardcoded to
"/usr/share/OVMF/OVMF_CODE.fd" for x86_64:
https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L130
https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L4534-L4535
and I see no way to change it via a configuration variable...
Yet another half-baked, completely untested "feature" added to Nova. :(
-jay
More information about the OpenStack-dev
mailing list