diff --git a/README.md b/README.md index 2d7d1d7..debcb86 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ Download or check selected targets: ./download-images.sh debian13 ./download-images.sh almalinux10 ./download-images.sh fedora44 +./download-images.sh ubuntu2604 ./download-images.sh virtio-win ``` @@ -36,6 +37,7 @@ The path interface prints one absolute path without downloading anything: ./download-images.sh --print-path debian13 ./download-images.sh --print-path almalinux10 ./download-images.sh --print-path fedora44 +./download-images.sh --print-path ubuntu2604 ./download-images.sh --print-path virtio-win ./download-images.sh --print-path windows11 ./download-images.sh --print-path windows11 --iso @@ -48,13 +50,14 @@ ISO (for example `Win11_25H2_English_x64_v2.iso` → existing `*Win*11*x64*.qcow2` in `base-qcow2/` is used instead. Download URLs can be overridden with `DEBIAN_IMAGE_URL`, `ALMA_IMAGE_URL`, -`FEDORA_IMAGE_URL`, and `VIRTIO_WIN_ISO_URL`. Each may list several mirrors of -the same file, separated by whitespace; the Fedora image defaults to the TUNA, -BFSU and NJU mirrors. +`FEDORA_IMAGE_URL`, `UBUNTU_IMAGE_URL`, and `VIRTIO_WIN_ISO_URL`. Each may +list several mirrors of the same file, separated by whitespace; the Fedora +image defaults to the TUNA, BFSU and NJU mirrors, and the Ubuntu image to the +TUNA, NJU and official cloud-images.ubuntu.com mirrors. When [aria2](https://aria2.github.io/) is installed (`aria2c`), an image is downloaded from all of its mirrors at once, with a single connection to each mirror. Without it, `curl` (or `wget`) tries the mirrors in order. A partial download is only resumed with the same downloader and mirror list; otherwise -it starts over. The Fedora checksum can be -overridden with `FEDORA_IMAGE_SHA256` when using a custom image. +it starts over. The Fedora and Ubuntu checksums can be overridden with +`FEDORA_IMAGE_SHA256` and `UBUNTU_IMAGE_SHA256` when using a custom image. diff --git a/download-images.sh b/download-images.sh index 048f995..948e196 100755 --- a/download-images.sh +++ b/download-images.sh @@ -19,11 +19,16 @@ 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" + ubuntu_image="${base_qcow2_dir}/ubuntu-26.04-server-cloudimg-arm64-20260927.img" 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://mirrors.tuna.tsinghua.edu.cn/fedora/releases/44/Cloud/aarch64/images/Fedora-Cloud-Base-Generic-44-1.7.aarch64.qcow2 https://mirrors.bfsu.edu.cn/fedora/releases/44/Cloud/aarch64/images/Fedora-Cloud-Base-Generic-44-1.7.aarch64.qcow2 https://mirrors.nju.edu.cn/fedora/releases/44/Cloud/aarch64/images/Fedora-Cloud-Base-Generic-44-1.7.aarch64.qcow2" + ubuntu_url_default="https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/resolute/20260927/resolute-server-cloudimg-arm64.img + https://mirrors.nju.edu.cn/ubuntu-cloud-images/releases/26.04/release-20260927/ubuntu-26.04-server-cloudimg-arm64.img + https://cloud-images.ubuntu.com/releases/26.04/release-20260927/ubuntu-26.04-server-cloudimg-arm64.img" + ubuntu_sha256_default="63a93bd5a8d76e33b15ceb5daa3657bd79be804748051ab178e643b0f5da22e7" # 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 / @@ -35,14 +40,19 @@ 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" + ubuntu_image="${base_qcow2_dir}/ubuntu-26.04-server-cloudimg-amd64-20260927.img" 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://mirrors.tuna.tsinghua.edu.cn/fedora/releases/44/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-44-1.7.x86_64.qcow2 https://mirrors.bfsu.edu.cn/fedora/releases/44/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-44-1.7.x86_64.qcow2 https://mirrors.nju.edu.cn/fedora/releases/44/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-44-1.7.x86_64.qcow2" + ubuntu_url_default="https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/resolute/20260927/resolute-server-cloudimg-amd64.img + https://mirrors.nju.edu.cn/ubuntu-cloud-images/releases/26.04/release-20260927/ubuntu-26.04-server-cloudimg-amd64.img + https://cloud-images.ubuntu.com/releases/26.04/release-20260927/ubuntu-26.04-server-cloudimg-amd64.img" debian_sha512_default="f6978100d8031c266d55d7815ceea7fcdeacf28e1e5834fdb9c94ac96880a054a6e6f8681c2d3b0584e0057eaf3ef7353856b85212d04134744faa9b3bb1f24f" alma_sha256_default="47f2218668dd4776be140dd92fa3bea700be1766e2c7d88bdfd6a4b50f477b4d" fedora_sha256_default="28680fe5b371a5a82ebf43a31926e086a168e59949d03969c5093e7071f90b7f" + ubuntu_sha256_default="8800651811af9a85465ad1d552add729947bb16488dddb4a9b5305a3d97332b2" fi virtio_image="${tools_iso_dir}/virtio-win.iso" @@ -89,19 +99,21 @@ windows_qcow2_path() { debian_url="${DEBIAN_IMAGE_URL:-$debian_url_default}" alma_url="${ALMA_IMAGE_URL:-$alma_url_default}" fedora_url="${FEDORA_IMAGE_URL:-$fedora_url_default}" +ubuntu_url="${UBUNTU_IMAGE_URL:-$ubuntu_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:-$debian_sha512_default}" alma_sha256="${ALMA_IMAGE_SHA256:-$alma_sha256_default}" fedora_sha256="${FEDORA_IMAGE_SHA256:-$fedora_sha256_default}" +ubuntu_sha256="${UBUNTU_IMAGE_SHA256:-$ubuntu_sha256_default}" force_download=false usage() { cat <&2; usage >&2; exit 2 ;; esac @@ -378,6 +391,15 @@ if wants_target fedora44; then "$fedora_sha256" fi +if wants_target ubuntu2604; then + download_file \ + 'Ubuntu 26.04 cloud image' \ + "$ubuntu_url" \ + "$ubuntu_image" \ + sha256 \ + "$ubuntu_sha256" +fi + if wants_target virtio-win; then download_file \ 'VirtIO Windows tools ISO' \