Unify HTTP and PXE boot flows to both use UKIs

Abierto
#315 2 comentarios 1 reacción 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
go

Línea de trabajo

Rastrea los flujos existentes de generación de artefactos de HTTPBoot e IPXEBoot y el manejo de scripts de iPXE. Empieza comparando cómo cada flujo descarga e inicia el kernel, initramfs y rootfs; se considera terminado cuando un script de iPXE carga en cadena un UKI y ese UKI admite tanto rutas de arranque HTTP como PXE.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area/metal-automation

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

Lenguaje dominante
Go
Estrellas
6
Forks
9
Merge medio
2 d 14 h
PR fusionados (30 d)
9

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ironcore-dev/boot-operator

Todos los issues de ironcore-dev/boot-operator

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.