[feature] Add ability to select the BIOS boot method for IPMI - To address issues with newer firmware.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MAAS |
Fix Released
|
Medium
|
Andres Rodriguez | ||
2.3 |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Using HP DL380 Gen9 server with iLO FW 2.55 Aug 16 2017
Sending a commission statement from MAAS works fine. However when a deploy issued from MAAS, the ipmipower command being sent is causing HP to force a 1 time Legacy Boot Mode over PXE.
On the Remote Console the message ... appears
"298-IMPORTANT: The Boot Mode has been changed to Legacy Boot Mode for this boot only. On the next reboot, the Boot Mode will return to UEFI Boot Mode. Action: No action required."
This is causing nodes to not deploy that have a GPT partition table set with /boot/efi configured. Specifically it gives the following message ...
cloud-init[3081]: Unexpected error while running command.
cloud-init[3081]: Command: ['sh', '-c', 'exec "$0" "$@" 2>&1', 'install-grub', '/tmp/tmpsbfxj9
cloud-init[3081]: Exit code: 1
cloud-init[3081]: Reason: -
cloud-init[3081]: Stdout: + pkg=grub-pc
cloud-init[3081]: + shift
cloud-init[3081]: + dpkg-reconfigure grub-pc
cloud-init[3081]: Replacing config file /etc/default/grub with new version
cloud-init[3081]: Generating grub configuration file ...
cloud-init[3081]: Found linux image: /boot/vmlinuz-
cloud-init[3081]: Found initrd image: /boot/initrd.
cloud-init[3081]: done
cloud-init[3081]: + update-grub
cloud-init[3081]: Generating grub configuration file ...
cloud-init[3081]: Found linux image: /boot/vmlinuz-
cloud-init[3081]: Found initrd image: /boot/initrd.
cloud-init[3081]: done
cloud-init[3081]: + grub-install /dev/sda
cloud-init[3081]: Installing for i386-pc platform.
cloud-init[3081]: grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
cloud-init[3081]: grub-install: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
cloud-init[3081]: grub-install: error: will not proceed with blocklists.
cloud-init[3081]: + exit
cloud-init[3081]: failed to install grub!
cloud-init[3081]:
cloud-init[3081]: Stderr: ''
cloud-init[3081]: curtin: Installation failed with exception: Unexpected error while running command.
cloud-init[3081]: Command: ['curtin', 'curthooks']
cloud-init[3081]: Exit code: 3
We believe this is the same situation as bug https:/
To fix this, editing /usr/lib/
in the Chassis_Boot_Flags sections and then restarting maas-rackd resolves this issue.
diff --git a/src/provision
index 9ef5ba4..e531dd4 100644
--- a/src/provision
+++ b/src/provision
@@ -35,6 +35,7 @@ IPMI_CONFIG = """\
Section Chassis_Boot_Flags
+ BIOS_Boot_Type EFI
EndSection
"""
Related branches
- Blake Rouse (community): Approve
-
Diff: 336 lines (+155/-11)7 files modifiedsrc/maasserver/api/tests/test_enlistment.py (+1/-0)
src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect.py (+19/-5)
src/metadataserver/user_data/templates/snippets/tests/test_maas_ipmi_autodetect.py (+23/-0)
src/provisioningserver/drivers/power/ipmi.py (+44/-4)
src/provisioningserver/drivers/power/tests/test_ipmi.py (+61/-1)
src/provisioningserver/refresh/maas_api_helper.py (+6/-1)
src/provisioningserver/refresh/tests/test_maas_api_helper.py (+1/-0)
- Andres Rodriguez (community): Approve
-
Diff: 117 lines (+22/-11)5 files modifiedsrc/maasserver/api/tests/test_enlistment.py (+1/-1)
src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect.py (+2/-2)
src/metadataserver/user_data/templates/snippets/tests/test_maas_ipmi_autodetect.py (+2/-2)
src/provisioningserver/drivers/power/ipmi.py (+14/-5)
src/provisioningserver/drivers/power/tests/test_ipmi.py (+3/-1)
- MAAS Lander: Needs Fixing
- Newell Jensen: Pending requested
-
Diff: 117 lines (+22/-11)5 files modifiedsrc/maasserver/api/tests/test_enlistment.py (+1/-1)
src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect.py (+2/-2)
src/metadataserver/user_data/templates/snippets/tests/test_maas_ipmi_autodetect.py (+2/-2)
src/provisioningserver/drivers/power/ipmi.py (+14/-5)
src/provisioningserver/drivers/power/tests/test_ipmi.py (+3/-1)
- MAAS Lander: Needs Fixing
- Newell Jensen (community): Approve
-
Diff: 116 lines (+21/-11)5 files modifiedsrc/maasserver/api/tests/test_enlistment.py (+1/-1)
src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect.py (+2/-2)
src/metadataserver/user_data/templates/snippets/tests/test_maas_ipmi_autodetect.py (+2/-2)
src/provisioningserver/drivers/power/ipmi.py (+13/-5)
src/provisioningserver/drivers/power/tests/test_ipmi.py (+3/-1)
- MAAS Maintainers: Pending requested
-
Diff: 335 lines (+154/-11)7 files modifiedsrc/maasserver/api/tests/test_enlistment.py (+1/-0)
src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect.py (+19/-5)
src/metadataserver/user_data/templates/snippets/tests/test_maas_ipmi_autodetect.py (+23/-0)
src/provisioningserver/drivers/power/ipmi.py (+43/-4)
src/provisioningserver/drivers/power/tests/test_ipmi.py (+61/-1)
src/provisioningserver/refresh/maas_api_helper.py (+6/-1)
src/provisioningserver/refresh/tests/test_maas_api_helper.py (+1/-0)
- Newell Jensen (community): Approve
- MAAS Lander: Approve
-
Diff: 325 lines (+144/-11)7 files modifiedsrc/maasserver/api/tests/test_enlistment.py (+1/-0)
src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect.py (+19/-5)
src/metadataserver/user_data/templates/snippets/tests/test_maas_ipmi_autodetect.py (+23/-0)
src/provisioningserver/drivers/power/ipmi.py (+35/-4)
src/provisioningserver/drivers/power/tests/test_ipmi.py (+59/-1)
src/provisioningserver/refresh/maas_api_helper.py (+6/-1)
src/provisioningserver/refresh/tests/test_maas_api_helper.py (+1/-0)
Changed in maas: | |
milestone: | none → 2.4.x |
status: | New → Triaged |
summary: |
- PXE boot on HP DL380 Gen9 is forced into a one time Legacy Boot Mode + [feature] PXE boot on HP DL380 Gen9 is forced into a one time Legacy + Boot Mode |
Changed in maas: | |
milestone: | 2.4.x → none |
tags: | added: feature internal wishlist |
Changed in maas: | |
assignee: | nobody → Andres Rodriguez (andreserl) |
Changed in maas: | |
status: | Triaged → In Progress |
milestone: | none → 2.4.0beta1 |
Changed in maas: | |
importance: | Undecided → Medium |
Changed in maas: | |
status: | In Progress → Fix Committed |
Changed in maas: | |
status: | Fix Committed → Fix Released |
tags: | added: 4010 |
The IPMI spec for boot options has two choices - either a system boots from EFI, or from PC Compatible (BIOS). See 'boot flags' in Table 28 from [1]. There is no way via IPMI to say "boot from BIOS/EFI according to how to the system's firmware is configured".
MAAS doesn't set anything, so freeipmi uses the default which is to tell the system to boot from BIOS.
The fix for this is to make MAAS aware of whether systems are BIOS or EFI, and to tell EFI systems to boot from EFI using the BIOS_Boot_Type field Jeff posted in the description.
[1] https:/ /www.intel. com/content/ dam/www/ public/ us/en/documents /product- briefs/ ipmi-second- gen-interface- spec-v2- rev1-1. pdf