Commit Graph
9 Commits
Author SHA1 Message Date
guofangandClaude Sonnet 5.5 00695cdddc Install the VirtIO drivers into the base image in audit mode
Add Install-VirtIO-Drivers.ps1, run from Autounattend.xml before sysprep, and
attach the virtio-win ISO (downloaded if missing) during the build.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 22:09:05 +08:00
guofangandClaude Sonnet 5.5 91ae8cb147 build-windows-base.sh: show a window by default, fix macOS bash 3.2 and fork crashes
Replace --window with --headless (VNC); the window is the default. Fill the
QEMU config placeholders without nested quotes (bash 3.2 kept them literally),
and run QEMU as a background job instead of -daemonize when it shows a window
(Cocoa crashes in fork()).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 21:31:10 +08:00
guofangandClaude Sonnet 5.5 4eb26e3a96 Download with 16 aria2c connections by default
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 21:00:02 +08:00
guofangandClaude Sonnet 5.5 1476b4a3de Prompt step by step for the missing base image, ISO, npm deps and Chromium
Offer to build the base QCOW2, download the ISO, run npm ci and install
Chromium (from the npmmirror mirror by default). Let Playwright locate its
own Chromium so macOS works.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:53:50 +08:00
guofangandClaude Sonnet 5.5 b37d1e002c Report a missing base QCOW2 image instead of a missing ISO
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:26:07 +08:00
guofangandClaude Sonnet 5.5 30342b4e1b Make the staged ISO copy writable on macOS
macOS's openrsync ignores --chmod, so the staged directories kept the
read-only permissions of the UDF mount and wimlib-imagex split failed
with Permission denied. Run chmod -R u+rwX on the staging directory on
Darwin.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 21:43:53 +08:00
guofangandClaude Sonnet 5.5 21604f511f Add a script that builds a fast Windows installation disk image
QEMU's emulated USB CD-ROM reads the Windows ISO at a few MB/s. The script
builds a bootable FAT32 GPT disk image from the ISO, splitting install.wim into
install*.swm parts for the 4 GB FAT32 file limit, so the image can be attached
as an NVMe disk and read about 15 times faster.

It runs on macOS and Debian. The ISO has to be read as UDF: hdiutil on macOS,
mount -t udf as root on Linux, otherwise udisksctl, otherwise 7z extracts it.
A desktop session automounts the loop device that udisksctl creates, so the
existing mount point is reused when there is one. The image itself is built
without root.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 17:28:18 +08:00
guofangandClaude Sonnet 5.5 4d9e1b43d9 Match Windows 11 arm64 ISO names on arm64 hosts
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 13:51:35 +08:00
guofangandClaude Sonnet 5 4e86a23634 Auto-detect host architecture for downloaded images
Debian/AlmaLinux/Fedora image filenames, URLs, and checksums were
hardcoded to arm64/aarch64 (for Apple Silicon macOS), which would
silently download the wrong-architecture image on an Intel/amd64
host. Detect the architecture from the host (uname -m), normalized
to arm64/amd64, with VM_IMAGE_ARCH as an override; the run-*.sh
scripts in the parent repo use the same override so both stay in
sync. amd64 keeps the previously pinned checksums; arm64 checksums
are still unpinned pending upstream publication.

windows11 is unaffected: it stays x86_64-only, matching run-windows11.sh.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 22:01:26 +08:00