M9 Phase 3.1: Build systemd Binary
Phase 3.1 adds Ubuntu 20.04's prebuilt systemd v245 binary to Kevlar's initramfs, along with all glibc runtime dependencies.
Approach: prebuilt binaries
Rather than compiling systemd from source, we extract the Ubuntu 20.04 package's prebuilt binaries. This aligns with Kevlar's goal of being a drop-in Linux kernel replacement — if we can't run unmodified distro binaries, we can't run prebuilt GPU drivers either.
The Dockerfile apt-get install systemd, then extracts the binaries
and their complete glibc dependency tree via ldd.
What's in the initramfs
/usr/lib/systemd/systemd— PID 1 binary (dynamically linked)/usr/lib/systemd/systemd-journald— logging daemon/bin/systemctl— service control tool/lib/x86_64-linux-gnu/— 30+ glibc shared libraries/lib64/ld-linux-x86-64.so.2— dynamic linker/etc/systemd/system/default.target— boot target/etc/systemd/system/kevlar-getty.service— console shell/etc/machine-id,/etc/os-release,/etc/fstab
First boot result
systemd starts, glibc initializes, the dynamic linker resolves all libraries — then systemd exits with status 1 (configuration error). This is expected: it can't find the mount points and configuration it needs. Phase 3.2 will fix these iteratively.
The critical milestone: an unmodified distro binary executes on Kevlar through the full glibc init sequence.