Repository navigation
feat(computer): the QEMU launcher boots Windows guests and shares a thin disk's base - #524
Merged
earakely-scale merged 1 commit intoNov 7, 2026
Conversation
…hin disk's base The launcher boots a disk as the guest its folder's guest file names, linux when there's none. A windows guest, which has no virtio drivers, boots from secure-boot UEFI with Microsoft's keys and a fresh swtpm TPM 2.0 on every boot, its disk and seed on AHCI, an e1000e NIC, a 1920x1080 display and, under KVM, Hyper-V enlightenments; it boots on amd64 alone. The launcher image adds swtpm, and the release's smoke test checks for it and the secure-boot firmware. A local machine image of a thin disk (more than one layer: a base in disk/base.img below disk/disk.img and its guest file) copies the base in a step of its own, so every machine on one base shares a single copy of it. Part of FD-5311 (W1). The windows OS type stays refused until composing a Windows computer lands with it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
earakely-scale
deleted the
edgararakelyan/fd-5311-w1-windows-computers-in-the-framework
branch
November 7, 2026 06:23
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The QEMU launcher boots Windows guests, and a local machine image of a thin disk shares its base. First part of W1 (FD-5311) of Windows computers (FD-4538); design: Windows Computers in agent-env.
guestfile names (disk/guestbesidedisk/disk.img),linuxwhen there's none, so no provider orcreate_vmsignature changes.OVMF_CODE_4M.secboot.fd,OVMF_VARS_4M.ms.fd, SMM on);disk/base.img, in a layer of its own belowdisk/disk.img(backed by it) anddisk/guest. Its local machine image copies the base in a step of its own, so every machine on one base shares one copy of it, as decided for composing Windows computers (thin layers on a shared base). A one-layer disk is copied as before.swtpm; the release's smoke test checks for it and the secure-boot firmware.What this doesn't do
The
windowsOS type stays refused: nothing composes a Windows computer yet, so no computer env can ask for one. It opens with composing (the rest of W1), together with the image check for thin disks (_read_diskreads one layer) and Modal carrying a thin disk's base (W7). Until then the Windows path is reached by a disk image that carries aguestfile, as the tests below build.Testing
On EC2 c8i.4xlarge boxes with nested virtualization (agent-environments-admin), not the laptop.
Unit.
tst/unit/env/envs/test_disk_recipe.py: 33 passed, among them the new ones:The full suite (
tst/unitand the protocol's tests,-n auto): 13,784 passed, 18 skipped. Four failed at first because the fresh box lackedunzipandhttpxfor the system Python; they passed once those were installed, and none touch this change.Linux, unchanged.
tst/integration/computer/launcher_test.pyanddisk_boot_test.py(int_test_slow, KVM): 2 passed. The shipped desktop's disk boots under the changed launcher, resets, takes a burst, and the bundle's disk task and probe pass.Windows e2e and chaos, through
LocalSandboxProvider.create_vm/reset_vmand the launcher built from this branch.disk/base.img, and thin images addingdisk/disk.img(backed by it) anddisk/guest.agenton session 1, the thin layer's files presentreset_vmreturned in 0.3–0.4 s; ready again in 24.7–30.4 sCould not open '/disk/base.img'plan9launch: no guest plan9/dev/kvmNot addressed here: a host keeps the base twice, in the pulled disk image and in the machine image (about 57 GB under containerd's image store). That's a follow-up for composing.
The e2e and chaos harness
🤖 Generated with Claude Code


Confidence Score: 5/5
The PR appears safe to merge within its stated local-launcher scope.Summary
Adds Windows boot support to the QEMU launcher and copies a thin disk's base separately so local machine images can share it.
Diagram
%%{init: {'theme': 'neutral'}}%% flowchart TD A[Pull disk image] --> B{Image layers} B -->|One| C[Copy disk folder] B -->|Multiple| D[Copy base separately] D --> E[Copy disk and guest file] C --> F{Guest file} E --> F F -->|Absent or linux| G[Existing Linux boot setup] F -->|windows on amd64| H[Secure boot and fresh TPM] F -->|Unsupported guest or Windows arch| I[Exit with error]Reviews (1) · Last reviewed commit: "feat(computer): the QEMU launcher boots ..." · Reviewed by Greptile