e73e31af92
The live image was still carrying the Phase 2 package list, so SMART, CPUStress, and Network each hit a LookPath miss and returned pass-with-skip. A run that skipped every real check still ended in "completed" — nothing on the report said the image was broken. Add smartmontools, stress-ng, fio, iperf3, lshw, lm-sensors, e2fsprogs, and util-linux to mkosi.conf. Flip the three stages from skip-pass to fail when their binary is missing so any future packaging regression blocks the run instead of whispering past it. Legitimate "no hardware" skips (no GPU, no hwmon, no disks, non-destructive) are untouched. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
75 lines
2.3 KiB
Plaintext
75 lines
2.3 KiB
Plaintext
# Vetting live image (Phase 2 skeleton).
|
|
#
|
|
# Produces a Debian-based rootfs packaged as squashfs plus a kernel
|
|
# image, ready to be served over HTTP to iPXE. The image is deliberately
|
|
# small: only what the agent needs to run Phase 2 (the Hello / Claim /
|
|
# Heartbeat loop). Phase 4+ adds smartctl, stress-ng, fio, iperf3, etc.
|
|
|
|
[Distribution]
|
|
Distribution=debian
|
|
Release=bookworm
|
|
# non-free-firmware is where bookworm landed i915 GuC/HuC, iwlwifi,
|
|
# amdgpu, nvidia-*, realtek NIC firmware, etc. — anything we'd want
|
|
# when PXE-booting a random repaired host. Without it i915 wedges
|
|
# on Tiger Lake+ and drags the serial console with it.
|
|
#
|
|
# Belt-and-suspenders: mkosi.sources.d/debian.sources ships an
|
|
# explicit deb822 sources drop-in so the bootstrap step sees the
|
|
# component regardless of how this shorthand is interpreted by the
|
|
# mkosi version doing the build.
|
|
Repositories=main non-free-firmware
|
|
|
|
[Output]
|
|
Format=directory
|
|
Output=build
|
|
|
|
[Content]
|
|
# PXE live image — iPXE loads vmlinuz+initrd from TFTP, so the rootfs
|
|
# itself doesn't need an EFI bootloader. Bootable=no skips mkosi's
|
|
# systemd-boot/bootctl dance; we still get /vmlinuz + /initrd.img
|
|
# symlinks courtesy of the linux-image-amd64 postinst.
|
|
Bootable=no
|
|
BuildPackages=
|
|
Packages=
|
|
systemd
|
|
systemd-sysv
|
|
udev
|
|
linux-image-amd64
|
|
live-boot
|
|
iproute2
|
|
iputils-ping
|
|
openssh-server
|
|
ca-certificates
|
|
curl
|
|
dmidecode
|
|
pciutils
|
|
usbutils
|
|
initramfs-tools
|
|
zstd
|
|
# Stage binaries. Every package here backs a stage the agent runs —
|
|
# if any one goes missing the corresponding stage now fails the run
|
|
# (was: pass-with-skip). Keep this list in sync with agent/tests.
|
|
smartmontools
|
|
stress-ng
|
|
fio
|
|
iperf3
|
|
lshw
|
|
lm-sensors
|
|
e2fsprogs
|
|
util-linux
|
|
# Firmware. firmware-linux-nonfree on bookworm is a thin metapackage
|
|
# that does NOT pull i915 GuC/HuC — those live in firmware-misc-nonfree.
|
|
# Enumerate explicitly so the blob for whatever hardware we boot on
|
|
# actually lands in /lib/firmware and then in the initrd.
|
|
firmware-misc-nonfree
|
|
firmware-iwlwifi
|
|
firmware-realtek
|
|
firmware-amd-graphics
|
|
firmware-intel-sound
|
|
intel-microcode
|
|
amd64-microcode
|
|
firmware-linux-nonfree
|
|
|
|
[Host]
|
|
# Copy the prebuilt Go agent in from the repo root via postinst.
|