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
Cloud-init seed images
Each operating system has an independent NoCloud configuration and generated
seed.iso:
seediso/
├── debian13/
├── almalinux10/
├── fedora44/
└── ubuntu2604/
Keeping per-OS metadata separate allows each VM to use a distinct hostname and
cloud-init instance-id. Generated ISO files are ignored by Git and are built
automatically by the corresponding launcher when missing.