Commit Graph
13 Commits
Author SHA1 Message Date
GuofangandClaude Sonnet 5.5 65a5780e02 Install OpenSSH Server during Windows setup
Install it at first logon from the Win32-OpenSSH zip on the seed ISO via
Configure-Windows.ps1 -InstallOpenSSH, replacing the manual 05/06 batch
files. The administrator public key now comes from the host
(SSH_PUBLIC_KEY_FILE or ~/.ssh/id_*.pub) instead of being hardcoded.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 11:55:38 +08:00
GuofangandClaude Sonnet 5.5 552a292894 Install OpenSSH Server from the Win32-OpenSSH zip
Carry the zip for the host architecture in the seed ISO and add
06-Install-OpenSSH-Zip-Admin.bat, which installs from it instead of
Windows Update. Update vm-images.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 14:28:13 +08:00
guofangandClaude Sonnet 5.5 69dcfe1d9f Install the VirtIO Arm64 drivers with pnputil; make OpenSSH a batch file
On Arm64 Windows the VirtIO guest tools installer is an x86 program and the
VirtIO ISO has no Arm64 package for it, so the first-logon script failed there
and the guest had no network (no NetKVM driver). Install the Arm64 NetKVM,
vioserial, Balloon, viorng and vioinput drivers from their folders on the ISO
with pnputil instead.

The OpenSSH Server capability is downloaded through Windows Update, which can
take very long and blocked the rest of the script. Move it, with the
administrator authorized key, into 05-Install-OpenSSH-Admin.bat, which the
script copies to the Installers folder on the desktop to run by hand.

Update the vm-images submodule to the build script that runs on Debian.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 17:43:29 +08:00
GuofangandClaude Sonnet 5.5 fd1d9d651d Split the QEMU configs by host system and architecture
Replace qemu/<guest>-<arch>.ini with qemu/<guest>-<os>-<arch>.ini, where os is
linux or darwin, the name platform.system() reports. The accelerators move out
of the shared <guest>.ini into these files (KVM on Linux, HVF on macOS, TCG as
the fallback). The launchers pick the file from the host system and
architecture, and reject amd64 guests on macOS hosts, so no darwin-amd64 files
exist.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 15:05:02 +08:00
GuofangandClaude Sonnet 5.5 e1e5a2149c Load the Windows 11 VM hardware from QEMU config files and add port options
Move the QEMU hardware definition of the Windows 11 VM into
qemu/windows11.ini and qemu/windows11-amd64.ini, loaded with -readconfig
like the Linux launchers. The network stays in the launcher because a
config file section cannot hold two hostfwd entries. Add --rdp-port and
--ssh-port, which override the WIN11_VM_*_PORT environment variables.
WIN11_VM_MEMORY and WIN11_VM_CPUS are replaced by the config file.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-15 12:36:15 +08:00
GuofangandClaude Opus 5.5 1691062554 Add Ubuntu 26.04 virtual machine
Add run-ubuntu2604.py with its QEMU config files and NoCloud seed. The
launcher follows the Debian 13 one, with UBUNTU_VM_ settings and SSH
forwarded to host port 2225. The seed injects the current user's SSH public
key, uses the USTC mirror (ubuntu-ports on arm64) and installs the GNOME
desktop on first boot. Update vm-images for the ubuntu2604 image target.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kwxp2XWvKnuEBifnCbhyX5
2026-10-15 09:00:15 +08:00
GuofangandClaude Opus 5.5 204051f930 Add --download-only to the VM launchers
The option downloads the media a launcher would fetch automatically and
exits without checking for QEMU, creating a VM disk or starting the VM:
the base image for Debian, AlmaLinux and Fedora, and the VirtIO tools
ISO for Windows 11.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YKxXLyiL7XJ3a9e8HmR2my
2026-09-30 10:56:27 +08:00
GuofangandClaude Opus 5.5 be9291c57b Load the Fedora 44 VM hardware from QEMU config files
Apply the Debian launcher's config file layout to Fedora: the shared
qemu/fedora44.ini and qemu/fedora44-<arch>.ini replace the inline QEMU
arguments and the FEDORA_VM_MEMORY, FEDORA_VM_CPUS and
FEDORA_VM_SSH_PORT variables; FEDORA_VM_QEMU_CONFIG selects a different
shared config file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YKxXLyiL7XJ3a9e8HmR2my
2026-09-30 10:26:28 +08:00
GuofangandClaude Opus 5.5 fe8b6f93ff Load the Debian 13 VM hardware from QEMU config files
Move the Debian launcher's QEMU arguments into qemu/debian13.ini, which
the launcher renders with the per-run file paths and passes to QEMU with
-readconfig, followed by qemu/debian13-<arch>.ini for the machine type
and arm64-only devices. Memory, CPU count, SSH port and accelerator are
now set in the config files, replacing VM_MEMORY, VM_CPUS and
VM_SSH_PORT; VM_QEMU_CONFIG selects a different shared config file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YKxXLyiL7XJ3a9e8HmR2my
2026-09-30 10:26:28 +08:00
GuofangandClaude Opus 5.5 3561fc6729 Remove shell VM launchers in favor of the Python ones
Delete run-*.sh and point the documentation at run-*.py. The
seediso build-seed.sh helpers stay, as the Python launchers call them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HL6bzSwWGNwru9bDS9ZCLg
2026-09-30 09:22:40 +08:00
GuofangandClaude Opus 5.5 8a7f974c11 Add --state-dir option to the Python VM launchers
Let each run-*.py launcher take the VM directory (disk, seed ISO, UEFI
variables, PID file, console log) from the command line, taking
precedence over the *_STATE_DIR environment variable. Paths derived
from the state directory are now computed after argument parsing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K1dybYsc36kf3gUPB7NuNB
2026-09-29 13:35:32 +08:00
Guofang a0cd640ffe Add Fedora 44 GNOME virtual machine 2026-08-31 12:16:59 +08:00
Guofang 58a0a2d1ff Initial commit 2026-08-26 12:36:30 +08:00