UEFI libvirt servers can't boot on Ubuntu 20.04 hypervisors with Ussuri/Victoria
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Invalid
|
Undecided
|
Unassigned | ||
Ussuri |
Invalid
|
Medium
|
Unassigned | ||
Victoria |
Invalid
|
Medium
|
Unassigned | ||
Ubuntu Cloud Archive |
Invalid
|
Undecided
|
Unassigned | ||
Ussuri |
Fix Released
|
High
|
Unassigned | ||
Victoria |
Fix Released
|
High
|
Unassigned | ||
nova (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
High
|
Mauricio Faria de Oliveira |
Bug Description
Impact:
===
Currently, setting `hw_firwmare_
_unbootable_ servers on 20.04 hypervisors with Ussuri
and Victoria (Wallaby and later are OK).
We should not use the Secure Boot firmware on the 'pc'
machine type, as 'q35' is _required_ by OVMF firmware
if SMM feature is built (usually the case, to actually
secure the SB feature).
[See comment #6 for research and #7 for test evidence.]
We should not use the Secure Boot firmware on the 'q35'
machine type _either_, as it might not work regardless,
since other libvirt XML options such as SMM and S3/S4
disable may be needed for Secure Boot to work, but are
_not_ configured by Openstack Ussuri (no SB support).
Approach:
===
Considering how long Focal/Ussuri have been out there
(and maybe worked with UEFI enabled for some cases?)
add a config option to _opt-in_ to actually supported
UEFI loaders for nova/libvirt.
This seems to benefit downstream/Ubuntu more (although
other distros might be affected) add the config option
"ubuntu_
in the DEFAULT libvirt config section (so it can be set
in nova-compute charm's 'config-flags' option).
Test Plan:
===
$ openstack image set --property hw_firmware_
$ openstack server create --image $IMAGE --flavor $FLAVOR --network $NETWORK uefi-server
(with patched packages:)
Set `ubuntu_
(eg `juju config nova-compute config-
$ openstack server stop uefi-server
$ openstack server start uefi-server
- Expected Result:
The server's libvirt XML uses UEFI _without_ Secure Boot.
<loader readonly='yes' type='pflash'
The guest boots, and console log confirms UEFI mode:
$ openstack console log show srv | grep -i -e efi -e bios
...
Creating boot entry "Boot0003" with label "ubuntu" for file "\EFI\ubuntu\
...
[ 0.000000] efi: EFI v2.70 by EDK II
[ 0.000000] efi: SMBIOS=0x7fbcd000 ACPI=0x7fbfa000 ACPI
[ 0.000000] SMBIOS 2.8 present.
[ 0.000000] DMI: OpenStack Foundation OpenStack Nova, BIOS 0.0.0 02/06/2015
...
- Actual Result:
The server's libvirt XML uses UEFI _with_ Secure Boot.
<loader readonly='yes' type='pflash'
The guest doesn't boot; empty console log; qemu-kvm looping at 100% CPU.
$ openstack console log show srv | grep -i -e efi -e bios
$ openstack console log show srv | wc -l
0
$ juju run --app nova-compute 'top -b -d1 -n5 | grep qemu'
67205 libvirt+ ... 100.0 1.4 1:18.35 qemu-sy+
67205 libvirt+ ... 100.0 1.4 1:19.36 qemu-sy+
67205 libvirt+ ... 99.0 1.4 1:20.36 qemu-sy+
67205 libvirt+ ... 101.0 1.4 1:21.37 qemu-sy+
67205 libvirt+ ... 100.0 1.4 1:22.38 qemu-sy+
Where problems could occur:
===
The changes are opt-in with `ubuntu_
so users are not affected by default.
Theoretically, regressions would more likely manifest and be contained
in nova's libvirt driver, when `hw_firwmare_
The expected symptoms of regressions are boot failures (server starts
from openstack perspective, but doesn't boot to the operating system).
Other Info:
===
- Hypervisor running Ubuntu 20.04 LTS (Focal)
- Nova packages from Ussuri (Ubuntu Archive) or Victoria (Cloud Archive).
Related branches
- Corey Bryant: Approve
-
Diff: 124 lines (+102/-0)3 files modifieddebian/changelog (+8/-0)
debian/patches/lp1960758-ubuntu-uefi-loader-path.patch (+93/-0)
debian/patches/series (+1/-0)
CVE References
description: | updated |
description: | updated |
tags: | added: sts |
summary: |
- UEFI guests can't boot on Ubuntu 20.04 with Ussuri/Victoria + UEFI servers can't boot on Ubuntu 20.04 with Ussuri/Victoria |
summary: |
- UEFI servers can't boot on Ubuntu 20.04 with Ussuri/Victoria + UEFI libvirt servers can't boot on Ubuntu 20.04 with Ussuri/Victoria |
summary: |
- UEFI libvirt servers can't boot on Ubuntu 20.04 with Ussuri/Victoria + UEFI libvirt servers can't boot on Ubuntu 20.04 hypervisors with + Ussuri/Victoria |
description: | updated |
description: | updated |
description: | updated |
Changed in nova: | |
status: | New → Invalid |
Changed in nova: | |
status: | Invalid → In Progress |
status: | In Progress → Invalid |
Changed in nova (Ubuntu): | |
status: | New → Invalid |
Changed in nova (Ubuntu Focal): | |
status: | New → In Progress |
importance: | Undecided → Medium |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
Changed in cloud-archive: | |
status: | New → Triaged |
status: | Triaged → In Progress |
status: | In Progress → Fix Released |
status: | Fix Released → Invalid |
Changed in nova (Ubuntu Focal): | |
importance: | Medium → High |
description: | updated |
Fix proposed to branch: stable/victoria /review. opendev. org/c/openstack /nova/+ /828978
Review: https:/