Skip to content

Fix macOS 15 startup by keeping nested virtualization disabled - #215

Merged
themartiano merged 1 commit into
mainfrom
codex/fix-macos-15-nested-virtualization
Sep 15, 2026
Merged

themartiano merged 1 commit into
mainfrom
codex/fix-macos-15-nested-virtualization

Conversation

@themartiano

Copy link
Copy Markdown
Collaborator

Summary

On macOS 15, QEMU can pass the paused nested-virtualization probe and then abort with HV_BAD_ARGUMENT when a vCPU runs. The launcher subsequently reports a sleep-control connection failure because QEMU has already exited, as documented in the reporter's follow-up.

Require macOS 26 or newer before running the EL2 capability probe. macOS 15 now boots with the existing compatible EL1 configuration, and an unreadable host version also falls back to EL1. On newer macOS releases, the hardware capability probe still determines whether to enable nested virtualization. Update the documented nested KVM requirements.

Fixes #211.

Validation

  • Added a regression test that fails on the original launcher because simulated macOS 15 incorrectly selects EL2.
  • Launcher contract suite passes for macOS 15.0/15.7.7, macOS 26.0/26.1/27.0, rejected capability probes, and missing or failed OS version queries. Tests verify macOS 15 never runs the EL2 probe.
  • make test passes, including 268 native tests and the guest, launcher, networking, and storage suites.
  • Built the app with macos/build-app.sh --guest-dir pointing to existing pinned guest artifacts, reusing the pinned QEMU runtime. Bundle signature verification and all 21 Mach-O compatibility checks for macOS 15 passed; the bundled launcher matches the updated source.

Validation ran on macOS 27. The macOS 15 launch decision is tested with a simulated OS version and QEMU; a live boot on the reporter's macOS 15/M4 Max hardware remains unverified.

@themartiano
themartiano merged commit e9981a6 into main Sep 15, 2026
1 check passed
@themartiano
themartiano deleted the codex/fix-macos-15-nested-virtualization branch September 15, 2026 12:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

v0.4.0: every launch fails with "could not enable safe Mac sleep ... cannot connect to QMP socket: Connection refused" (macOS 15 / M4 Max; v0.3.0 fine)

1 participant