Skip to content

2.0.1

Choose a tag to compare

@odesenfans odesenfans released this 01 Sep 17:46
7928a9b

This release ships fixes linked to SEV-SNP support as well as an update of the runtimes for V-PROGRAM support.

⚠️ Upgrade notes

  • The Rust supervisor daemon and VM controller are now the default (#1171). The 2.0.0 packages ran the Python implementation unless ALEPH_VM_SUPERVISOR_IMPL=rust was set in /etc/aleph-vm/supervisor.env (the 2.0.0 release notes were wrong on this point: #1171 merged after the 2.0.0 tag was cut). Upgrading keeps your existing supervisor.env, so a node that never set the flag switches to the Rust daemon and controller on this upgrade, and both services restart. Running QEMU and confidential VMs are re-adopted by the new daemon. If you would rather not switch implementations with VMs running, set ALEPH_VM_SUPERVISOR_IMPL=python before installing the package and switch to rust after cycling your VMs.
  • Rollback to the Python implementation is ALEPH_VM_SUPERVISOR_IMPL=python in supervisor.env followed by a restart of aleph-vm-supervisor and aleph-vm-agent. The Python supervisor does not run SEV-SNP workloads (V-PROGRAMs and SNP instances) and now rejects them explicitly (#1180). Downgrading to 1.x is not supported.
  • SEV-SNP requires QEMU >= 9.1, the first release with the sev-snp-guest object (#1179). Of the packaged targets, Debian 13 and Ubuntu 26.04 ship one. Debian 12 (QEMU 7.2), Ubuntu 22.04 (6.2) and Ubuntu 24.04 (8.2) do not: they serve plain SEV/SEV-ES instances but cannot launch SNP guests, and the node no longer advertises SNP on them. Upgrade QEMU by recompiling it or by moving to Debian 13 or Ubuntu 26.04; a deb for Ubuntu 26.04 is shipped for this purpose. kvm_amd nested=0 is fine since this release (#1178).
  • V-PROGRAM publishers: the measured guest kernel changed (#1184), so launch measurements moved. Runtime bundles built before this release do not boot under SEV-SNP: they fail the new 90-second attestation gate and are torn down. Use the runtimes published for 2.0.1.
  • Coming from 1.15: read the 2.0.0 breaking changes first (Firecracker-based instances are not re-adopted, legacy X-Auth-Signature scheduler authentication is removed).

How to upgrade

Download and install the package for your OS. The package restarts aleph-vm-supervisor and aleph-vm-agent itself; no manual restart is needed.

On Ubuntu 26.04 (Resolute Raccoon), new in this release and recommended for SEV-SNP hosts:

sudo rm -f /opt/aleph-vm.ubuntu-26.04.deb
sudo wget -P /opt https://github.com/aleph-im/aleph-vm/releases/download/2.0.1/aleph-vm.ubuntu-26.04.deb
sudo apt install /opt/aleph-vm.ubuntu-26.04.deb

On Debian 13 (Trixie):

rm -f /opt/aleph-vm.debian-13.deb
wget -P /opt https://github.com/aleph-im/aleph-vm/releases/download/2.0.1/aleph-vm.debian-13.deb
apt install /opt/aleph-vm.debian-13.deb

On Debian 12 (Bookworm):

rm -f /opt/aleph-vm.debian-12.deb
wget -P /opt https://github.com/aleph-im/aleph-vm/releases/download/2.0.1/aleph-vm.debian-12.deb
apt install /opt/aleph-vm.debian-12.deb

On Ubuntu 24.04 (Noble Numbat):

sudo rm -f /opt/aleph-vm.ubuntu-24.04.deb
sudo wget -P /opt https://github.com/aleph-im/aleph-vm/releases/download/2.0.1/aleph-vm.ubuntu-24.04.deb
sudo apt install /opt/aleph-vm.ubuntu-24.04.deb

On Ubuntu 22.04 (Jammy Jellyfish):

sudo rm -f /opt/aleph-vm.ubuntu-22.04.deb
sudo wget -P /opt https://github.com/aleph-im/aleph-vm/releases/download/2.0.1/aleph-vm.ubuntu-22.04.deb
sudo apt install /opt/aleph-vm.ubuntu-22.04.deb

The crn_upgrade.sh helper from the 2.0.0 notes does not yet recognise Debian 13 or Ubuntu 26.04; use the commands above on those systems.

Verify

systemctl is-active aleph-vm-supervisor aleph-vm-agent

On SEV-SNP hosts, the agent logs one line at startup: INFO with the advertised CPU models, or a WARNING naming exactly why confidential launches are disabled. The same reason is exposed by the node itself:

journalctl -u aleph-vm-agent -n 100 | grep -i snp
curl -s http://localhost:4020/about/capability | jq '.tee_unavailable_reason'   # null on a healthy SNP host

If SNP is unavailable because of the QEMU version, upgrading QEMU heals the advertisement within 60 seconds; no restart is needed.

🔐 SEV-SNP fixes

  • The minimal measured guest kernel now boots under SEV-SNP (#1184). The whitelist kernel introduced in #1169 hung before its first console line as an SNP guest (fine as a regular guest, which is what boot-smoke exercises): with EXPERT=y, allnoconfig answers the prompted X86_PAT symbol with 'no'. Empirically bisected on EPYC hardware; CONFIG_X86_PAT=y + CONFIG_MTRR=y is the minimal fix. Golden measurements re-seeded.
  • SNP launches fail loudly instead of wedging invisibly (#1180): V-PROGRAM and SNP-instance creates now gate on the guest's RA-TLS attestation endpoint accepting TCP within 90 seconds, else the VM is torn down and the error surfaces; the Python supervisor rejects SNP specs outright, naming the IMPL=rust switch.
  • Truthful SNP capability advertisement (#1179): the CRN only advertises sev_snp when QEMU actually supports sev-snp-guest (qom-list-types gate), exposes the reason via /about when it cannot, logs an operator notice at startup, and re-probes every 60s so a live QEMU upgrade heals the node without a restart.
  • The SNP vCPU probe no longer requires nested virtualization (#1178): hosts with nested=0 advertise SNP again.

🧾 V-PROGRAM verified data volumes (#1176)

Read-only data volumes (model weights, datasets) join the measured stack:

  • aleph vprogram create --volume data.ext4 dm-verity-formats each image, publishes data + hash tree, and pins the root hashes on the message; the guest init verity-opens and mounts them read-only at /volumes/<i>.
  • Compose workloads bind them into services with a strict /volumes/<i>[/subpath]:<target>:ro subset (aleph-rs 0.18.0).
  • VerificationResult now carries the full launch-register map instead of a scalar measurement (#1175).

📦 Packaging and dependencies

  • Debs are built for Ubuntu 26.04 (resolute) (#1181).
  • aleph-message is pinned to the released 1.3.1 (#1183): strict V-PROGRAM scalar validation, serde parity with the Rust SDK and pyaleph 0.11.2.
  • The guest kernel build went from a distro config to a reviewed whitelist fragment (#1169), cutting golden-measurement CI from ~2h20m to minutes.

🛠 Hardening and fixes

  • Guest inits fail closed across all flavors, and the attestation nonce endpoint is capped (#1168 series).
  • The attest agent never follows upstream redirects and keeps error detail out of responses (#1168 series).
  • Hugepage pools are counted as available memory in /about/usage/system, so hugepage-reserving nodes are no longer starved by the scheduler (#1182).

What's Changed

  • Post-2.0 review follow-ups: drop aleph-attest-cli, harden the attest-agent, fail-closed init by @odesenfans in #1168
  • feat(packaging)!: Rust supervisor daemon and controller by default by @odesenfans in #1171
  • nix: whitelist guest kernel config (golden CI 2h20m -> minutes) by @odesenfans in #1169
  • feat: V-PROGRAM verified data volumes (host + guest) by @odesenfans in #1176
  • fix: SNP launches fail loudly instead of wedging invisibly by @odesenfans in #1180
  • test(daemon): stop racing the live filesystem in the pooled-disk test by @odesenfans in #1177
  • fix(agent): SNP vCPU probe no longer requires nested virtualization by @odesenfans in #1178
  • feat(tee)!: VerificationResult carries registers, not a scalar measurement by @odesenfans in #1175
  • feat(packaging): build a deb for Ubuntu 26.04 (resolute) by @odesenfans in #1181
  • feat(agent): truthful SNP capability advertisement (sev-snp-guest gate, operator surfacing) by @odesenfans in #1179
  • fix(agent): count free hugepages as available memory in /about/usage/system by @odesenfans in #1182
  • fix(nix): SEV-SNP guests need X86_PAT; the minimal kernel hung before console by @odesenfans in #1184
  • build: pin released aleph-message 1.3.1 instead of the git ref by @odesenfans in #1183

Full Changelog: 2.0.0...2.0.1