From 4e86a23634e317a565a01ec206f7bc1056dac1e8 Mon Sep 17 00:00:00 2001 From: Guofang Date: Mon, 28 Sep 2026 22:01:26 +0800 Subject: [PATCH] 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 --- download-images.sh | 54 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/download-images.sh b/download-images.sh index 1e2c757..23ce617 100755 --- a/download-images.sh +++ b/download-images.sh @@ -5,20 +5,53 @@ images_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" base_qcow2_dir="${images_dir}/base-qcow2" install_iso_dir="${images_dir}/install-iso" tools_iso_dir="${images_dir}/tools-iso" -debian_image="${base_qcow2_dir}/debian-13-generic-amd64-20260810-2566.qcow2" -alma_image="${base_qcow2_dir}/AlmaLinux-10-GenericCloud-10.2-20260526.0.x86_64.qcow2" -fedora_image="${base_qcow2_dir}/Fedora-Cloud-Base-Generic-44-1.7.x86_64.qcow2" + +normalize_arch() { + case "$1" in + arm64|aarch64) printf 'arm64\n' ;; + x86_64|amd64) printf 'amd64\n' ;; + *) printf 'Error: unsupported architecture: %s\n' "$1" >&2; exit 1 ;; + esac +} +image_arch="$(normalize_arch "${VM_IMAGE_ARCH:-$(uname -m)}")" + +if [[ "$image_arch" == arm64 ]]; then + debian_image="${base_qcow2_dir}/debian-13-generic-arm64-20260810-2566.qcow2" + alma_image="${base_qcow2_dir}/AlmaLinux-10-GenericCloud-10.2-20260526.0.aarch64.qcow2" + fedora_image="${base_qcow2_dir}/Fedora-Cloud-Base-Generic-44-1.7.aarch64.qcow2" + debian_url_default="https://cloud.debian.org/images/cloud/trixie/20260810-2566/debian-13-generic-arm64-20260810-2566.qcow2" + alma_url_default="https://repo.almalinux.org/almalinux/10/cloud/aarch64/images/AlmaLinux-10-GenericCloud-10.2-20260526.0.aarch64.qcow2" + fedora_url_default="https://download.fedoraproject.org/pub/fedora/linux/releases/44/Cloud/aarch64/images/Fedora-Cloud-Base-Generic-44-1.7.aarch64.qcow2" + # TODO: these were pinned for the amd64/x86_64 builds; verification is + # skipped (empty default) for the arm64/aarch64 builds until their + # checksums are fetched and pinned via DEBIAN_IMAGE_SHA512 / + # ALMA_IMAGE_SHA256 / FEDORA_IMAGE_SHA256. + debian_sha512_default="" + alma_sha256_default="" + fedora_sha256_default="" +else + debian_image="${base_qcow2_dir}/debian-13-generic-amd64-20260810-2566.qcow2" + alma_image="${base_qcow2_dir}/AlmaLinux-10-GenericCloud-10.2-20260526.0.x86_64.qcow2" + fedora_image="${base_qcow2_dir}/Fedora-Cloud-Base-Generic-44-1.7.x86_64.qcow2" + debian_url_default="https://cloud.debian.org/images/cloud/trixie/20260810-2566/debian-13-generic-amd64-20260810-2566.qcow2" + alma_url_default="https://repo.almalinux.org/almalinux/10/cloud/x86_64/images/AlmaLinux-10-GenericCloud-10.2-20260526.0.x86_64.qcow2" + fedora_url_default="https://download.fedoraproject.org/pub/fedora/linux/releases/44/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-44-1.7.x86_64.qcow2" + debian_sha512_default="f6978100d8031c266d55d7815ceea7fcdeacf28e1e5834fdb9c94ac96880a054a6e6f8681c2d3b0584e0057eaf3ef7353856b85212d04134744faa9b3bb1f24f" + alma_sha256_default="47f2218668dd4776be140dd92fa3bea700be1766e2c7d88bdfd6a4b50f477b4d" + fedora_sha256_default="28680fe5b371a5a82ebf43a31926e086a168e59949d03969c5093e7071f90b7f" +fi + virtio_image="${tools_iso_dir}/virtio-win.iso" windows_qcow2_image="${base_qcow2_dir}/Win11_25H2_English_x64_v2.qcow2" windows_iso_image="${install_iso_dir}/Win11_25H2_English_x64_v2.iso" -debian_url="${DEBIAN_IMAGE_URL:-https://cloud.debian.org/images/cloud/trixie/20260810-2566/debian-13-generic-amd64-20260810-2566.qcow2}" -alma_url="${ALMA_IMAGE_URL:-https://repo.almalinux.org/almalinux/10/cloud/x86_64/images/AlmaLinux-10-GenericCloud-10.2-20260526.0.x86_64.qcow2}" -fedora_url="${FEDORA_IMAGE_URL:-https://download.fedoraproject.org/pub/fedora/linux/releases/44/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-44-1.7.x86_64.qcow2}" +debian_url="${DEBIAN_IMAGE_URL:-$debian_url_default}" +alma_url="${ALMA_IMAGE_URL:-$alma_url_default}" +fedora_url="${FEDORA_IMAGE_URL:-$fedora_url_default}" virtio_url="${VIRTIO_WIN_ISO_URL:-https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso}" -debian_sha512="${DEBIAN_IMAGE_SHA512:-f6978100d8031c266d55d7815ceea7fcdeacf28e1e5834fdb9c94ac96880a054a6e6f8681c2d3b0584e0057eaf3ef7353856b85212d04134744faa9b3bb1f24f}" -alma_sha256="${ALMA_IMAGE_SHA256:-47f2218668dd4776be140dd92fa3bea700be1766e2c7d88bdfd6a4b50f477b4d}" -fedora_sha256="${FEDORA_IMAGE_SHA256:-28680fe5b371a5a82ebf43a31926e086a168e59949d03969c5093e7071f90b7f}" +debian_sha512="${DEBIAN_IMAGE_SHA512:-$debian_sha512_default}" +alma_sha256="${ALMA_IMAGE_SHA256:-$alma_sha256_default}" +fedora_sha256="${FEDORA_IMAGE_SHA256:-$fedora_sha256_default}" force_download=false usage() { @@ -27,7 +60,8 @@ Usage: $(basename "$0") [--force] [all|debian13|almalinux10|fedora44|virtio-win] $(basename "$0") --print-path TARGET [--iso] Download one or more shared VM images. With no arguments, all targets are -processed. +processed. The Debian/AlmaLinux/Fedora image architecture (arm64 or amd64) +is auto-detected from the host; override it with VM_IMAGE_ARCH. --force removes existing files and partial downloads for the selected targets, then downloads them again from the beginning.