Comment 2 for bug 1582964

Revision history for this message
Yibo Cai (cyb70289) wrote :

About "bios/uefi boot mode encoding"
====================================

In statement: pxe_bootfile_name = "def-filename" "arch2:filename2" "arch3:filename3".
"arch2","arch3" are not "x86","aarch64", but client-arch code from RFC4578(https://tools.ietf.org/html/rfc4578). The client-arch code contains both arch and boot mode information, as follows:
(copied from RFC4578)
Type Architecture Name
---- -----------------
0 Intel x86PC (BIOS)
...
6 EFI IA32
...
9 EFI x86-64
B EFI AArch64
C PowerPC64

The final statement looks like:
pxe_bootfile_name = pxelinux.0 09:bootx64.efi 0B:grubaa64.efi 0C:bootppc64.bin

About "backward compatibility"
==============================

Rather than introducing a new parameter, maybe we can extend current "pxe_bootfile_name". Its default value is still only "pxelinux.0". Arch specific extensions can be appended like upper example. Internal representation becomes a dictionary.

Add an optional property "pxe_client_arch" to Ironic node. If the node needs a arch specific bootfile, it can set this property to match arch in pxe_bootfile_name extensions.

"uefi_pxe_bootfile_name" is kept, which is "default bootfile for uefi node without pxe_client_arch specified".

By this way, looks current deployment and configurations won't be affected.

About boot template file
========================

"pxe_config_template" parameter should also be extended this way.