Deployments fail when Secure Boot enabled
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MAAS |
Fix Released
|
High
|
Andres Rodriguez | ||
2.3 |
Fix Released
|
High
|
Andres Rodriguez | ||
OEM Priority Project |
New
|
Undecided
|
Unassigned | ||
curtin |
Invalid
|
Undecided
|
Unassigned | ||
dellserver |
Fix Released
|
Undecided
|
Unassigned | ||
maas-images |
Fix Released
|
Critical
|
Lee Trager | ||
shim (Ubuntu) |
Fix Released
|
High
|
Mathieu Trudel-Lapierre | ||
Bionic |
In Progress
|
High
|
Mathieu Trudel-Lapierre |
Bug Description
I've recently encountered a problem with deploying nodes on which Secure Boot is enabled. The symptoms are:
1. The node enlists and commissions fine
2. The node boots and begin deploying fine
3. After deployment completes, the node reboots
4. When booting at this point, after showing a few routine messages,
including a GRUB menu, the node displays the following text on its
screen:
error: invalid video mode specification `text'.
Booting in blind mode
Bootloader has not verified loaded image
System is compromised. halting
Disabling Secure Boot on the node enables it to boot. If this is done quickly enough, deployment will succeed.
I've encountered this problem on two systems managed by two MAAS servers: An Intel NUC DC53247HYE and a Cisco UCS C-240 M4 (VIC). One MAAS server is running 2.2.2 (6099-g8751f91-
Further observations:
* Once booted, I see that there's no kernel with a .efi.signed extension on
the hard disk. Installing such a kernel does NOT fix the problem;
however, it may be necessary to install such a kernel for a proper fix.
* If I force a boot directly through the Shim and GRUB installed on the
hard disk, the system boots correctly, even with Secure Boot enabled.
I found a copy of the error message in Shim source code, and reports of this message on Fedora as early as 2014:
* https:/
* https:/
It looks to me as if the Shim that MAAS uses for the post-deployment boot has been updated/changed to include this strict verification that the kernel is honoring Secure Boot rules; but the Shim installed to the hard disk, and used during enlistment and commissioning, does not perform this check. OTOH, I can't find any evidence of separate Shim binaries on the MAAS server.
MAAS version information from one server:
$ dpkg -l '*maas*'|cat
Desired=
| Status=
|/ Err?=(none)
||/ Name Version Architecture Description
+++-===
ii maas 2.2.2-6099-
ii maas-cert-server 0.2.30-
ii maas-cli 2.2.2-6099-
un maas-cluster-
ii maas-common 2.2.2-6099-
ii maas-dhcp 2.2.2-6099-
ii maas-dns 2.2.2-6099-
ii maas-proxy 2.2.2-6099-
ii maas-rack-
ii maas-region-api 2.2.2-6099-
ii maas-region-
un maas-region-
un python-django-maas <none> <none> (no description available)
un python-maas-client <none> <none> (no description available)
un python-
ii python3-django-maas 2.2.2-6099-
ii python3-maas-client 2.2.2-6099-
ii python3-
Related branches
- Lee Trager (community): Needs Fixing
- Steve Langasek (community): Approve
-
Diff: 143 lines (+24/-24)2 files modifiedconf/meph-v2.yaml (+8/-8)
conf/meph-v3.yaml (+16/-16)
- Andres Rodriguez (community): Approve
- Newell Jensen (community): Approve
-
Diff: 291 lines (+55/-46)3 files modifiedbin/kpack-from-image (+11/-2)
conf/meph-v2.yaml (+19/-19)
conf/meph-v3.yaml (+25/-25)
- MAAS Maintainers: Pending requested
-
Diff: 1785 lines (+1501/-2) (has conflicts)17 files modifieddebian/changelog (+10/-0)
snap/snapcraft.yaml (+9/-0)
src/maasserver/bootsources.py (+3/-0)
src/maasserver/models/tests/test_userprofile.py (+3/-0)
src/maasserver/rpc/boot.py (+5/-0)
src/maasserver/static/js/angular/controllers/tests/test_nodes_list.js (+17/-0)
src/maasserver/static/partials/ipranges.html (+17/-0)
src/maasserver/static/partials/node-details.html (+134/-0)
src/maasserver/static/partials/nodes-list.html (+1017/-0)
src/maasserver/static/partials/script-results-list.html (+76/-0)
src/maasserver/tests/test_bootsources.py (+3/-0)
src/maasserver/triggers/tests/test_websocket_listener.py (+5/-0)
src/provisioningserver/import_images/boot_resources.py (+61/-0)
src/provisioningserver/import_images/tests/test_boot_resources.py (+92/-0)
src/provisioningserver/import_images/tests/test_download_resources.py (+35/-0)
src/provisioningserver/utils/tests/test_network.py (+3/-0)
utilities/release-build (+11/-2)
- Andres Rodriguez (community): Approve
-
Diff: 27 lines (+3/-3)2 files modifiedsrc/provisioningserver/boot/tests/test_uefi_amd64.py (+1/-1)
src/provisioningserver/templates/uefi/config.local.amd64.template (+2/-2)
- Andres Rodriguez (community): Approve
- Lee Trager (community): Approve
-
Diff: 27 lines (+3/-3)2 files modifiedsrc/provisioningserver/boot/tests/test_uefi_amd64.py (+1/-1)
src/provisioningserver/templates/uefi/config.local.amd64.template (+2/-2)
Changed in maas: | |
status: | Confirmed → Incomplete |
Changed in curtin: | |
status: | New → Incomplete |
Changed in maas-images: | |
status: | New → Confirmed |
importance: | Undecided → High |
importance: | High → Critical |
Changed in maas: | |
importance: | Undecided → Critical |
milestone: | none → 2.3.0 |
Changed in maas-images: | |
status: | Confirmed → In Progress |
Changed in maas-images: | |
assignee: | nobody → Lee Trager (ltrager) |
Changed in maas: | |
status: | Confirmed → Invalid |
Changed in maas-images: | |
status: | In Progress → Fix Committed |
tags: | added: id-5a28802797729aedf99dcd37 |
Changed in maas: | |
status: | Triaged → In Progress |
affects: | grub2 (Ubuntu) → shim (Ubuntu) |
Changed in maas: | |
status: | In Progress → Fix Committed |
Changed in maas: | |
status: | Fix Committed → Fix Released |
milestone: | 2.3.0 → none |
Changed in dellserver: | |
status: | New → Fix Released |
tags: | added: oem-priority |
Setting to confirmed... this has also been reported by a customer in the field (OEM Partner) and I was investigating it for them, Rod now has also experienced this.