Support for grub upgrades with bios+uefi bootloader targets
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
grub-installer (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
New
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Unassigned | ||
grub2 (Ubuntu) |
Fix Released
|
Undecided
|
Łukasz Zemczak | ||
Xenial |
New
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Łukasz Zemczak | ||
grub2-signed (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
New
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Unassigned | ||
shim-signed (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
New
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Unassigned | ||
ubiquity (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
New
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Łukasz Zemczak |
Bug Description
[Impact]
There are multiple use cases which require both BIOS and UEFI bootloaders installed on a target image and to keep them both updated.
- cloud images on clouds that support both BIOS and UEFI boot in alternate instance types
- PC installs that should remain bootable in the face of firmware upgrades or reconfigurations
This currently doesn't work because 'grub-install' selects its install target based on which of grub-pc or grub-efi-amd64 is installed.
In cosmic we have introduced a --auto-nvram grub-install option that automatically determines if we're running with NVRAM access or not and if yes, updates the NVRAM contents. This allows such dual BIOS-UEFI bootloader setups to work. Same changes are required to be backported to bionic for our cloud images.
[Test Case]
Basic grub2 grub-install test:
* Boot up a bionic system in UEFI mode.
* Upgrade grub2-common to the version in -proposed.
* Run `grub-install --target=x86_64-efi --auto-nvram` and make sure it succeeds.
* Prepare a system with an UEFI installed system that can be booted into in legacy BIOS mode.
* Boot up the UEFI-installed bionic system in legacy BIOS mode.
* Upgrade grub2-common to the version in -proposed.
* Run `grub-install --target=x86_64-efi --auto-nvram` and make sure it succeeds (actually not doing anything).
Install test for UEFI (repeat for both server-live, server and desktop):
* Download the latest bionic -proposed-enabled image.
* Make sure the image includes the -proposed version of grub2, grub2-signed, shim-signed and grub-installer (and/or ubiquity).
* Install the system normally on an EFI system.
* Reboot and make sure the system is bootable.
Install test for legacy BIOS (repeat for both server-live, server and desktop):
* Download the latest bionic -proposed-enabled image.
* Make sure the image includes the -proposed version of grub2, grub2-signed, shim-signed and grub-installer (and/or ubiquity).
* Install the system normally on a BIOS system.
* Reboot and make sure the system is bootable.
TODO: Add cloud image testing.
[Regression Potential]
The backport introduces a change in the dependency chain for grub which, in some cases, can lead to systems loosing their ability to boot. Basically the symptoms to look for is the inability of booting the installed system on EFI or BIOS. A lot of testing and dogfooding will be required to make sure no installation-case has been broken by this.
Related branches
Changed in grub2 (Ubuntu Bionic): | |
status: | New → Confirmed |
assignee: | nobody → Łukasz Zemczak (sil2100) |
tags: | added: id-5a70e785e0d5f12fa35368a0 |
Changed in ubiquity (Ubuntu Bionic): | |
assignee: | nobody → Łukasz Zemczak (sil2100) |
status: | New → In Progress |
description: | updated |
description: | updated |
Performing some test builds before submitting packages to the SRU queue: https:/ /launchpad. net/~ci- train-ppa- service/ +archive/ ubuntu/ 3308/+packages