Skip to content

[enhancement] Give the option to boot into the linux system as a VM from Windows #178

Closed

Description

@hanthor

Problem / Motivation

The easiest first step for a user would be to test out their system as a windowed/fullscreen QEMU VM or soemthing from Widnows itself, the next step would be to reboot into it.

Proposed solution

give the option as a first stepp to boot into the liux system as a VM

Alternatives considered

No response

Contribution

  • Yes — I'd like to work on this (would you like a good-first-issue tag?)

Activity

  1. hanthor commented on Aug 21, 2026

    @hanthor
    MemberAuthor

    Worth recording what's actually in the tree, because the code for this already exists.

    app/vm_windows.go implements the whole feature:

    • GetFreshVMCapability() / TryInVMFresh(imageRef) — builds preview.raw from an OCI image in a headless builder VM, then launches an interactive preview window. This is exactly the "try it as a VM first" step this issue asks for.
    • GetVMCapability() / BootInVM() — boots the installed system in a VM (SPEC §6.2).
    • The frontend has a vmpreview screen and a "Try in VM" button on the launchpad, gated on state.freshVmCapability?.available.

    So the feature isn't missing — it's dark. GetFreshVMCapability() refuses unless it finds QEMU, the edk2 firmware, and a bundled Alpine builder kernel/initramfs under C:\wootc\qemu\.

    payload/builder/build-builder.sh already existed to produce those builder artifacts, but nothing referenced it — not the justfile, not CI, not the docs. So they were never built, the capability check always failed, and the button never appeared.

    PR #187 adds just build-builder to wire that script up.

    What's still needed to close this is packaging, not code: a release has to actually ship builder-vmlinuz + builder-initramfs.img, QEMU, and the edk2 firmware alongside wootc.exe. That's a distribution-size and hosting decision (QEMU alone is ~100 MB), which is why I've left it rather than guessing — and it's the same question as #177, which PR #187 also addresses on the image side.

  2. added
    hive/likely-doneHive verified that a merged PR references or claims this issue; pending confirmation
    on Sep 26, 2026
  3. hanthor commented on Sep 26, 2026

    @hanthor
    MemberAuthor

    The 2026-09-26 experiments show that this needs more than packaging. The original helper did not load its VirtIO disk driver, exited zero after failure, and the Windows caller could mistake an existing blank disk for success. #411 fixes that false-success path. The required product journey is now explicit in ADR 0004: one persistent Linux disk, first used inside Windows, then eligible for native boot without losing the user's work.

    Observed so far:

    Still required before closing this issue: an ordinary fresh Windows user obtains the runtime through the app, reaches a usable Linux desktop, keeps a file and setting across shutdown/relaunch, and follows a proven same-disk native promotion path. Low-memory/low-disk recovery and actual older-PC compatibility need their own evidence. Server KVM/WHPX results do not establish that hardware coverage. Runtime source/dependency provenance must also be complete before release distribution.

    Experiment records: docs/experiments/vm-first-2026-09-26.md and docs/experiments/windows-vm-runtime-2026-09-26.md (the latter in #419).

  4. hanthor commented on Sep 26, 2026

    @hanthor
    MemberAuthor

    2026-09-26 experiment update: Phase 1 must start inside Windows

    I confirm the originally stated Phase 1: the person first prepares and uses Linux in a Windows VM, then may move that same persistent system to native boot. We have been restoring that product direction in ADR 0004; native-only migration remains useful but cannot stand in for this first step.

    New component evidence since the ADR:

    • On Linux KVM, a corrected and digest-pinned Yellowfin image reached an authenticated GNOME desktop using a 2 GiB preparation VM. The installed desktop preserved a user file and a GNOME setting after a clean shutdown and relaunch of the exact same disk.
    • A separate capacity trial provisioned and booted a 32 GiB target with an 8 GiB scratch disk. The authenticated desktop had about 23.7 GiB available in the writable user workspace and shut down cleanly.
    • The helper's isolated Linux results do not prove Windows WHPX. The managed Windows VM/runtime product path has not passed its full account → desktop → edit → stop → relaunch journey yet.
    • Native promotion remains unproven. The source review identified that the current deployer rewrites BLS entries for NTFS loop boot. A future transition must preserve VM boot entries and prove the same user's work after native boot and return to VM.

    Detailed immutable evidence is linked from the merged wootc PR #415 (docs/experiments/vm-helper-2026-09-26.md) and PR #429. The product gate is still open; only the Windows-hosted round trip can establish the North Star journey.

  5. added
    hive/covered-by-prHive verified that an open PR references or claims this issue; still actionable until confirmed
    and removed
    hive/likely-doneHive verified that a merged PR references or claims this issue; pending confirmation
    on Sep 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthive/covered-by-prHive verified that an open PR references or claims this issue; still actionable until confirmed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions