live-image: pack full rootfs as initrd so PXE actually boots userspace
CI / Lint + build + test (push) Successful in 1m54s
Release / release (push) Successful in 5m10s

update-initramfs produces a boot stub (~50 MB) that expects to mount a
separate rootfs over squashfs/disk/NFS. Our PXE channel only ships
vmlinuz+initrd.img, so the stub had nothing to pivot to — kernel
finished hand-off and the system wedged with firmware, modules, and
userspace stranded in the 545 MB rootfs dir we never delivered.

Replace with an everything-in-initramfs build: cpio.zst the full
rootfs (minus /boot) as the initrd, add /init -> sbin/init for the
kernel's runtime entrypoint, materialize the kernel symlink into a
real file. Bump check-initrd floor to 200 MB and switch the firmware
grep from unmkinitramfs (boot-stub-specific) to zstd | cpio -t.

Also add cpio to the CI apt deps.
This commit is contained in:
2026-04-18 14:14:08 -04:00
parent 6c6d20710f
commit 43ea845ac0
3 changed files with 44 additions and 24 deletions
+1 -1
View File
@@ -39,7 +39,7 @@ jobs:
debootstrap squashfs-tools \
systemd-ukify systemd-boot kmod bubblewrap \
debian-archive-keyring python3-pip git zstd \
qemu-system-x86 qemu-utils \
qemu-system-x86 qemu-utils cpio \
dnsmasq iperf3 ipxe-qemu
# See release.yml for rationale — Ubuntu's apt mkosi is too old
# to handle bookworm's non-free-firmware component correctly.
+1 -1
View File
@@ -35,7 +35,7 @@ jobs:
sudo apt-get install -y --no-install-recommends \
debootstrap squashfs-tools dosfstools \
systemd-ukify systemd-boot kmod bubblewrap \
debian-archive-keyring python3-pip git zstd
debian-archive-keyring python3-pip git zstd cpio
# Ubuntu's apt-packaged mkosi is too old to wire
# non-free-firmware shorthand through to debootstrap.
# mkosi isn't published on PyPI under v24+ — install the