ironcore-dev / ironcore-dev/boot-operator

Unify HTTP and PXE boot flows to both use UKIs

Open
#315 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

area/metal-automation
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.