Problem
The Linux install ships only bin/min, bin/mip, bin/minimald, the git-remote-min symlink, and the AppArmor files (stage-release.sh COMPONENTS). Two consequences:
- own-ip is dead on every installed Linux host. The native (DM2) own-ip datapath is implemented (#542) and proven by
netns_root_integration.rs in the ci-linux-native netns job — but the daemon resolves the switch at /usr/lib/minimal/bin/gvproxy (crates/minimald/src/server.rs), and no Linux install has one. CI only passes because it fetches gvproxy itself and sets GVPROXY_BIN.
- No VM-backed sessions on Linux installs.
minvmd ships on macOS only, so the KVM deployment mode is unavailable outside a dev checkout.
What the release already produces
Most artifacts exist in release.yml today; they are staged but never mapped to Linux install components:
minvmd-linux-amd64 (built against libkrun via setup-libkrun-linux)
gvproxy-linux-amd64 / gvproxy-linux-arm64 (pin-verified fetch)
vmlinuz-{amd64,arm64}, rootfs-{amd64,arm64}.img, and the initramfs (packed from the minimald-linux-* binaries)
Proposed change
Add Linux rows to the COMPONENTS table in scripts/stage-release.sh:
"gvproxy|linux|amd64|file|bin/gvproxy|gvproxy-linux-amd64"
"gvproxy|linux|arm64|file|bin/gvproxy|gvproxy-linux-arm64"
"minvmd|linux|amd64|file|bin/minvmd|minvmd-linux-amd64"
"minvmd|linux|arm64|file|bin/minvmd|minvmd-linux-arm64"
The installer is manifest-driven, so it should pick these up without changes once the manifest carries the rows.
Open questions
- minvmd-linux-arm64: the release builds only the amd64 minvmd today; an arm64 build job (or cross build) is needed for the arm64 row.
- libkrun/libkrunfw on Linux:
minvmd links libkrun at compile time and needs libkrun.so/libkrunfw.so at runtime. Dev setups fetch prebuilts into ~/.krun (just libkrun); an install story needs the libraries staged (e.g. lib/ components + rpath, mirroring the macOS lib/libkrun.1.dylib row) — the release currently stages no Linux libkrun artifact.
- Guest payload on Linux: VM boots need
data/{vmlinuz,rootfs.img,initramfs.cpio} like the macOS rows. Shipping gvproxy alone already fixes native own-ip; minvmd is only useful with the payload + libkrun, so the minvmd half could land as a second step.
Note: .github/workflows/ is frozen and CODEOWNER-gated, so any release.yml wiring (arm64 minvmd job, Linux libkrun staging) needs that review path; the COMPONENTS change itself lives in scripts/.
Problem
The Linux install ships only
bin/min,bin/mip,bin/minimald, thegit-remote-minsymlink, and the AppArmor files (stage-release.shCOMPONENTS). Two consequences:netns_root_integration.rsin theci-linux-nativenetns job — but the daemon resolves the switch at/usr/lib/minimal/bin/gvproxy(crates/minimald/src/server.rs), and no Linux install has one. CI only passes because it fetches gvproxy itself and setsGVPROXY_BIN.minvmdships on macOS only, so the KVM deployment mode is unavailable outside a dev checkout.What the release already produces
Most artifacts exist in
release.ymltoday; they are staged but never mapped to Linux install components:minvmd-linux-amd64(built against libkrun viasetup-libkrun-linux)gvproxy-linux-amd64/gvproxy-linux-arm64(pin-verified fetch)vmlinuz-{amd64,arm64},rootfs-{amd64,arm64}.img, and the initramfs (packed from theminimald-linux-*binaries)Proposed change
Add Linux rows to the
COMPONENTStable inscripts/stage-release.sh:The installer is manifest-driven, so it should pick these up without changes once the manifest carries the rows.
Open questions
minvmdlinks libkrun at compile time and needslibkrun.so/libkrunfw.soat runtime. Dev setups fetch prebuilts into~/.krun(just libkrun); an install story needs the libraries staged (e.g.lib/components + rpath, mirroring the macOSlib/libkrun.1.dylibrow) — the release currently stages no Linux libkrun artifact.data/{vmlinuz,rootfs.img,initramfs.cpio}like the macOS rows. Shipping gvproxy alone already fixes native own-ip; minvmd is only useful with the payload + libkrun, so the minvmd half could land as a second step.Note:
.github/workflows/is frozen and CODEOWNER-gated, so anyrelease.ymlwiring (arm64 minvmd job, Linux libkrun staging) needs that review path; theCOMPONENTSchange itself lives inscripts/.