Currently, building images that support both boot flows requires four separate artifacts:
- kernel
- initramfs
- rootfs
- uki
However, the UKI is just a specific format of an executable EFI binary that contains the kernel, initramfs, rootfs which the PXE flow requires. Since our PXE flow relies on iPXE anyway, we could also use iPXE to just chain a second EFI binary which happens to be a UKI. The result would be that our images contain just a single UKI layer that can be used to boot via HTTP and (i)PXE.
Why not load the UKI directly via PXE? PXE uses TFTP which is slow and can be brittle, by only downloading the iPXE binary and a script that step stays quick and iPXE then uses HTTP to download the much larger UKI binary. We could also experiment with downloading the UKI via PXE directly, it might be reliable and fast enough to download a full UKI which usually sits at a few hundred megabytes.
What would you like to be added:
An iPXE scripts which downloads a single UKI that it chain-loads instead of downloading the artifacts separately and booting them.
/cc @damyan @hardikdr
Currently, building images that support both boot flows requires four separate artifacts:
However, the UKI is just a specific format of an executable EFI binary that contains the kernel, initramfs, rootfs which the PXE flow requires. Since our PXE flow relies on iPXE anyway, we could also use iPXE to just chain a second EFI binary which happens to be a UKI. The result would be that our images contain just a single UKI layer that can be used to boot via HTTP and (i)PXE.
Why not load the UKI directly via PXE? PXE uses TFTP which is slow and can be brittle, by only downloading the iPXE binary and a script that step stays quick and iPXE then uses HTTP to download the much larger UKI binary. We could also experiment with downloading the UKI via PXE directly, it might be reliable and fast enough to download a full UKI which usually sits at a few hundred megabytes.
What would you like to be added:
An iPXE scripts which downloads a single UKI that it chain-loads instead of downloading the artifacts separately and booting them.
/cc @damyan @hardikdr