ironcore-dev / ironcore-dev/boot-operator
Unify HTTP and PXE boot flows to both use UKIs
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 6
- Forks
- 9
- Avg merge
- 19h 5m
- Merged PRs (30d)
- 10
Description
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
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Trace the existing HTTPBoot and IPXEBoot artifact-generation flows and the iPXE script handling. Start by comparing how each flow downloads and boots the kernel, initramfs, and rootfs; done means an iPXE script chain-loads one UKI and that UKI supports both HTTP and PXE boot paths.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- infrastructure, networking, operating-systems
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100