Skip to content

release: Linux install omits minvmd and gvproxy (own-ip dead on installs, no VM mode) #980

Description

@norrietaylor

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

  1. minvmd-linux-arm64: the release builds only the amd64 minvmd today; an arm64 build job (or cross build) is needed for the arm64 row.
  2. 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.
  3. 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/.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions