┌─────────────────────────────────────────────────────────────────┐
│ PhoenixBoot System │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Direct │ │ Container │ │ Systemd │ │
│ │ Execution │ │ Execution │ │ (Quadlet) │ │
│ │ ./pf.py │ │ docker/ │ │ systemctl │ │
│ │ │ │ podman │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ └──────────────────┴──────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────┐ │
│ │ Task Runner (pf.py) │ │
│ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────────────────────┐
│ Container Network │
│ (phoenixboot-net) │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌────────────┐ │
│ │ Build │ │ Test │ │ Installer │ │ Runtime │ │
│ │ Container │ │ Container │ │ Container │ │ Container │ │
│ │ │ │ │ │ │ │ │ │
│ │ EDK2 │ │ QEMU │ │ ESP Tools │ │ efibootmgr │ │
│ │ GCC/Make │ │ OVMF │ │ ISO Tools │ │ mokutil │ │
│ │ Build Tools │ │ Test Tools │ │ Partition │ │ EFI Access │ │
│ │ │ │ │ │ Tools │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └────────────┘ │
│ │ │ │ │ │
│ └────────────────┴──────────────────┴───────────────┘ │
│ │ │
│ ┌─────────▼─────────┐ │
│ │ TUI Container │ │
│ │ (Interactive) │ │
│ │ │ │
│ │ Textual/Rich │ │
│ │ Task Execution │ │
│ │ Output Display │ │
│ └───────────────────┘ │
└───────────────────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────┐
│ Host Filesystem │
│ (Mounted Volumes) │
│ │
│ /phoenixboot │
│ /phoenixboot/out │
│ /phoenixboot/keys │
└───────────────────────┘
┌─────────────┐
│ User │
└──────┬──────┘
│
│ make run-build
│ OR docker compose --profile build up
│
▼
┌──────────────────────────┐
│ Build Container │
│ │
│ 1. Load source from │◄──── /phoenixboot (mounted)
│ staging/src/ │
│ │
│ 2. Compile with EDK2 │
│ gcc, make, nasm │
│ │
│ 3. Package artifacts │
│ │
│ 4. Write output │────► /phoenixboot/out (mounted)
│ │
└──────────────────────────┘
│
▼
┌──────────────────────────┐
│ out/staging/ │
│ - NuclearBootEdk2.efi │
│ - UUEFI.efi │
│ - KeyEnrollEdk2.efi │
└──────────────────────────┘
┌─────────────┐
│ User │
└──────┬──────┘
│
│ make run-test
│
▼
┌──────────────────────────┐
│ Test Container │
│ │
│ 1. Load artifacts │◄──── /phoenixboot/out
│ from out/ │
│ │
│ 2. Start QEMU with │◄──── /phoenixboot/ovmf_stuff
│ OVMF firmware │
│ │
│ 3. Boot and validate │
│ │
│ 4. Generate reports │────► /phoenixboot/out/qemu
│ (JUnit XML) │
│ │
└──────────────────────────┘
│
▼
┌──────────────────────────┐
│ out/qemu/ │
│ - serial*.log │
│ - report*.xml │
└──────────────────────────┘
┌─────────────┐
│ User │
└──────┬──────┘
│
│ ISO_PATH=/path/to.iso make run-installer
│
▼
┌──────────────────────────┐
│ Installer Container │
│ │
│ 1. Load artifacts │◄──── /phoenixboot/out
│ and keys │ /phoenixboot/keys
│ │
│ 2. Create ESP image │
│ (FAT32 partition) │
│ │
│ 3. Integrate ISO │◄──── ISO_PATH (env var)
│ (optional) │
│ │
│ 4. Package bootable │────► /phoenixboot/out/esp
│ media │
│ │
└──────────────────────────┘
│
▼
┌──────────────────────────┐
│ out/esp/ │
│ - secureboot-*.img │
│ - esp.img │
└──────────────────────────┘
┌─────────────┐
│ User │
│ (Terminal) │
└──────┬──────┘
│
│ make run-tui
│
▼
┌──────────────────────────────────────────┐
│ TUI Container │
│ │
│ ┌────────────────────────────────────┐ │
│ │ Textual Application │ │
│ │ │ │
│ │ ┌──────────────┐ ┌────────────┐ │ │
│ │ │ Sidebar │ │ Content │ │ │
│ │ │ Categories │ │ Tasks │ │ │
│ │ │ │ │ │ │ │
│ │ │ Build │ │ Execute │ │ │
│ │ │ Test │ │ Display │ │ │
│ │ │ SecureBoot │ │ Output │ │ │
│ │ │ MOK │ │ │ │ │
│ │ │ UUEFI │ │ │ │ │
│ │ │ ... │ │ │ │ │
│ │ └──────────────┘ └────────────┘ │ │
│ │ │ │
│ └────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ Task Executor │ │
│ │ (pf.py wrapper) │ │
│ └──────────────────┘ │
│ │ │
└──────────────────┼────────────────────────┘
│
▼
┌─────────────────┐
│ pf.py │
│ (Task Runner) │
└─────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ User Interaction Layer │
├───────────────┬───────────────────┬─────────────────────────────┤
│ TUI │ CLI (Makefile) │ Direct (./pf.py) │
│ Interactive │ Convenient │ Traditional │
│ GUI-like │ Shortcuts │ Scriptable │
└───────┬───────┴─────────┬─────────┴─────────┬─────────────────┘
│ │ │
└─────────────────┴───────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Container Orchestration │
├───────────────┬───────────────────┬─────────────────────────────┤
│ docker-compose│ Podman Compose │ Systemd (Quadlet) │
│ Development │ Alternative │ Production │
└───────┬───────┴─────────┬─────────┴─────────┬─────────────────┘
│ │ │
└─────────────────┴───────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Container Runtime │
├───────────────┬──────────────┬──────────────┬──────────────────┤
│ Docker │ Podman │ containerd │ CRI-O │
│ (common) │ (rootless) │ (k8s) │ (k8s) │
└───────┬───────┴──────┬───────┴──────┬───────┴────────┬─────────┘
│ │ │ │
└──────────────┴──────────────┴────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Container Image │
├────────────┬──────────────┬──────────────┬─────────────────────┤
│ Build │ Test │ Installer │ Runtime │ TUI │
│ Container │ Container │ Container │ Container│Container│
└────────────┴──────────────┴──────────────┴───────────┴─────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ PhoenixBoot Core │
├────────────┬──────────────┬──────────────┬─────────────────────┤
│ pf.py │ Scripts │ Staging │ Utils │
│ Task │ Bash │ Source/ │ Python │
│ Runner │ Operations │ Binaries │ Tools │
└────────────┴──────────────┴──────────────┴─────────────────────┘
Developer
│
▼
make run-tui
│
▼
Docker Compose
│
├─► Build Container
├─► Test Container
├─► Installer Container
├─► Runtime Container
└─► TUI Container
System Administrator
│
▼
systemctl start phoenixboot-*.service
│
▼
Systemd
│
▼
Podman Quadlet
│
├─► Build Service
├─► Test Service
├─► Installer Service
├─► Runtime Service
└─► TUI Service
Git Push
│
▼
GitHub Actions
│
├─► make build
│ └─► Build all containers
│
├─► make run-build
│ └─► Compile artifacts
│
├─► make run-test
│ └─► Run validation
│
└─► Upload artifacts
└─► Store results
┌─────────────────────────────────────────────────────────────────┐
│ Benefits │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ✅ Isolation Each component in clean environment │
│ ✅ Reproducibility Same results everywhere │
│ ✅ Portability Works on any system with containers │
│ ✅ Scalability Easy to add new components │
│ ✅ Maintainability Clear separation of concerns │
│ ✅ Testability Independent testing of components │
│ ✅ Security Minimal privileges, SELinux support │
│ ✅ Documentation Self-documenting Dockerfiles │
│ │
└─────────────────────────────────────────────────────────────────┘
Made with 🔥 for a more secure boot process