From bc614fd233768137c118dfcfa74fb121fb48c7d1 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 20 Oct 2024 16:20:12 +0200 Subject: [PATCH 001/216] feat: Use q35 machine type for Windows XP (#823) --- Dockerfile | 2 +- src/define.sh | 34 ++++++++++++++++------------------ src/install.sh | 11 +++++++++++ src/samba.sh | 12 ++---------- 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/Dockerfile b/Dockerfile index 22a73af..61b4567 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM scratch AS build-amd64 -COPY --from=qemux/qemu-docker:6.05 / / +COPY --from=qemux/qemu-docker:6.06 / / ARG VERSION_ARG="0.0" ARG DEBCONF_NOWARNINGS="yes" diff --git a/src/define.sh b/src/define.sh index e496be5..271f38c 100644 --- a/src/define.sh +++ b/src/define.sh @@ -2106,39 +2106,37 @@ setMachine() { local dir="$3" local desc="$4" - case "${id,,}" in - "win9"* | "win2k"* ) - MACHINE="pc-i440fx-2.4" ;; - "winxp"* | "win2003"* | "winvistax86"* | "win7x86"* ) - MACHINE="pc-q35-2.10" ;; - esac - - case "${id,,}" in - "win9"* | "win2k"* | "winxp"* | "win2003"* ) - BOOT_MODE="windows_legacy" ;; - "winvista"* | "win7"* | "win2008"* ) - BOOT_MODE="windows_legacy" ;; - esac - case "${id,,}" in "win9"* ) - DISK_TYPE="auto" ETFS="[BOOT]/Boot-1.44M.img" ;; "win2k"* ) - DISK_TYPE="auto" ETFS="[BOOT]/Boot-NoEmul.img" ;; "winxp"* ) - DISK_TYPE="blk" if ! prepareXP "$iso" "$dir" "$desc"; then error "Failed to prepare $desc ISO!" && return 1 fi ;; "win2003"* ) - DISK_TYPE="blk" if ! prepare2k3 "$iso" "$dir" "$desc"; then error "Failed to prepare $desc ISO!" && return 1 fi ;; esac + case "${id,,}" in + "win9"* | "win2k"* ) + USB="None" + DISK_TYPE="auto" + MACHINE="pc-i440fx-2.4" + BOOT_MODE="windows_legacy" ;; + "winxp"* | "win2003"* ) + USB="None" + DISK_TYPE="blk" + BOOT_MODE="windows_legacy" + # Prevent bluescreen if 64 bit PCI hole size is >2G. + ARGS="-global q35-pcihost.x-pci-hole64-fix=false" ;; + "winvista"* | "win7"* | "win2008"* ) + BOOT_MODE="windows_legacy" ;; + esac + return 0 } diff --git a/src/install.sh b/src/install.sh index 3170833..b03f55a 100644 --- a/src/install.sh +++ b/src/install.sh @@ -120,6 +120,7 @@ finishInstall() { rm -f "$STORAGE/windows.old" rm -f "$STORAGE/windows.vga" + rm -f "$STORAGE/windows.args" rm -f "$STORAGE/windows.base" rm -f "$STORAGE/windows.boot" rm -f "$STORAGE/windows.mode" @@ -156,6 +157,11 @@ finishInstall() { fi fi + if [ -n "${ARGS:-}" ]; then + ARGUMENTS="$ARGS ${ARGUMENTS:-}" + echo "$ARGS" > "$STORAGE/windows.args" + fi + if [ -n "${DISK_TYPE:-}" ] && [[ "${DISK_TYPE:-}" != "scsi" ]]; then echo "$DISK_TYPE" > "$STORAGE/windows.type" fi @@ -965,6 +971,11 @@ bootWindows() { rm -rf "$TMP" + if [ -f "$STORAGE/windows.args" ]; then + ARGS=$(<"$STORAGE/windows.args") + ARGUMENTS="$ARGS ${ARGUMENTS:-}" + fi + if [ -s "$STORAGE/windows.type" ] && [ -f "$STORAGE/windows.type" ]; then [ -z "${DISK_TYPE:-}" ] && DISK_TYPE=$(<"$STORAGE/windows.type") fi diff --git a/src/samba.sh b/src/samba.sh index 498194f..3137d05 100644 --- a/src/samba.sh +++ b/src/samba.sh @@ -94,16 +94,8 @@ if ! smbd; then smbd -i --debug-stdout || true fi -legacy="" - -if [ -f "$STORAGE/windows.old" ]; then - MT=$(<"$STORAGE/windows.old") - [[ "${MT,,}" == "pc-q35-2"* ]] && legacy="y" - [[ "${MT,,}" == "pc-i440fx-2"* ]] && legacy="y" -fi - -if [ -n "$legacy" ]; then - # Enable NetBIOS on Windows XP and lower +if [[ "${BOOT_MODE:-}" == "windows_legacy" ]]; then + # Enable NetBIOS on Windows 7 and lower if ! nmbd; then error "NetBIOS daemon failed to start!" nmbd -i --debug-stdout || true From 80dead14461b0fb0e4b373ba2234164bba0c0e3a Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 20 Oct 2024 16:39:42 +0200 Subject: [PATCH 002/216] fix: Enable USB for legacy machines (#824) --- src/define.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/define.sh b/src/define.sh index 271f38c..9006934 100644 --- a/src/define.sh +++ b/src/define.sh @@ -2123,12 +2123,10 @@ setMachine() { case "${id,,}" in "win9"* | "win2k"* ) - USB="None" DISK_TYPE="auto" MACHINE="pc-i440fx-2.4" BOOT_MODE="windows_legacy" ;; "winxp"* | "win2003"* ) - USB="None" DISK_TYPE="blk" BOOT_MODE="windows_legacy" # Prevent bluescreen if 64 bit PCI hole size is >2G. From b39507c5a4bf349ccaf8c098156c1ec10d20de13 Mon Sep 17 00:00:00 2001 From: Kroese Date: Thu, 24 Oct 2024 12:17:09 +0200 Subject: [PATCH 003/216] feat: Additional aliasses (#833) --- src/define.sh | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/define.sh b/src/define.sh index 9006934..c62aecb 100644 --- a/src/define.sh +++ b/src/define.sh @@ -26,19 +26,35 @@ parseVersion() { [ -z "$VERSION" ] && VERSION="win11" case "${VERSION,,}" in - "11" | "11p" | "win11" | "win11p" | "windows11" | "windows 11" ) + "11" | "11p" | "win11" | "pro11" | "win11p" | "windows11" | "windows 11" ) VERSION="win11x64" ;; "11e" | "win11e" | "windows11e" | "windows 11e" ) VERSION="win11x64-enterprise-eval" ;; - "10" | "10p" | "win10" | "win10p" | "windows10" | "windows 10" ) + "iot11" | "11i" | "11iot" | "win11i" | "win11-iot" | "win11x64-iot" | "win11x64-enterprise-iot-eval" ) + VERSION="win11x64-enterprise-iot-eval" + [ -z "$DETECTED" ] && DETECTED="win11x64-iot" + ;; + "ltsc11" | "11l" | "11ltsc" | "win11l" | "win11-ltsc" | "win11x64-ltsc" | "win11x64-enterprise-ltsc-eval" ) + VERSION="win11x64-enterprise-ltsc-eval" + [ -z "$DETECTED" ] && DETECTED="win11x64-ltsc" + ;; + "10" | "10p" | "win10" | "pro10" | "win10p" | "windows10" | "windows 10" ) VERSION="win10x64" ;; "10e" | "win10e" | "windows10e" | "windows 10e" ) VERSION="win10x64-enterprise-eval" ;; - "8" | "8p" | "81" | "81p" | "8.1" | "win8" | "win8p" | "win81" | "win81p" | "windows 8" ) + "iot10" | "10i" | "10iot" | "win10i" | "win10-iot" | "win10x64-iot" | "win10x64-enterprise-iot-eval" ) + VERSION="win10x64-enterprise-iot-eval" + [ -z "$DETECTED" ] && DETECTED="win10x64-iot" + ;; + "ltsc10" | "10l" | "10ltsc" | "win10l" | "win10-ltsc" | "win10x64-ltsc" | "win10x64-enterprise-ltsc-eval" ) + VERSION="win10x64-enterprise-ltsc-eval" + [ -z "$DETECTED" ] && DETECTED="win10x64-ltsc" + ;; + "8" | "8p" | "81" | "81p" | "pro8" | "8.1" | "win8" | "win8p" | "win81" | "win81p" | "windows 8" ) VERSION="win81x64" ;; "8e" | "81e" | "8.1e" | "win8e" | "win81e" | "windows 8e" ) @@ -105,22 +121,6 @@ parseVersion() { VERSION="tiny10" [ -z "$DETECTED" ] && DETECTED="win10x64-ltsc" ;; - "iot11" | "11iot" | "win11-iot" | "win11x64-iot" | "win11x64-enterprise-iot-eval" ) - VERSION="win11x64-enterprise-iot-eval" - [ -z "$DETECTED" ] && DETECTED="win11x64-iot" - ;; - "iot10" | "10iot" | "win10-iot" | "win10x64-iot" | "win10x64-enterprise-iot-eval" ) - VERSION="win10x64-enterprise-iot-eval" - [ -z "$DETECTED" ] && DETECTED="win10x64-iot" - ;; - "ltsc11" | "11ltsc" | "win11-ltsc" | "win11x64-ltsc" | "win11x64-enterprise-ltsc-eval" ) - VERSION="win11x64-enterprise-ltsc-eval" - [ -z "$DETECTED" ] && DETECTED="win11x64-ltsc" - ;; - "ltsc10" | "10ltsc" | "win10-ltsc" | "win10x64-ltsc" | "win10x64-enterprise-ltsc-eval" ) - VERSION="win10x64-enterprise-ltsc-eval" - [ -z "$DETECTED" ] && DETECTED="win10x64-ltsc" - ;; esac return 0 From 86a766381e2bee9bbd62168aa73256d5d4461f54 Mon Sep 17 00:00:00 2001 From: Kroese Date: Thu, 24 Oct 2024 17:49:02 +0200 Subject: [PATCH 004/216] feat: Support 32-bit Windows versions (#834) --- src/define.sh | 63 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/src/define.sh b/src/define.sh index c62aecb..806ad62 100644 --- a/src/define.sh +++ b/src/define.sh @@ -32,11 +32,11 @@ parseVersion() { "11e" | "win11e" | "windows11e" | "windows 11e" ) VERSION="win11x64-enterprise-eval" ;; - "iot11" | "11i" | "11iot" | "win11i" | "win11-iot" | "win11x64-iot" | "win11x64-enterprise-iot-eval" ) + "11i" | "11iot" | "iot11" | "win11i" | "win11-iot" | "win11x64-iot" | "win11x64-enterprise-iot-eval" ) VERSION="win11x64-enterprise-iot-eval" [ -z "$DETECTED" ] && DETECTED="win11x64-iot" ;; - "ltsc11" | "11l" | "11ltsc" | "win11l" | "win11-ltsc" | "win11x64-ltsc" | "win11x64-enterprise-ltsc-eval" ) + "11l" | "11ltsc" | "ltsc11" | "win11l" | "win11-ltsc" | "win11x64-ltsc" | "win11x64-enterprise-ltsc-eval" ) VERSION="win11x64-enterprise-ltsc-eval" [ -z "$DETECTED" ] && DETECTED="win11x64-ltsc" ;; @@ -46,11 +46,11 @@ parseVersion() { "10e" | "win10e" | "windows10e" | "windows 10e" ) VERSION="win10x64-enterprise-eval" ;; - "iot10" | "10i" | "10iot" | "win10i" | "win10-iot" | "win10x64-iot" | "win10x64-enterprise-iot-eval" ) + "10i" | "10iot" | "iot10" | "win10i" | "win10-iot" | "win10x64-iot" | "win10x64-enterprise-iot-eval" ) VERSION="win10x64-enterprise-iot-eval" [ -z "$DETECTED" ] && DETECTED="win10x64-iot" ;; - "ltsc10" | "10l" | "10ltsc" | "win10l" | "win10-ltsc" | "win10x64-ltsc" | "win10x64-enterprise-ltsc-eval" ) + "10l" | "10ltsc" | "ltsc10" | "win10l" | "win10-ltsc" | "win10x64-ltsc" | "win10x64-enterprise-ltsc-eval" ) VERSION="win10x64-enterprise-ltsc-eval" [ -z "$DETECTED" ] && DETECTED="win10x64-ltsc" ;; @@ -71,21 +71,21 @@ parseVersion() { VERSION="win7x86" [ -z "$DETECTED" ] && DETECTED="win7x86-enterprise" ;; - "vista" | "winvista" | "windowsvista" | "windows vista" ) + "vista" | "6" | "winvista" | "windowsvista" | "windows vista" ) VERSION="winvistax64" [ -z "$DETECTED" ] && DETECTED="winvistax64-enterprise" ;; - "vistu" | "winvistu" | "windowsvistu" | "windows vistu" ) + "vistu" | "6u" | "winvistu" | "windowsvistu" | "windows vistu" ) VERSION="winvistax64-ultimate" ;; - "vistax86" | "winvistax86" | "windowsvistax86" | "winvistax86-enterprise" ) + "vistax86" | "6x86" | "winvistax86" | "windowsvistax86" | "winvistax86-enterprise" ) VERSION="winvistax86" [ -z "$DETECTED" ] && DETECTED="winvistax86-enterprise" ;; - "xp" | "xp32" | "xpx86" | "winxp" | "winxp86" | "windowsxp" | "windows xp" ) + "xp" | "xp32" | "xpx86" | "5" | "5x86" | "winxp" | "winxp86" | "windowsxp" | "windows xp" ) VERSION="winxpx86" ;; - "xp64" | "xpx64" | "winxp64" | "winxpx64" | "windowsxp64" | "windowsxpx64" ) + "xp64" | "xpx64" | "5x64" | "winxp64" | "winxpx64" | "windowsxp64" | "windowsxpx64" ) VERSION="winxpx64" ;; "25" | "2025" | "win25" | "win2025" | "windows2025" | "windows 2025" ) @@ -473,6 +473,9 @@ fromFile() { ;; esac + local add="" + [[ "$arch" != "x64" ]] && add="$arch" + case "${file// /_}" in "win7"* | "win_7"* | *"windows7"* | *"windows_7"* ) id="win7${arch}" @@ -502,25 +505,25 @@ fromFile() { id="tiny10" ;; *"server2025"* | *"server_2025"* ) - id="win2025" + id="win2025${add}" ;; *"server2022"* | *"server_2022"* ) - id="win2022" + id="win2022${add}" ;; *"server2019"* | *"server_2019"* ) - id="win2019" + id="win2019${add}" ;; *"server2016"* | *"server_2016"* ) - id="win2016" + id="win2016${add}" ;; *"server2012"* | *"server_2012"* ) - id="win2012r2" + id="win2012r2${add}" ;; *"server2008"* | *"server_2008"* ) - id="win2008r2" + id="win2008r2${add}" ;; *"server2003"* | *"server_2003"* ) - id="win2003r2" + id="win2003r2${add}" ;; esac @@ -538,18 +541,22 @@ fromName() { local name="$1" local arch="$2" + local add="" + [[ "$arch" != "x64" ]] && add="$arch" + case "${name,,}" in - *"server 2025"* ) id="win2025" ;; - *"server 2022"* ) id="win2022" ;; - *"server 2019"* ) id="win2019" ;; - *"server 2016"* ) id="win2016" ;; - *"server 2012"* ) id="win2012r2" ;; - *"server 2008"* ) id="win2008r2" ;; *"windows 7"* ) id="win7${arch}" ;; *"windows 8"* ) id="win81${arch}" ;; *"windows 10"* ) id="win10${arch}" ;; *"windows 11"* ) id="win11${arch}" ;; *"windows vista"* ) id="winvista${arch}" ;; + *"server 2025"* ) id="win2025${add}" ;; + *"server 2022"* ) id="win2022${add}" ;; + *"server 2019"* ) id="win2019${add}" ;; + *"server 2016"* ) id="win2016${add}" ;; + *"server 2012"* ) id="win2012r2${add}" ;; + *"server 2008"* ) id="win2008r2${add}" ;; + *"server 2003"* ) id="win2003r2${add}" ;; esac echo "$id" @@ -589,7 +596,7 @@ getVersion() { *" enterprise"* ) id="$id-enterprise" ;; esac ;; - "win2025"* | "win2022"* | "win2019"* | "win2016"* | "win2012"* | "win2008"* ) + "win2025"* | "win2022"* | "win2019"* | "win2016"* | "win2012"* | "win2008"* | "win2003"* ) case "${name,,}" in *" evaluation"* ) id="$id-eval" ;; esac @@ -2128,13 +2135,17 @@ setMachine() { BOOT_MODE="windows_legacy" ;; "winxp"* | "win2003"* ) DISK_TYPE="blk" - BOOT_MODE="windows_legacy" - # Prevent bluescreen if 64 bit PCI hole size is >2G. - ARGS="-global q35-pcihost.x-pci-hole64-fix=false" ;; + BOOT_MODE="windows_legacy" ;; "winvista"* | "win7"* | "win2008"* ) BOOT_MODE="windows_legacy" ;; esac + case "${id,,}" in + "winxp"* | "win2003"* | "winvistax86"* | "win7x86"* | "win2008r2x86"* ) + # Prevent bluescreen if 64 bit PCI hole size is >2G. + ARGS="-global q35-pcihost.x-pci-hole64-fix=false" ;; + esac + return 0 } From f1f6c640b9f4a78e7fdc5ce5a61de840d3114d95 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 10 Nov 2024 00:01:12 +0100 Subject: [PATCH 005/216] docs: Version alias (#859) --- Dockerfile | 2 +- compose.yml | 2 +- kubernetes.yml | 4 +++- readme.md | 42 +++++++++++++++++++++--------------------- 4 files changed, 26 insertions(+), 24 deletions(-) diff --git a/Dockerfile b/Dockerfile index 61b4567..decadd1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,9 +37,9 @@ FROM build-${TARGETARCH} EXPOSE 8006 3389 VOLUME /storage +ENV VERSION="11" ENV RAM_SIZE="4G" ENV CPU_CORES="2" ENV DISK_SIZE="64G" -ENV VERSION="win11" ENTRYPOINT ["/usr/bin/tini", "-s", "/run/entry.sh"] diff --git a/compose.yml b/compose.yml index b97eaf1..9d0134b 100644 --- a/compose.yml +++ b/compose.yml @@ -3,7 +3,7 @@ services: image: dockurr/windows container_name: windows environment: - VERSION: "win11" + VERSION: "11" devices: - /dev/kvm cap_add: diff --git a/kubernetes.yml b/kubernetes.yml index 2fb5888..efa668d 100644 --- a/kubernetes.yml +++ b/kubernetes.yml @@ -30,8 +30,10 @@ spec: securityContext: privileged: true env: + - name: VERSION + value: "11" - name: RAM_SIZE - value: 4G + value: "4G" - name: CPU_CORES value: "2" - name: DISK_SIZE diff --git a/readme.md b/readme.md index 2e98468..ef87dff 100644 --- a/readme.md +++ b/readme.md @@ -34,7 +34,7 @@ services: image: dockurr/windows container_name: windows environment: - VERSION: "win11" + VERSION: "11" devices: - /dev/kvm cap_add: @@ -78,34 +78,34 @@ kubectl apply -f kubernetes.yml ```yaml environment: - VERSION: "win11" + VERSION: "11" ``` Select from the values below: - | **Value** | **Version** | **Size** | + | **Value** | **Version** | **Size** | |---|---|---| - | `win11` | Windows 11 Pro | 5.4 GB | - | `ltsc11` | Windows 11 LTSC | 4.2 GB | - | `win11e` | Windows 11 Enterprise | 5.8 GB | + | `11` | Windows 11 Pro | 5.4 GB | + | `11l` | Windows 11 LTSC | 4.2 GB | + | `11e` | Windows 11 Enterprise | 5.8 GB | |||| - | `win10` | Windows 10 Pro | 5.7 GB | - | `ltsc10` | Windows 10 LTSC | 4.6 GB | - | `win10e` | Windows 10 Enterprise | 5.2 GB | + | `10` | Windows 10 Pro | 5.7 GB | + | `10l` | Windows 10 LTSC | 4.6 GB | + | `10e` | Windows 10 Enterprise | 5.2 GB | |||| - | `win8` | Windows 8.1 Pro | 4.0 GB | - | `win8e` | Windows 8.1 Enterprise | 3.7 GB | - | `win7` | Windows 7 Enterprise | 3.0 GB | - | `vista` | Windows Vista Enterprise | 3.0 GB | - | `winxp` | Windows XP Professional | 0.6 GB | + | `8` | Windows 8.1 Pro | 4.0 GB | + | `8e` | Windows 8.1 Enterprise | 3.7 GB | + | `7e` | Windows 7 Enterprise | 3.0 GB | + | `ve` | Windows Vista Enterprise | 3.0 GB | + | `xp` | Windows XP Professional | 0.6 GB | |||| - | `2025` | Windows Server 2025 | 5.0 GB | - | `2022` | Windows Server 2022 | 4.7 GB | - | `2019` | Windows Server 2019 | 5.3 GB | - | `2016` | Windows Server 2016 | 6.5 GB | - | `2012` | Windows Server 2012 | 4.3 GB | - | `2008` | Windows Server 2008 | 3.0 GB | - | `2003` | Windows Server 2003 | 0.6 GB | + | `2025` | Windows Server 2025 | 5.0 GB | + | `2022` | Windows Server 2022 | 4.7 GB | + | `2019` | Windows Server 2019 | 5.3 GB | + | `2016` | Windows Server 2016 | 6.5 GB | + | `2012` | Windows Server 2012 | 4.3 GB | + | `2008` | Windows Server 2008 | 3.0 GB | + | `2003` | Windows Server 2003 | 0.6 GB | > [!TIP] > To install ARM64 versions of Windows use [dockur/windows-arm](https://github.com/dockur/windows-arm/). From 2cdb57a6790be2f9749a4873c7d9372926150125 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 10 Nov 2024 00:17:00 +0100 Subject: [PATCH 006/216] feat: Update download links (#860) --- src/define.sh | 59 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/src/define.sh b/src/define.sh index 806ad62..0eff317 100644 --- a/src/define.sh +++ b/src/define.sh @@ -71,14 +71,14 @@ parseVersion() { VERSION="win7x86" [ -z "$DETECTED" ] && DETECTED="win7x86-enterprise" ;; - "vista" | "6" | "winvista" | "windowsvista" | "windows vista" ) + "vista" | "ve" | "6" | "winvista" | "windowsvista" | "windows vista" ) VERSION="winvistax64" [ -z "$DETECTED" ] && DETECTED="winvistax64-enterprise" ;; - "vistu" | "6u" | "winvistu" | "windowsvistu" | "windows vistu" ) + "vistu" | "vu" | "6u" | "winvistu" | "windowsvistu" | "windows vistu" ) VERSION="winvistax64-ultimate" ;; - "vistax86" | "6x86" | "winvistax86" | "windowsvistax86" | "winvistax86-enterprise" ) + "vistax86" | "vex86" | "6x86" | "winvistax86" | "windowsvistax86" | "winvistax86-enterprise" ) VERSION="winvistax86" [ -z "$DETECTED" ] && DETECTED="winvistax86-enterprise" ;; @@ -961,17 +961,56 @@ getLink3() { culture=$(getLanguage "$lang" "culture") case "${id,,}" in + "win11x64-ltsc" | "win11x64-enterprise-ltsc-eval" ) + case "${culture,,}" in + "ar" | "ar-"* ) url="ar-sa_windows_11_enterprise_ltsc_2024_x64_dvd_8012f159.iso" ;; + "bg" | "bg-"* ) url="bg-bg_windows_11_enterprise_ltsc_2024_x64_dvd_2778f4e8.iso" ;; + "cs" | "cs-"* ) url="cs-cz_windows_11_enterprise_ltsc_2024_x64_dvd_d4ef05f2.iso" ;; + "da" | "da-"* ) url="da-dk_windows_11_enterprise_ltsc_2024_x64_dvd_c231c267.iso" ;; + "de" | "de-"* ) url="de-de_windows_11_enterprise_ltsc_2024_x64_dvd_4f136f69.iso" ;; + "el" | "el-"* ) url="el-gr_windows_11_enterprise_ltsc_2024_x64_dvd_54eaabb2.iso" ;; + "gb" | "en-gb" ) url="en-gb_windows_11_enterprise_ltsc_2024_x64_dvd_e2137661.iso" ;; + "en" | "en-"* ) + size=5125844992 + sum="157d8365a517c40afeb3106fdd74d0836e1025debbc343f2080e1a8687607f51" + url="en-us_windows_11_enterprise_ltsc_2024_x64_dvd_965cfb00.iso" ;; + "mx" | "es-mx" ) url="es-mx_windows_11_enterprise_ltsc_2024_x64_dvd_3310c094.iso" ;; + "es" | "es-"* ) url="es-es_windows_11_enterprise_ltsc_2024_x64_dvd_77392d61.iso" ;; + "et" | "et-"* ) url="et-ee_windows_11_enterprise_ltsc_2024_x64_dvd_2dbd4bfe.iso" ;; + "fi" | "fi-"* ) url="fi-fi_windows_11_enterprise_ltsc_2024_x64_dvd_998f5df6.iso" ;; + "ca" | "fr-ca" ) url="fr-ca_windows_11_enterprise_ltsc_2024_x64_dvd_78732953.iso" ;; + "fr" | "fr-"* ) url="fr-fr_windows_11_enterprise_ltsc_2024_x64_dvd_d66e386e.iso" ;; + "he" | "he-"* ) url="he-il_windows_11_enterprise_ltsc_2024_x64_dvd_fae050ec.iso" ;; + "hr" | "hr-"* ) url="hr-hr_windows_11_enterprise_ltsc_2024_x64_dvd_e3594411.iso" ;; + "hu" | "hu-"* ) url="hu-hu_windows_11_enterprise_ltsc_2024_x64_dvd_8fea6034.iso" ;; + "it" | "it-"* ) url="it-it_windows_11_enterprise_ltsc_2024_x64_dvd_1e8cabb6.iso" ;; + "ja" | "ja-"* ) url="ja-jp_windows_11_enterprise_ltsc_2024_x64_dvd_e59ad418.iso" ;; + "ko" | "ko-"* ) url="ko-kr_windows_11_enterprise_ltsc_2024_x64_dvd_b6b6eb18.iso" ;; + "lt" | "lt-"* ) url="lt-lt_windows_11_enterprise_ltsc_2024_x64_dvd_145479e9.iso" ;; + "lv" | "lv-"* ) url="lv-lv_windows_11_enterprise_ltsc_2024_x64_dvd_e0ebc53d.iso" ;; + "nb" | "nb-"* ) url="nb-no_windows_11_enterprise_ltsc_2024_x64_dvd_d41eeb48.iso" ;; + "nl" | "nl-"* ) url="nl-nl_windows_11_enterprise_ltsc_2024_x64_dvd_e3063aab.iso" ;; + "pl" | "pl-"* ) url="pl-pl_windows_11_enterprise_ltsc_2024_x64_dvd_e00807a1.iso" ;; + "br" | "pt-br" ) url="pt-br_windows_11_enterprise_ltsc_2024_x64_dvd_2bb6b75b.iso" ;; + "pt" | "pt-"* ) url="pt-pt_windows_11_enterprise_ltsc_2024_x64_dvd_2f34bd6b.iso" ;; + "ro" | "ro-"* ) url="ro-ro_windows_11_enterprise_ltsc_2024_x64_dvd_2eadb4df.iso" ;; + "ru" | "ru-"* ) url="ru-ru_windows_11_enterprise_ltsc_2024_x64_dvd_f9af5773.iso" ;; + "sk" | "sk-"* ) url="sk-sk_windows_11_enterprise_ltsc_2024_x64_dvd_03b916e7.iso" ;; + "sl" | "sl-"* ) url="sl-si_windows_11_enterprise_ltsc_2024_x64_dvd_310b3a76.iso" ;; + "sr" | "sr-"* ) url="sr-latn-rs_windows_11_enterprise_ltsc_2024_x64_dvd_3dfa5da5.iso" ;; + "sv" | "sv-"* ) url="sv-se_windows_11_enterprise_ltsc_2024_x64_dvd_191cf991.iso" ;; + "th" | "th-"* ) url="th-th_windows_11_enterprise_ltsc_2024_x64_dvd_47ce2c8a.iso" ;; + "tr" | "tr-"* ) url="tr-tr_windows_11_enterprise_ltsc_2024_x64_dvd_27bdab81.iso" ;; + "uk" | "uk-"* ) url="uk-ua_windows_11_enterprise_ltsc_2024_x64_dvd_b3f00872.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_windows_11_enterprise_ltsc_2024_x64_dvd_6287d84d.iso" ;; + "zh" | "zh-"* ) url="zh-cn_windows_11_enterprise_ltsc_2024_x64_dvd_cff9cd2d.iso" ;; + esac + ;; "win11x64-iot" | "win11x64-enterprise-iot-eval" ) [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-us" ]] && return 0 size=5144817664 sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" - url="X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" - ;; - "win11x64-ltsc" | "win11x64-enterprise-ltsc-eval" ) - [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-us" ]] && return 0 - size=5144817664 - sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" - url="X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" + url="en-us_windows_11_iot_enterprise_ltsc_2024_x64_dvd_f6b14814.iso" ;; "win10x64-ltsc" | "win10x64-enterprise-ltsc-eval" ) case "${culture,,}" in From 243b3bb5d6883f0c30bd5693db4821cc7fd63834 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 10 Nov 2024 02:45:01 +0100 Subject: [PATCH 007/216] chore(deps): update dockurr/windows-arm docker tag to v2.21 (#861) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index decadd1..82863a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,7 +31,7 @@ COPY --chmod=755 ./assets /run/assets ADD --chmod=755 https://raw.githubusercontent.com/christgau/wsdd/v0.8/src/wsdd.py /usr/sbin/wsdd ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.43-0/virtio-win-1.9.43.tar.xz /drivers.txz -FROM dockurr/windows-arm:2.20 AS build-arm64 +FROM dockurr/windows-arm:2.21 AS build-arm64 FROM build-${TARGETARCH} EXPOSE 8006 3389 From d92ac18210c0928d331d3b380b50de9ba5a1d44d Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 10 Nov 2024 11:31:54 +0100 Subject: [PATCH 008/216] docs: Fix typo (#862) --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index ef87dff..3e8dcf5 100644 --- a/readme.md +++ b/readme.md @@ -135,7 +135,7 @@ kubectl apply -f kubernetes.yml ### How do I share files with the host? - Open 'File Explorer' and click on the 'Network' section, you will see a computer called `host.lan`. Double-click it and it will show a folder called `Data`, which can be binded to any folder on your host via the compose file: + Open 'File Explorer' and click on the 'Network' section, you will see a computer called `host.lan`. Double-click it and it will show a folder called `Data`, which can be bound to any folder on your host via the compose file: ```yaml volumes: @@ -220,7 +220,7 @@ kubectl apply -f kubernetes.yml LANGUAGE: "French" ``` - You can choose between: 🇦🇪 Arabic, 🇧🇬 Bulgarian, 🇨🇳 Chinese, 🇭🇷 Croatian, 🇨🇿 Czech, 🇩🇰 Danish, 🇳🇱 Dutch, 🇬🇧 English, 🇪🇪 Estionian, 🇫🇮 Finnish, 🇫🇷 French, 🇩🇪 German, 🇬🇷 Greek, 🇮🇱 Hebrew, 🇭🇺 Hungarian, 🇮🇹 Italian, 🇯🇵 Japanese, 🇰🇷 Korean, 🇱🇻 Latvian, 🇱🇹 Lithuanian, 🇳🇴 Norwegian, 🇵🇱 Polish, 🇵🇹 Portuguese, 🇷🇴 Romanian, 🇷🇺 Russian, 🇷🇸 Serbian, 🇸🇰 Slovak, 🇸🇮 Slovenian, 🇪🇸 Spanish, 🇸🇪 Swedish, 🇹🇭 Thai, 🇹🇷 Turkish and 🇺🇦 Ukrainian. + You can choose between: 🇦🇪 Arabic, 🇧🇬 Bulgarian, 🇨🇳 Chinese, 🇭🇷 Croatian, 🇨🇿 Czech, 🇩🇰 Danish, 🇳🇱 Dutch, 🇬🇧 English, 🇪🇪 Estonian, 🇫🇮 Finnish, 🇫🇷 French, 🇩🇪 German, 🇬🇷 Greek, 🇮🇱 Hebrew, 🇭🇺 Hungarian, 🇮🇹 Italian, 🇯🇵 Japanese, 🇰🇷 Korean, 🇱🇻 Latvian, 🇱🇹 Lithuanian, 🇳🇴 Norwegian, 🇵🇱 Polish, 🇵🇹 Portuguese, 🇷🇴 Romanian, 🇷🇺 Russian, 🇷🇸 Serbian, 🇸🇰 Slovak, 🇸🇮 Slovenian, 🇪🇸 Spanish, 🇸🇪 Swedish, 🇹🇭 Thai, 🇹🇷 Turkish and 🇺🇦 Ukrainian. ### How do I select the keyboard layout? From e292d18d322f58429ba31aa25605c9a77e3ca1b0 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 11 Nov 2024 14:13:47 +0100 Subject: [PATCH 009/216] docs: KVM troubleshooting (#865) --- readme.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/readme.md b/readme.md index 3e8dcf5..4ad3c42 100644 --- a/readme.md +++ b/readme.md @@ -340,24 +340,28 @@ kubectl apply -f kubernetes.yml ### How do I verify if my system supports KVM? - To verify that your system supports KVM, run the following commands: + Only Linux and Windows 11 support KVM virtualization, macOS and Windows 10 do not unfortunately. + + You can run the following commands in Linux to check your system: ```bash sudo apt install cpu-checker sudo kvm-ok ``` - If you receive an error from `kvm-ok` indicating that KVM acceleration can't be used, please check whether: + If you receive an error from `kvm-ok` indicating that KVM cannot be used, please check whether: - the virtualization extensions (`Intel VT-x` or `AMD SVM`) are enabled in your BIOS. - - you are running an operating system that supports them, like Linux or Windows 11 (macOS and Windows 10 do not unfortunately). - - you enabled "nested virtualization" if you are running the container inside a virtual machine. - you are not using a cloud provider, as most of them do not allow nested virtualization for their VPS's. - If you didn't receive any error from `kvm-ok` at all, but the container still complains that `/dev/kvm` is missing, it might help to add `privileged: true` to your compose file (or `--privileged` to your `run` command), to rule out any permission issue. + If you do not receive any error from `kvm-ok` but the container still complains about KVM, please check whether: + + - you are not using "Docker Desktop for Linux" as it does not support KVM, instead make use of Docker Engine directly. + + - it could help to add `privileged: true` to your compose file (or `sudo` to your `run` command), to rule out any permission issue. ### How do I run macOS in a container? From 7120584548b3d5fc99b0a8f645c67173d2518f05 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 11 Nov 2024 18:05:59 +0100 Subject: [PATCH 010/216] feat: Additional download mirrors (#870) --- Dockerfile | 2 +- src/define.sh | 597 +++++++++++++++++++++++++++++++++++++------------- src/mido.sh | 31 ++- 3 files changed, 477 insertions(+), 153 deletions(-) diff --git a/Dockerfile b/Dockerfile index 82863a7..e5abb6f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,7 +31,7 @@ COPY --chmod=755 ./assets /run/assets ADD --chmod=755 https://raw.githubusercontent.com/christgau/wsdd/v0.8/src/wsdd.py /usr/sbin/wsdd ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.43-0/virtio-win-1.9.43.tar.xz /drivers.txz -FROM dockurr/windows-arm:2.21 AS build-arm64 +FROM dockurr/windows-arm:2.22 AS build-arm64 FROM build-${TARGETARCH} EXPOSE 8006 3389 diff --git a/src/define.sh b/src/define.sh index 0eff317..a2706e3 100644 --- a/src/define.sh +++ b/src/define.sh @@ -957,53 +957,156 @@ getLink3() { local sum="" local size="" local host="https://drive.massgrave.dev" + local w19="windows_server_2019_x64_dvd" + local w25="windows_server_2025_x64_dvd" + local w16="windows_server_2016_vl_x64_dvd" + local w12="windows_server_2012_r2_vl_with_update_x64_dvd" + local w08="windows_server_2008_r2_with_sp1_vl_build_x64_dvd" + local w81="windows_8.1_enterprise_with_update_x64_dvd" + local l11="windows_11_enterprise_ltsc_2024_x64_dvd" + local l10="windows_10_enterprise_ltsc_2021_x64_dvd" + local c11="windows_11_consumer_editions_version_24h2_x64_dvd" + local b11="windows_11_business_editions_version_24h2_x64_dvd" + local w22="windows_server_2022_updated_oct_2024_x64_dvd_d1a47ecc" + local b10="windows_10_business_editions_version_22h2_updated_oct_2024_x64_dvd" + local c10="windows_10_consumer_editions_version_22h2_updated_oct_2024_x64_dvd_d0cfb2e9" culture=$(getLanguage "$lang" "culture") case "${id,,}" in + "win11x64" ) + case "${culture,,}" in + "ar" | "ar-"* ) url="ar-sa_${c11}_3c9a7ef3.iso" ;; + "bg" | "bg-"* ) url="bg-bg_${c11}_f8623745.iso" ;; + "cs" | "cs-"* ) url="cs-cz_${c11}_ae72ca80.iso" ;; + "da" | "da-"* ) url="da-dk_${c11}_4f25c452.iso" ;; + "de" | "de-"* ) url="de-de_${c11}_bc4adebe.iso" ;; + "el" | "el-"* ) url="el-gr_${c11}_9e6ef9a0.iso" ;; + "gb" | "en-gb" ) url="en-gb_${c11}_4b3a8183.iso" ;; + "en" | "en-"* ) + size=5819484160 + sum="b56b911bf18a2ceaeb3904d87e7c770bdf92d3099599d61ac2497b91bf190b11" + url="en-us_${c11}_1d5fcad3.iso" ;; + "mx" | "es-mx" ) url="es-es_${c11}_3bc0e5c3.iso" ;; + "es" | "es-"* ) url="es-mx_${c11}_a28d9dab.iso" ;; + "et" | "et-"* ) url="et-ee_${c11}_48306c65.iso" ;; + "fi" | "fi-"* ) url="fi-fi_${c11}_21618747.iso" ;; + "ca" | "fr-ca" ) url="fr-ca_${c11}_42755257.iso" ;; + "fr" | "fr-"* ) url="fr-fr_${c11}_033875c5.iso" ;; + "he" | "he-"* ) url="he-il_${c11}_533bc3ac.iso" ;; + "hr" | "hr-"* ) url="hr-hr_${c11}_40c769ed.iso" ;; + "hu" | "hu-"* ) url="hu-hu_${c11}_7d2259d6.iso" ;; + "it" | "it-"* ) url="it-it_${c11}_33e81ff0.iso" ;; + "ja" | "ja-"* ) url="ja-jp_${c11}_fc6538fd.iso" ;; + "ko" | "ko-"* ) url="ko-kr_${c11}_f09a396b.iso" ;; + "lt" | "lt-"* ) url="lt-lt_${c11}_22d54265.iso" ;; + "lv" | "lv-"* ) url="lv-lv_${c11}_5ff65441.iso" ;; + "nb" | "nb-"* ) url="nb-no_${c11}_5a5d625b.iso" ;; + "nl" | "nl-"* ) url="nl-nl_${c11}_7959020a.iso" ;; + "pl" | "pl-"* ) url="pl-pl_${c11}_c0dcd21b.iso" ;; + "br" | "pt-br" ) url="pt-br_${c11}_751fe150.iso" ;; + "pt" | "pt-"* ) url="pt-pt_${c11}_e0df188a.iso" ;; + "ro" | "ro-"* ) url="ro-ro_${c11}_0821b265.iso" ;; + "ru" | "ru-"* ) url="ru-ru_${c11}_784471d8.iso" ;; + "sk" | "sk-"* ) url="sk-sk_${c11}_fd13020e.iso" ;; + "sl" | "sl-"* ) url="sl-si_${c11}_9aa9f408.iso" ;; + "sr" | "sr-"* ) url="sr-latn-rs_${c11}_febab1a9.iso" ;; + "sv" | "sv-"* ) url="sv-se_${c11}_fe34647f.iso" ;; + "th" | "th-"* ) url="th-th_${c11}_fc3e523e.iso" ;; + "tr" | "tr-"* ) url="tr-tr_${c11}_443fefaf.iso" ;; + "uk" | "uk-"* ) url="uk-ua_${c11}_32966915.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_${c11}_d0825b63.iso" ;; + "zh" | "zh-"* ) url="zh-cn_${c11}_bfc0d79b.iso" ;; + esac + ;; + "win11x64-enterprise" | "win11x64-enterprise-eval" ) + case "${culture,,}" in + "ar" | "ar-"* ) url="ar-sa_${b11}_47dae48e.iso" ;; + "bg" | "bg-"* ) url="bg-bg_${b11}_4231caca.iso" ;; + "cs" | "cs-"* ) url="cs-cz_${b11}_ca1661fd.iso" ;; + "da" | "da-"* ) url="da-dk_${b11}_ac0db9fc.iso" ;; + "de" | "de-"* ) url="de-de_${b11}_87a70226.iso" ;; + "el" | "el-"* ) url="el-gr_${b11}_946ba34d.iso" ;; + "gb" | "en-gb" ) url="en-gb_${b11}_27d8c2f1.iso" ;; + "en" | "en-"* ) + size=5722114048 + sum="d0dca325314322518ae967d58c3061bcae57ee9743a8a1cf374aad8637e5e8ac" + url="en-us_${b11}_59a1851e.iso" ;; + "mx" | "es-mx" ) url="es-es_${b11}_86632f8d.iso" ;; + "es" | "es-"* ) url="es-mx_${b11}_6ee25ce4.iso" ;; + "et" | "et-"* ) url="et-ee_${b11}_c26c1e3a.iso" ;; + "fi" | "fi-"* ) url="fi-fi_${b11}_59dd0bb5.iso" ;; + "ca" | "fr-ca" ) url="fr-ca_${b11}_a02f0c99.iso" ;; + "fr" | "fr-"* ) url="fr-fr_${b11}_c0a4510e.iso" ;; + "he" | "he-"* ) url="he-il_${b11}_c844d280.iso" ;; + "hr" | "hr-"* ) url="hr-hr_${b11}_6e4839cc.iso" ;; + "hu" | "hu-"* ) url="hu-hu_${b11}_aed71101.iso" ;; + "it" | "it-"* ) url="it-it_${b11}_5552c3a1.iso" ;; + "ja" | "ja-"* ) url="ja-jp_${b11}_7fdb7541.iso" ;; + "ko" | "ko-"* ) url="ko-kr_${b11}_646bb9fc.iso" ;; + "lt" | "lt-"* ) url="lt-lt_${b11}_54d6d7e2.iso" ;; + "lv" | "lv-"* ) url="lv-lv_${b11}_acee0541.iso" ;; + "nb" | "nb-"* ) url="nb-no_${b11}_78f22960.iso" ;; + "nl" | "nl-"* ) url="nl-nl_${b11}_0719b251.iso" ;; + "pl" | "pl-"* ) url="pl-pl_${b11}_1a183794.iso" ;; + "br" | "pt-br" ) url="pt-br_${b11}_ecc90645.iso" ;; + "pt" | "pt-"* ) url="pt-pt_${b11}_e7bf77a1.iso" ;; + "ro" | "ro-"* ) url="ro-ro_${b11}_9adc8d7b.iso" ;; + "ru" | "ru-"* ) url="ru-ru_${b11}_f9b9b5d6.iso" ;; + "sk" | "sk-"* ) url="sk-sk_${b11}_1a91433b.iso" ;; + "sl" | "sl-"* ) url="sl-si_${b11}_0b79bd14.iso" ;; + "sr" | "sr-"* ) url="sr-latn-rs_${b11}_8a4b35b5.iso" ;; + "sv" | "sv-"* ) url="sv-se_${b11}_55ad9818.iso" ;; + "th" | "th-"* ) url="th-th_${b11}_a2a350c3.iso" ;; + "tr" | "tr-"* ) url="tr-tr_${b11}_f35a9f1b.iso" ;; + "uk" | "uk-"* ) url="uk-ua_${b11}_38ff1d1d.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_${b11}_a9b30de5.iso" ;; + "zh" | "zh-"* ) url="zh-cn_${b11}_5f9e5858.iso" ;; + esac + ;; "win11x64-ltsc" | "win11x64-enterprise-ltsc-eval" ) case "${culture,,}" in - "ar" | "ar-"* ) url="ar-sa_windows_11_enterprise_ltsc_2024_x64_dvd_8012f159.iso" ;; - "bg" | "bg-"* ) url="bg-bg_windows_11_enterprise_ltsc_2024_x64_dvd_2778f4e8.iso" ;; - "cs" | "cs-"* ) url="cs-cz_windows_11_enterprise_ltsc_2024_x64_dvd_d4ef05f2.iso" ;; - "da" | "da-"* ) url="da-dk_windows_11_enterprise_ltsc_2024_x64_dvd_c231c267.iso" ;; - "de" | "de-"* ) url="de-de_windows_11_enterprise_ltsc_2024_x64_dvd_4f136f69.iso" ;; - "el" | "el-"* ) url="el-gr_windows_11_enterprise_ltsc_2024_x64_dvd_54eaabb2.iso" ;; - "gb" | "en-gb" ) url="en-gb_windows_11_enterprise_ltsc_2024_x64_dvd_e2137661.iso" ;; + "ar" | "ar-"* ) url="ar-sa_${l11}_8012f159.iso" ;; + "bg" | "bg-"* ) url="bg-bg_${l11}_2778f4e8.iso" ;; + "cs" | "cs-"* ) url="cs-cz_${l11}_d4ef05f2.iso" ;; + "da" | "da-"* ) url="da-dk_${l11}_c231c267.iso" ;; + "de" | "de-"* ) url="de-de_${l11}_4f136f69.iso" ;; + "el" | "el-"* ) url="el-gr_${l11}_54eaabb2.iso" ;; + "gb" | "en-gb" ) url="en-gb_${l11}_e2137661.iso" ;; "en" | "en-"* ) size=5125844992 sum="157d8365a517c40afeb3106fdd74d0836e1025debbc343f2080e1a8687607f51" - url="en-us_windows_11_enterprise_ltsc_2024_x64_dvd_965cfb00.iso" ;; - "mx" | "es-mx" ) url="es-mx_windows_11_enterprise_ltsc_2024_x64_dvd_3310c094.iso" ;; - "es" | "es-"* ) url="es-es_windows_11_enterprise_ltsc_2024_x64_dvd_77392d61.iso" ;; - "et" | "et-"* ) url="et-ee_windows_11_enterprise_ltsc_2024_x64_dvd_2dbd4bfe.iso" ;; - "fi" | "fi-"* ) url="fi-fi_windows_11_enterprise_ltsc_2024_x64_dvd_998f5df6.iso" ;; - "ca" | "fr-ca" ) url="fr-ca_windows_11_enterprise_ltsc_2024_x64_dvd_78732953.iso" ;; - "fr" | "fr-"* ) url="fr-fr_windows_11_enterprise_ltsc_2024_x64_dvd_d66e386e.iso" ;; - "he" | "he-"* ) url="he-il_windows_11_enterprise_ltsc_2024_x64_dvd_fae050ec.iso" ;; - "hr" | "hr-"* ) url="hr-hr_windows_11_enterprise_ltsc_2024_x64_dvd_e3594411.iso" ;; - "hu" | "hu-"* ) url="hu-hu_windows_11_enterprise_ltsc_2024_x64_dvd_8fea6034.iso" ;; - "it" | "it-"* ) url="it-it_windows_11_enterprise_ltsc_2024_x64_dvd_1e8cabb6.iso" ;; - "ja" | "ja-"* ) url="ja-jp_windows_11_enterprise_ltsc_2024_x64_dvd_e59ad418.iso" ;; - "ko" | "ko-"* ) url="ko-kr_windows_11_enterprise_ltsc_2024_x64_dvd_b6b6eb18.iso" ;; - "lt" | "lt-"* ) url="lt-lt_windows_11_enterprise_ltsc_2024_x64_dvd_145479e9.iso" ;; - "lv" | "lv-"* ) url="lv-lv_windows_11_enterprise_ltsc_2024_x64_dvd_e0ebc53d.iso" ;; - "nb" | "nb-"* ) url="nb-no_windows_11_enterprise_ltsc_2024_x64_dvd_d41eeb48.iso" ;; - "nl" | "nl-"* ) url="nl-nl_windows_11_enterprise_ltsc_2024_x64_dvd_e3063aab.iso" ;; - "pl" | "pl-"* ) url="pl-pl_windows_11_enterprise_ltsc_2024_x64_dvd_e00807a1.iso" ;; - "br" | "pt-br" ) url="pt-br_windows_11_enterprise_ltsc_2024_x64_dvd_2bb6b75b.iso" ;; - "pt" | "pt-"* ) url="pt-pt_windows_11_enterprise_ltsc_2024_x64_dvd_2f34bd6b.iso" ;; - "ro" | "ro-"* ) url="ro-ro_windows_11_enterprise_ltsc_2024_x64_dvd_2eadb4df.iso" ;; - "ru" | "ru-"* ) url="ru-ru_windows_11_enterprise_ltsc_2024_x64_dvd_f9af5773.iso" ;; - "sk" | "sk-"* ) url="sk-sk_windows_11_enterprise_ltsc_2024_x64_dvd_03b916e7.iso" ;; - "sl" | "sl-"* ) url="sl-si_windows_11_enterprise_ltsc_2024_x64_dvd_310b3a76.iso" ;; - "sr" | "sr-"* ) url="sr-latn-rs_windows_11_enterprise_ltsc_2024_x64_dvd_3dfa5da5.iso" ;; - "sv" | "sv-"* ) url="sv-se_windows_11_enterprise_ltsc_2024_x64_dvd_191cf991.iso" ;; - "th" | "th-"* ) url="th-th_windows_11_enterprise_ltsc_2024_x64_dvd_47ce2c8a.iso" ;; - "tr" | "tr-"* ) url="tr-tr_windows_11_enterprise_ltsc_2024_x64_dvd_27bdab81.iso" ;; - "uk" | "uk-"* ) url="uk-ua_windows_11_enterprise_ltsc_2024_x64_dvd_b3f00872.iso" ;; - "zh-hk" | "zh-tw" ) url="zh-tw_windows_11_enterprise_ltsc_2024_x64_dvd_6287d84d.iso" ;; - "zh" | "zh-"* ) url="zh-cn_windows_11_enterprise_ltsc_2024_x64_dvd_cff9cd2d.iso" ;; + url="en-us_${l11}_965cfb00.iso" ;; + "mx" | "es-mx" ) url="es-mx_${l11}_3310c094.iso" ;; + "es" | "es-"* ) url="es-es_${l11}_77392d61.iso" ;; + "et" | "et-"* ) url="et-ee_${l11}_2dbd4bfe.iso" ;; + "fi" | "fi-"* ) url="fi-fi_${l11}_998f5df6.iso" ;; + "ca" | "fr-ca" ) url="fr-ca_${l11}_78732953.iso" ;; + "fr" | "fr-"* ) url="fr-fr_${l11}_d66e386e.iso" ;; + "he" | "he-"* ) url="he-il_${l11}_fae050ec.iso" ;; + "hr" | "hr-"* ) url="hr-hr_${l11}_e3594411.iso" ;; + "hu" | "hu-"* ) url="hu-hu_${l11}_8fea6034.iso" ;; + "it" | "it-"* ) url="it-it_${l11}_1e8cabb6.iso" ;; + "ja" | "ja-"* ) url="ja-jp_${l11}_e59ad418.iso" ;; + "ko" | "ko-"* ) url="ko-kr_${l11}_b6b6eb18.iso" ;; + "lt" | "lt-"* ) url="lt-lt_${l11}_145479e9.iso" ;; + "lv" | "lv-"* ) url="lv-lv_${l11}_e0ebc53d.iso" ;; + "nb" | "nb-"* ) url="nb-no_${l11}_d41eeb48.iso" ;; + "nl" | "nl-"* ) url="nl-nl_${l11}_e3063aab.iso" ;; + "pl" | "pl-"* ) url="pl-pl_${l11}_e00807a1.iso" ;; + "br" | "pt-br" ) url="pt-br_${l11}_2bb6b75b.iso" ;; + "pt" | "pt-"* ) url="pt-pt_${l11}_2f34bd6b.iso" ;; + "ro" | "ro-"* ) url="ro-ro_${l11}_2eadb4df.iso" ;; + "ru" | "ru-"* ) url="ru-ru_${l11}_f9af5773.iso" ;; + "sk" | "sk-"* ) url="sk-sk_${l11}_03b916e7.iso" ;; + "sl" | "sl-"* ) url="sl-si_${l11}_310b3a76.iso" ;; + "sr" | "sr-"* ) url="sr-latn-rs_${l11}_3dfa5da5.iso" ;; + "sv" | "sv-"* ) url="sv-se_${l11}_191cf991.iso" ;; + "th" | "th-"* ) url="th-th_${l11}_47ce2c8a.iso" ;; + "tr" | "tr-"* ) url="tr-tr_${l11}_27bdab81.iso" ;; + "uk" | "uk-"* ) url="uk-ua_${l11}_b3f00872.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_${l11}_6287d84d.iso" ;; + "zh" | "zh-"* ) url="zh-cn_${l11}_cff9cd2d.iso" ;; esac ;; "win11x64-iot" | "win11x64-enterprise-iot-eval" ) @@ -1012,49 +1115,139 @@ getLink3() { sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" url="en-us_windows_11_iot_enterprise_ltsc_2024_x64_dvd_f6b14814.iso" ;; + "win10x64" ) + case "${culture,,}" in + "ar" | "ar-"* ) url="ar-sa_${c10}.iso" ;; + "bg" | "bg-"* ) url="bg-bg_${c10}.iso" ;; + "cs" | "cs-"* ) url="cs-cz_${c10}.iso" ;; + "da" | "da-"* ) url="da-dk_${c10}.iso" ;; + "de" | "de-"* ) url="de-de_${c10}.iso" ;; + "el" | "el-"* ) url="el-gr_${c10}.iso" ;; + "gb" | "en-gb" ) url="en-gb_${c10}.iso" ;; + "en" | "en-"* ) + size=7176140800 + sum="dda45d271061937657689b30944c792be97405fd5ca2110094049dc01a9201ec" + url="en-us_${c10}.iso" ;; + "mx" | "es-mx" ) url="es-mx_${c10}.iso" ;; + "es" | "es-"* ) url="es-es_${c10}.iso" ;; + "et" | "et-"* ) url="et-ee_${c10}.iso" ;; + "fi" | "fi-"* ) url="fi-fi_${c10}.iso" ;; + "ca" | "fr-ca" ) url="fr-ca_${c10}.iso" ;; + "fr" | "fr-"* ) url="fr-fr_${c10}.iso" ;; + "he" | "he-"* ) url="he-il_${c10}.iso" ;; + "hr" | "hr-"* ) url="hr-hr_${c10}.iso" ;; + "hu" | "hu-"* ) url="hu-hu_${c10}.iso" ;; + "it" | "it-"* ) url="it-it_${c10}.iso" ;; + "ja" | "ja-"* ) url="ja-jp_${c10}.iso" ;; + "ko" | "ko-"* ) url="ko-kr_${c10}.iso" ;; + "lt" | "lt-"* ) url="lt-lt_${c10}.iso" ;; + "lv" | "lv-"* ) url="lv-lv_${c10}.iso" ;; + "nb" | "nb-"* ) url="nb-no_${c10}.iso" ;; + "nl" | "nl-"* ) url="nl-nl_${c10}.iso" ;; + "pl" | "pl-"* ) url="pl-pl_${c10}.iso" ;; + "br" | "pt-br" ) url="pt-br_${c10}.iso" ;; + "pt" | "pt-"* ) url="pt-pt_${c10}.iso" ;; + "ro" | "ro-"* ) url="ro-ro_${c10}.iso" ;; + "ru" | "ru-"* ) url="ru-ru_${c10}.iso" ;; + "sk" | "sk-"* ) url="sk-sk_${c10}.iso" ;; + "sl" | "sl-"* ) url="sl-si_${c10}.iso" ;; + "sr" | "sr-"* ) url="sr-latn-rs_${c10}.iso" ;; + "sv" | "sv-"* ) url="sv-se_${c10}.iso" ;; + "th" | "th-"* ) url="th-th_${c10}.iso" ;; + "tr" | "tr-"* ) url="tr-tr_${c10}.iso" ;; + "uk" | "uk-"* ) url="uk-ua_${c10}.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_${c10}.iso" ;; + "zh" | "zh-"* ) url="zh-cn_${c10}.iso" ;; + esac + ;; + "win10x64-enterprise" | "win10x64-enterprise-eval" ) + case "${culture,,}" in + "ar" | "ar-"* ) url="ar-sa_${b10}_72d26609.iso" ;; + "bg" | "bg-"* ) url="bg-bg_${b10}_916cba75.iso" ;; + "cs" | "cs-"* ) url="cs-cz_${b10}_737b3dce.iso" ;; + "da" | "da-"* ) url="da-dk_${b10}_beb2874a.iso" ;; + "de" | "de-"* ) url="de-de_${b10}_e5656293.iso" ;; + "el" | "el-"* ) url="el-gr_${b10}_3dcced88.iso" ;; + "gb" | "en-gb" ) url="en-gb_${b10}_4b87ccc8.iso" ;; + "en" | "en-"* ) + size=6985318400 + sum="cd224fff371bbce4ab2120a3ace8ed30dc5c48c87f766ff699eed3327d0db83e" + url="en-us_${b10}_66a185c7.iso" ;; + "mx" | "es-mx" ) url="es-mx_${b10}_c71c3a9b.iso" ;; + "es" | "es-"* ) url="es-es_${b10}_6a893bdb.iso" ;; + "et" | "et-"* ) url="et-ee_${b10}_e73ca294.iso" ;; + "fi" | "fi-"* ) url="fi-fi_${b10}_b4138a1f.iso" ;; + "ca" | "fr-ca" ) url="fr-ca_${b10}_fa1fcfd1.iso" ;; + "fr" | "fr-"* ) url="fr-fr_${b10}_2582115c.iso" ;; + "he" | "he-"* ) url="he-il_${b10}_070da6e1.iso" ;; + "hr" | "hr-"* ) url="hr-hr_${b10}_7ab0b83d.iso" ;; + "hu" | "hu-"* ) url="hu-hu_${b10}_9ae1341c.iso" ;; + "it" | "it-"* ) url="it-it_${b10}_ed9771c1.iso" ;; + "ja" | "ja-"* ) url="ja-jp_${b10}_41fb6974.iso" ;; + "ko" | "ko-"* ) url="ko-kr_${b10}_8ee84458.iso" ;; + "lt" | "lt-"* ) url="lt-lt_${b10}_dde00c8b.iso" ;; + "lv" | "lv-"* ) url="lv-lv_${b10}_3c6ec670.iso" ;; + "nb" | "nb-"* ) url="nb-no_${b10}_5c0830a7.iso" ;; + "nl" | "nl-"* ) url="nl-nl_${b10}_98c1911c.iso" ;; + "pl" | "pl-"* ) url="pl-pl_${b10}_21470c6f.iso" ;; + "br" | "pt-br" ) url="pt-br_${b10}_a8287ba4.iso" ;; + "pt" | "pt-"* ) url="pt-pt_${b10}_927e183d.iso" ;; + "ro" | "ro-"* ) url="ro-ro_${b10}_05768a51.iso" ;; + "ru" | "ru-"* ) url="ru-ru_${b10}_e0d31c6c.iso" ;; + "sk" | "sk-"* ) url="sk-sk_${b10}_a09d6210.iso" ;; + "sl" | "sl-"* ) url="sl-si_${b10}_b6e9be37.iso" ;; + "sr" | "sr-"* ) url="sr-latn-rs_${b10}_d3114222.iso" ;; + "sv" | "sv-"* ) url="sv-se_${b10}_4fbbd5fa.iso" ;; + "th" | "th-"* ) url="th-th_${b10}_c820f914.iso" ;; + "tr" | "tr-"* ) url="tr-tr_${b10}_62d51ca5.iso" ;; + "uk" | "uk-"* ) url="uk-ua_${b10}_3d50cf88.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_${b10}_2fab2287.iso" ;; + "zh" | "zh-"* ) url="zh-cn_${b10}_52bd0537.iso" ;; + esac + ;; "win10x64-ltsc" | "win10x64-enterprise-ltsc-eval" ) case "${culture,,}" in - "ar" | "ar-"* ) url="ar-sa_windows_10_enterprise_ltsc_2021_x64_dvd_60bc2a7a.iso" ;; - "bg" | "bg-"* ) url="bg-bg_windows_10_enterprise_ltsc_2021_x64_dvd_b0887275.iso" ;; - "cs" | "cs-"* ) url="cs-cz_windows_10_enterprise_ltsc_2021_x64_dvd_d624c653.iso" ;; - "da" | "da-"* ) url="da-dk_windows_10_enterprise_ltsc_2021_x64_dvd_6ec511bb.iso" ;; - "de" | "de-"* ) url="de-de_windows_10_enterprise_ltsc_2021_x64_dvd_71796d33.iso" ;; - "el" | "el-"* ) url="el-gr_windows_10_enterprise_ltsc_2021_x64_dvd_c83eab34.iso" ;; - "gb" | "en-gb" ) url="en-gb_windows_10_enterprise_ltsc_2021_x64_dvd_7fe51fe8.iso" ;; + "ar" | "ar-"* ) url="ar-sa_${l10}_60bc2a7a.iso" ;; + "bg" | "bg-"* ) url="bg-bg_${l10}_b0887275.iso" ;; + "cs" | "cs-"* ) url="cs-cz_${l10}_d624c653.iso" ;; + "da" | "da-"* ) url="da-dk_${l10}_6ec511bb.iso" ;; + "de" | "de-"* ) url="de-de_${l10}_71796d33.iso" ;; + "el" | "el-"* ) url="el-gr_${l10}_c83eab34.iso" ;; + "gb" | "en-gb" ) url="en-gb_${l10}_7fe51fe8.iso" ;; "en" | "en-"* ) size=4899461120 sum="c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d" - url="en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96.iso" ;; - "mx" | "es-mx" ) url="es-mx_windows_10_enterprise_ltsc_2021_x64_dvd_f6aaf384.iso" ;; - "es" | "es-"* ) url="es-es_windows_10_enterprise_ltsc_2021_x64_dvd_51d721ea.iso" ;; - "et" | "et-"* ) url="et-ee_windows_10_enterprise_ltsc_2021_x64_dvd_012a5c50.iso" ;; - "fi" | "fi-"* ) url="fi-fi_windows_10_enterprise_ltsc_2021_x64_dvd_551582d9.iso" ;; - "ca" | "fr-ca" ) url="fr-ca_windows_10_enterprise_ltsc_2021_x64_dvd_2770e649.iso" ;; - "fr" | "fr-"* ) url="fr-fr_windows_10_enterprise_ltsc_2021_x64_dvd_bda01eb0.iso" ;; - "he" | "he-"* ) url="he-il_windows_10_enterprise_ltsc_2021_x64_dvd_3a55ecd6.iso" ;; - "hr" | "hr-"* ) url="hr-hr_windows_10_enterprise_ltsc_2021_x64_dvd_f5085b75.iso" ;; - "hu" | "hu-"* ) url="hu-hu_windows_10_enterprise_ltsc_2021_x64_dvd_d541ddb3.iso" ;; - "it" | "it-"* ) url="it-it_windows_10_enterprise_ltsc_2021_x64_dvd_0c1aa034.iso" ;; - "ja" | "ja-"* ) url="ja-jp_windows_10_enterprise_ltsc_2021_x64_dvd_ef58c6a1.iso" ;; - "ko" | "ko-"* ) url="ko-kr_windows_10_enterprise_ltsc_2021_x64_dvd_6d26f398.iso" ;; - "lt" | "lt-"* ) url="lt-lt_windows_10_enterprise_ltsc_2021_x64_dvd_9ffbbd5b.iso" ;; - "lv" | "lv-"* ) url="lv-lv_windows_10_enterprise_ltsc_2021_x64_dvd_6c89d2e0.iso" ;; - "nb" | "nb-"* ) url="nb-no_windows_10_enterprise_ltsc_2021_x64_dvd_c65c51a5.iso" ;; - "nl" | "nl-"* ) url="nl-nl_windows_10_enterprise_ltsc_2021_x64_dvd_88f53466.iso" ;; - "pl" | "pl-"* ) url="pl-pl_windows_10_enterprise_ltsc_2021_x64_dvd_eff40776.iso" ;; - "br" | "pt-br" ) url="pt-br_windows_10_enterprise_ltsc_2021_x64_dvd_f318268e.iso" ;; - "pt" | "pt-"* ) url="pt-pt_windows_10_enterprise_ltsc_2021_x64_dvd_f2e9b6a0.iso" ;; - "ro" | "ro-"* ) url="ro-ro_windows_10_enterprise_ltsc_2021_x64_dvd_ae2284d6.iso" ;; - "ru" | "ru-"* ) url="ru-ru_windows_10_enterprise_ltsc_2021_x64_dvd_5044a1e7.iso" ;; - "sk" | "sk-"* ) url="sk-sk_windows_10_enterprise_ltsc_2021_x64_dvd_d6c64c5f.iso" ;; - "sl" | "sl-"* ) url="sl-si_windows_10_enterprise_ltsc_2021_x64_dvd_ec090386.iso" ;; - "sr" | "sr-"* ) url="sr-latn-rs_windows_10_enterprise_ltsc_2021_x64_dvd_2d2f8815.iso" ;; - "sv" | "sv-"* ) url="sv-se_windows_10_enterprise_ltsc_2021_x64_dvd_9a28bb6b.iso" ;; - "th" | "th-"* ) url="th-th_windows_10_enterprise_ltsc_2021_x64_dvd_b7ed34d6.iso" ;; - "tr" | "tr-"* ) url="tr-tr_windows_10_enterprise_ltsc_2021_x64_dvd_e55b1896.iso" ;; - "uk" | "uk-"* ) url="uk-ua_windows_10_enterprise_ltsc_2021_x64_dvd_816da3c3.iso" ;; - "zh-hk" | "zh-tw" ) url="zh-tw_windows_10_enterprise_ltsc_2021_x64_dvd_80dba877.iso" ;; - "zh" | "zh-"* ) url="zh-cn_windows_10_enterprise_ltsc_2021_x64_dvd_033b7312.iso" ;; + url="en-us_${l10}_d289cf96.iso" ;; + "mx" | "es-mx" ) url="es-mx_${l10}_f6aaf384.iso" ;; + "es" | "es-"* ) url="es-es_${l10}_51d721ea.iso" ;; + "et" | "et-"* ) url="et-ee_${l10}_012a5c50.iso" ;; + "fi" | "fi-"* ) url="fi-fi_${l10}_551582d9.iso" ;; + "ca" | "fr-ca" ) url="fr-ca_${l10}_2770e649.iso" ;; + "fr" | "fr-"* ) url="fr-fr_${l10}_bda01eb0.iso" ;; + "he" | "he-"* ) url="he-il_${l10}_3a55ecd6.iso" ;; + "hr" | "hr-"* ) url="hr-hr_${l10}_f5085b75.iso" ;; + "hu" | "hu-"* ) url="hu-hu_${l10}_d541ddb3.iso" ;; + "it" | "it-"* ) url="it-it_${l10}_0c1aa034.iso" ;; + "ja" | "ja-"* ) url="ja-jp_${l10}_ef58c6a1.iso" ;; + "ko" | "ko-"* ) url="ko-kr_${l10}_6d26f398.iso" ;; + "lt" | "lt-"* ) url="lt-lt_${l10}_9ffbbd5b.iso" ;; + "lv" | "lv-"* ) url="lv-lv_${l10}_6c89d2e0.iso" ;; + "nb" | "nb-"* ) url="nb-no_${l10}_c65c51a5.iso" ;; + "nl" | "nl-"* ) url="nl-nl_${l10}_88f53466.iso" ;; + "pl" | "pl-"* ) url="pl-pl_${l10}_eff40776.iso" ;; + "br" | "pt-br" ) url="pt-br_${l10}_f318268e.iso" ;; + "pt" | "pt-"* ) url="pt-pt_${l10}_f2e9b6a0.iso" ;; + "ro" | "ro-"* ) url="ro-ro_${l10}_ae2284d6.iso" ;; + "ru" | "ru-"* ) url="ru-ru_${l10}_5044a1e7.iso" ;; + "sk" | "sk-"* ) url="sk-sk_${l10}_d6c64c5f.iso" ;; + "sl" | "sl-"* ) url="sl-si_${l10}_ec090386.iso" ;; + "sr" | "sr-"* ) url="sr-latn-rs_${l10}_2d2f8815.iso" ;; + "sv" | "sv-"* ) url="sv-se_${l10}_9a28bb6b.iso" ;; + "th" | "th-"* ) url="th-th_${l10}_b7ed34d6.iso" ;; + "tr" | "tr-"* ) url="tr-tr_${l10}_e55b1896.iso" ;; + "uk" | "uk-"* ) url="uk-ua_${l10}_816da3c3.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_${l10}_80dba877.iso" ;; + "zh" | "zh-"* ) url="zh-cn_${l10}_033b7312.iso" ;; esac ;; "win10x64-iot" | "win10x64-enterprise-iot-eval" ) @@ -1065,96 +1258,198 @@ getLink3() { ;; "win81x64-enterprise" | "win81x64-enterprise-eval" ) case "${culture,,}" in - "ar" | "ar-"* ) url="ar_windows_8.1_enterprise_with_update_x64_dvd_6050360.iso" ;; - "bg" | "bg-"* ) url="bg_windows_8.1_enterprise_with_update_x64_dvd_6050367.iso" ;; - "cs" | "cs-"* ) url="cs_windows_8.1_enterprise_with_update_x64_dvd_6050393.iso" ;; - "da" | "da-"* ) url="da_windows_8.1_enterprise_with_update_x64_dvd_6050394.iso" ;; - "de" | "de-"* ) url="de_windows_8.1_enterprise_with_update_x64_dvd_6050501.iso" ;; - "el" | "el-"* ) url="el_windows_8.1_enterprise_with_update_x64_dvd_6050503.iso" ;; - "gb" | "en-gb" ) url="en-gb_windows_8.1_enterprise_with_update_x64_dvd_6054383.iso" ;; + "ar" | "ar-"* ) url="ar_${w81}_6050360.iso" ;; + "bg" | "bg-"* ) url="bg_${w81}_6050367.iso" ;; + "cs" | "cs-"* ) url="cs_${w81}_6050393.iso" ;; + "da" | "da-"* ) url="da_${w81}_6050394.iso" ;; + "de" | "de-"* ) url="de_${w81}_6050501.iso" ;; + "el" | "el-"* ) url="el_${w81}_6050503.iso" ;; + "gb" | "en-gb" ) url="en-gb_${w81}_6054383.iso" ;; "en" | "en-"* ) size=4139163648 sum="c3c604c03677504e8905090a8ce5bb1dde76b6fd58e10f32e3a25bef21b2abe1" - url="en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso" ;; - "es" | "es-"* ) url="es_windows_8.1_enterprise_with_update_x64_dvd_6050578.iso" ;; - "et" | "et-"* ) url="et_windows_8.1_enterprise_with_update_x64_dvd_6054384.iso" ;; - "fi" | "fi-"* ) url="fi_windows_8.1_enterprise_with_update_x64_dvd_6050497.iso" ;; - "fr" | "fr-"* ) url="fr_windows_8.1_enterprise_with_update_x64_dvd_6050499.iso" ;; - "he" | "he-"* ) url="he_windows_8.1_enterprise_with_update_x64_dvd_6050504.iso" ;; - "hr" | "hr-"* ) url="hr_windows_8.1_enterprise_with_update_x64_dvd_6050391.iso" ;; - "hu" | "hu-"* ) url="hu_windows_8.1_enterprise_with_update_x64_dvd_6050505.iso" ;; - "it" | "it-"* ) url="it_windows_8.1_enterprise_with_update_x64_dvd_6050507.iso" ;; - "ja" | "ja-"* ) url="ja_windows_8.1_enterprise_with_update_x64_dvd_6050508.iso" ;; - "ko" | "ko-"* ) url="ko_windows_8.1_enterprise_with_update_x64_dvd_6050509.iso" ;; - "lt" | "lt-"* ) url="lt_windows_8.1_enterprise_with_update_x64_dvd_6050511.iso" ;; - "lv" | "lv-"* ) url="lv_windows_8.1_enterprise_with_update_x64_dvd_6050510.iso" ;; - "nb" | "nb-"* ) url="nb_windows_8.1_enterprise_with_update_x64_dvd_6050512.iso" ;; - "nl" | "nl-"* ) url="nl_windows_8.1_enterprise_with_update_x64_dvd_6054381.iso" ;; - "pl" | "pl-"* ) url="pl_windows_8.1_enterprise_with_update_x64_dvd_6050515.iso" ;; - "br" | "pt-br" ) url="pt_windows_8.1_enterprise_with_update_x64_dvd_6050521.iso" ;; - "pt" | "pt-"* ) url="pp_windows_8.1_enterprise_with_update_x64_dvd_6050526.iso" ;; - "ro" | "ro-"* ) url="ro_windows_8.1_enterprise_with_update_x64_dvd_6050534.iso" ;; - "ru" | "ru-"* ) url="ru_windows_8.1_enterprise_with_update_x64_dvd_6050542.iso" ;; - "sk" | "sk-"* ) url="sk_windows_8.1_enterprise_with_update_x64_dvd_6050562.iso" ;; - "sl" | "sl-"* ) url="sl_windows_8.1_enterprise_with_update_x64_dvd_6050570.iso" ;; - "sr" | "sr-"* ) url="sr-latn_windows_8.1_enterprise_with_update_x64_dvd_6050553.iso" ;; - "sv" | "sv-"* ) url="sv_windows_8.1_enterprise_with_update_x64_dvd_6050590.iso" ;; - "th" | "th-"* ) url="th_windows_8.1_enterprise_with_update_x64_dvd_6050602.iso" ;; - "tr" | "tr-"* ) url="tr_windows_8.1_enterprise_with_update_x64_dvd_6050609.iso" ;; - "uk" | "uk-"* ) url="uk_windows_8.1_enterprise_with_update_x64_dvd_6050618.iso" ;; - "zh-hk" ) url="hk_windows_8.1_enterprise_with_update_x64_dvd_6050380.iso" ;; - "zh-tw" ) url="tw_windows_8.1_enterprise_with_update_x64_dvd_6050387.iso" ;; - "zh" | "zh-"* ) url="cn_windows_8.1_enterprise_with_update_x64_dvd_6050374.iso" ;; + url="en_${w81}_6054382.iso" ;; + "es" | "es-"* ) url="es_${w81}_6050578.iso" ;; + "et" | "et-"* ) url="et_${w81}_6054384.iso" ;; + "fi" | "fi-"* ) url="fi_${w81}_6050497.iso" ;; + "fr" | "fr-"* ) url="fr_${w81}_6050499.iso" ;; + "he" | "he-"* ) url="he_${w81}_6050504.iso" ;; + "hr" | "hr-"* ) url="hr_${w81}_6050391.iso" ;; + "hu" | "hu-"* ) url="hu_${w81}_6050505.iso" ;; + "it" | "it-"* ) url="it_${w81}_6050507.iso" ;; + "ja" | "ja-"* ) url="ja_${w81}_6050508.iso" ;; + "ko" | "ko-"* ) url="ko_${w81}_6050509.iso" ;; + "lt" | "lt-"* ) url="lt_${w81}_6050511.iso" ;; + "lv" | "lv-"* ) url="lv_${w81}_6050510.iso" ;; + "nb" | "nb-"* ) url="nb_${w81}_6050512.iso" ;; + "nl" | "nl-"* ) url="nl_${w81}_6054381.iso" ;; + "pl" | "pl-"* ) url="pl_${w81}_6050515.iso" ;; + "br" | "pt-br" ) url="pt_${w81}_6050521.iso" ;; + "pt" | "pt-"* ) url="pp_${w81}_6050526.iso" ;; + "ro" | "ro-"* ) url="ro_${w81}_6050534.iso" ;; + "ru" | "ru-"* ) url="ru_${w81}_6050542.iso" ;; + "sk" | "sk-"* ) url="sk_${w81}_6050562.iso" ;; + "sl" | "sl-"* ) url="sl_${w81}_6050570.iso" ;; + "sr" | "sr-"* ) url="sr-latn_${w81}_6050553.iso" ;; + "sv" | "sv-"* ) url="sv_${w81}_6050590.iso" ;; + "th" | "th-"* ) url="th_${w81}_6050602.iso" ;; + "tr" | "tr-"* ) url="tr_${w81}_6050609.iso" ;; + "uk" | "uk-"* ) url="uk_${w81}_6050618.iso" ;; + "zh-hk" ) url="hk_${w81}_6050380.iso" ;; + "zh-tw" ) url="tw_${w81}_6050387.iso" ;; + "zh" | "zh-"* ) url="cn_${w81}_6050374.iso" ;; esac ;; "win2025" | "win2025-eval" ) case "${culture,,}" in - "cs" | "cs-"* ) url="cs-cz_windows_server_2025_preview_x64_dvd_8b1f5b49.iso" ;; - "de" | "de-"* ) url="de-de_windows_server_2025_preview_x64_dvd_1c3dfe1c.iso" ;; + "cs" | "cs-"* ) url="cs-cz_${w25}_4f54e1b0.iso" ;; + "de" | "de-"* ) url="de-de_${w25}_5282a882.iso" ;; "en" | "en-"* ) - size=5307176960 - sum="2293897341febdcea599f5412300b470b5288c6fd2b89666a7b27d283e8d3cf3" - url="en-us_windows_server_2025_preview_x64_dvd_ce9eb1a5.iso" ;; - "es" | "es-"* ) url="es-es_windows_server_2025_preview_x64_dvd_b07cc858.iso" ;; - "fr" | "fr-"* ) url="fr-fr_windows_server_2025_preview_x64_dvd_036e8a78.iso" ;; - "hu" | "hu-"* ) url="hu-hu_windows_server_2025_preview_x64_dvd_2d5d77e5.iso" ;; - "it" | "it-"* ) url="it-it_windows_server_2025_preview_x64_dvd_eaccac73.iso" ;; - "ja" | "ja-"* ) url="ja-jp_windows_server_2025_preview_x64_dvd_62f802be.iso" ;; - "ko" | "ko-"* ) url="ko-kr_windows_server_2025_preview_x64_dvd_e2c3e8f0.iso" ;; - "nl" | "nl-"* ) url="nl-nl_windows_server_2025_preview_x64_dvd_314b4ed1.iso" ;; - "pl" | "pl-"* ) url="pl-pl_windows_server_2025_preview_x64_dvd_be4b099e.iso" ;; - "br" | "pt-br" ) url="pt-br_windows_server_2025_preview_x64_dvd_993c803a.iso" ;; - "pt" | "pt-"* ) url="pt-pt_windows_server_2025_preview_x64_dvd_869aa534.iso" ;; - "ru" | "ru-"* ) url="ru-ru_windows_server_2025_preview_x64_dvd_5ada1817.iso" ;; - "sv" | "sv-"* ) url="sv-se_windows_server_2025_preview_x64_dvd_5fafd4f7.iso" ;; - "tr" | "tr-"* ) url="tr-tr_windows_server_2025_preview_x64_dvd_3aab7fda.iso" ;; - "zh-hk" | "zh-tw" ) url="zh-tw_windows_server_2025_preview_x64_dvd_9b147dcd.iso" ;; - "zh" | "zh-"* ) url="zh-cn_windows_server_2025_preview_x64_dvd_a12bb0bf.iso" ;; + size=6013794304 + sum="854109e1f215a29fc3541188297a6ca97c8a8f0f8c4dd6236b78dfdf845bf75e" + url="en-us_${w25}_b7ec10f3.iso" ;; + "es" | "es-"* ) url="es-es_${w25}_c15f0ce2.iso" ;; + "fr" | "fr-"* ) url="fr-fr_${w25}_bd6be507.iso" ;; + "hu" | "hu-"* ) url="hu-hu_${w25}_e13eb8bf.iso" ;; + "it" | "it-"* ) url="it-it_${w25}_98437899.iso" ;; + "ja" | "ja-"* ) url="ja-jp_${w25}_7a2e979b.iso" ;; + "ko" | "ko-"* ) url="ko-kr_${w25}_85109737.iso" ;; + "nl" | "nl-"* ) url="nl-nl_${w25}_5c3218f3.iso" ;; + "pl" | "pl-"* ) url="pl-pl_${w25}_aa368cf8.iso" ;; + "br" | "pt-br" ) url="pt-br_${w25}_66107129.iso" ;; + "pt" | "pt-"* ) url="pt-pt_${w25}_62bb3c31.iso" ;; + "ru" | "ru-"* ) url="ru-ru_${w25}_2dfe1679.iso" ;; + "sv" | "sv-"* ) url="sv-se_${w25}_512bf117.iso" ;; + "tr" | "tr-"* ) url="tr-tr_${w25}_a03fe256.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_${w25}_6d2c01e3.iso" ;; + "zh" | "zh-"* ) url="zh-cn_${w25}_1d93dd12.iso" ;; + esac + ;; + "win2022" | "win2022-eval" ) + case "${culture,,}" in + "cs" | "cs-"* ) url="cs-cz_${w22}.iso" ;; + "de" | "de-"* ) url="de-de_${w22}.iso" ;; + "en" | "en-"* ) + size=5973856256 + sum="61fa400b6e8f54e644529d024b18a578547147cdf815ea66c4b7961798717291" + url="en-us_${w22}.iso" ;; + "es" | "es-"* ) url="es-es_${w22}.iso" ;; + "fr" | "fr-"* ) url="fr-fr_${w22}.iso" ;; + "hu" | "hu-"* ) url="hu-hu_${w22}.iso" ;; + "it" | "it-"* ) url="it-it_${w22}.iso" ;; + "ja" | "ja-"* ) url="ja-jp_${w22}.iso" ;; + "ko" | "ko-"* ) url="ko-kr_${w22}.iso" ;; + "nl" | "nl-"* ) url="nl-nl_${w22}.iso" ;; + "pl" | "pl-"* ) url="pl-pl_${w22}.iso" ;; + "br" | "pt-br" ) url="pt-br_${w22}.iso" ;; + "pt" | "pt-"* ) url="pt-pt_${w22}.iso" ;; + "ru" | "ru-"* ) url="ru-ru_${w22}.iso" ;; + "sv" | "sv-"* ) url="sv-se_${w22}.iso" ;; + "tr" | "tr-"* ) url="tr-tr_${w22}.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_${w22}.iso" ;; + "zh" | "zh-"* ) url="zh-cn_${w22}.iso" ;; esac ;; "win2019" | "win2019-eval" ) case "${culture,,}" in - "cs" | "cs-"* ) url="cs-cz_windows_server_2019_x64_dvd_3781c31c.iso" ;; - "de" | "de-"* ) url="de-de_windows_server_2019_x64_dvd_132f7aa4.iso" ;; + "cs" | "cs-"* ) url="cs-cz_${w19}_3781c31c.iso" ;; + "de" | "de-"* ) url="de-de_${w19}_132f7aa4.iso" ;; "en" | "en-"* ) size=5651695616 sum="ea247e5cf4df3e5829bfaaf45d899933a2a67b1c700a02ee8141287a8520261c" - url="en-us_windows_server_2019_x64_dvd_f9475476.iso" ;; - "es" | "es-"* ) url="es-es_windows_server_2019_x64_dvd_3ce0fd9e.iso" ;; - "fr" | "fr-"* ) url="fr-fr_windows_server_2019_x64_dvd_f6f6acf6.iso" ;; - "hu" | "hu-"* ) url="hu-hu_windows_server_2019_x64_dvd_1d834c46.iso" ;; - "it" | "it-"* ) url="it-it_windows_server_2019_x64_dvd_454267de.iso" ;; - "ja" | "ja-"* ) url="ja-jp_windows_server_2019_x64_dvd_3899c3a3.iso" ;; - "ko" | "ko-"* ) url="ko-kr_windows_server_2019_x64_dvd_84101c0a.iso" ;; - "nl" | "nl-"* ) url="nl-nl_windows_server_2019_x64_dvd_f69d914e.iso" ;; - "pl" | "pl-"* ) url="pl-pl_windows_server_2019_x64_dvd_a50263e1.iso" ;; - "br" | "pt-br" ) url="pt-br_windows_server_2019_x64_dvd_aee8c1c2.iso" ;; - "pt" | "pt-"* ) url="pt-pt_windows_server_2019_x64_dvd_464373e8.iso" ;; - "ru" | "ru-"* ) url="ru-ru_windows_server_2019_x64_dvd_e02b76ba.iso" ;; - "sv" | "sv-"* ) url="sv-se_windows_server_2019_x64_dvd_48c1aeff.iso" ;; - "tr" | "tr-"* ) url="tr-tr_windows_server_2019_x64_dvd_b51af600.iso" ;; - "zh-hk" | "zh-tw" ) url="zh-tw_windows_server_2019_x64_dvd_a4c80409.iso" ;; - "zh" | "zh-"* ) url="zh-cn_windows_server_2019_x64_dvd_19d65722.iso" ;; + url="en-us_${w19}_f9475476.iso" ;; + "es" | "es-"* ) url="es-es_${w19}_3ce0fd9e.iso" ;; + "fr" | "fr-"* ) url="fr-fr_${w19}_f6f6acf6.iso" ;; + "hu" | "hu-"* ) url="hu-hu_${w19}_1d834c46.iso" ;; + "it" | "it-"* ) url="it-it_${w19}_454267de.iso" ;; + "ja" | "ja-"* ) url="ja-jp_${w19}_3899c3a3.iso" ;; + "ko" | "ko-"* ) url="ko-kr_${w19}_84101c0a.iso" ;; + "nl" | "nl-"* ) url="nl-nl_${w19}_f69d914e.iso" ;; + "pl" | "pl-"* ) url="pl-pl_${w19}_a50263e1.iso" ;; + "br" | "pt-br" ) url="pt-br_${w19}_aee8c1c2.iso" ;; + "pt" | "pt-"* ) url="pt-pt_${w19}_464373e8.iso" ;; + "ru" | "ru-"* ) url="ru-ru_${w19}_e02b76ba.iso" ;; + "sv" | "sv-"* ) url="sv-se_${w19}_48c1aeff.iso" ;; + "tr" | "tr-"* ) url="tr-tr_${w19}_b51af600.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_${w19}_a4c80409.iso" ;; + "zh" | "zh-"* ) url="zh-cn_${w19}_19d65722.iso" ;; + esac + ;; + "win2016" | "win2016-eval" ) + case "${culture,,}" in + "cs" | "cs-"* ) url="cs_${w16}_11636699.iso" ;; + "de" | "de-"* ) url="de_${w16}_11636696.iso" ;; + "en" | "en-"* ) + size=6003804160 + sum="47919ce8b4993f531ca1fa3f85941f4a72b47ebaa4d3a321fecf83ca9d17e6b8" + url="en_${w16}_11636701.iso" ;; + "es" | "es-"* ) url="es_${w16}_11636712.iso" ;; + "fr" | "fr-"* ) url="fr_${w16}_11636729.iso" ;; + "hu" | "hu-"* ) url="hu_${w16}_11636720.iso" ;; + "it" | "it-"* ) url="it_${w16}_11636710.iso" ;; + "ja" | "ja-"* ) url="ja_${w16}_11645964.iso" ;; + "ko" | "ko-"* ) url="ko_${w16}_11636709.iso" ;; + "nl" | "nl-"* ) url="nl_${w16}_11636731.iso" ;; + "pl" | "pl-"* ) url="pl_${w16}_11636719.iso" ;; + "br" | "pt-br" ) url="pt_${w16}_11636697.iso" ;; + "pt" | "pt-"* ) url="pp_${w16}_11637454.iso" ;; + "ru" | "ru-"* ) url="ru_${w16}_11636694.iso" ;; + "sv" | "sv-"* ) url="sv_${w16}_11636706.iso" ;; + "tr" | "tr-"* ) url="tr_${w16}_11636725.iso" ;; + "zh-hk" | "zh-tw" ) url="ct_${w16}_11636717.iso" ;; + "zh" | "zh-"* ) url="cn_${w16}_11636695.iso" ;; + esac + ;; + "win2012r2" | "win2012r2-eval" ) + case "${culture,,}" in + "cs" | "cs-"* ) url="cs_${w12}_6052752.iso" ;; + "de" | "de-"* ) url="de_${w12}_6052780.iso" ;; + "en" | "en-"* ) + size=5400115200 + sum="0e883ce28eb5c6f58a3a3007be978d43edb1035a4585506c1c4504c9e143408d" + url="en_${w12}_6052766.iso" ;; + "es" | "es-"* ) url="es_${w12}_6052831.iso" ;; + "fr" | "fr-"* ) url="fr_${w12}_6052772.iso" ;; + "hu" | "hu-"* ) url="hu_${w12}_6052786.iso" ;; + "it" | "it-"* ) url="it_${w12}_6052792.iso" ;; + "ja" | "ja-"* ) url="ja_${w12}_6052800.iso" ;; + "ko" | "ko-"* ) url="ko_${w12}_6052806.iso" ;; + "nl" | "nl-"* ) url="nl_${w12}_6052760.iso" ;; + "pl" | "pl-"* ) url="pl_${w12}_6052815.iso" ;; + "br" | "pt-br" ) url="pt_${w12}_6052819.iso" ;; + "pt" | "pt-"* ) url="pp_${w12}_6052823.iso" ;; + "ru" | "ru-"* ) url="ru_${w12}_6052827.iso" ;; + "sv" | "sv-"* ) url="sv_${w12}_6052835.iso" ;; + "tr" | "tr-"* ) url="tr_${w12}_6052838.iso" ;; + "zh-hk" ) url="hk_${w12}_6052739.iso" ;; + "zh-tw" ) url="tw_${w12}_6052746.iso" ;; + "zh" | "zh-"* ) url="cn_${w12}_6052729.iso" ;; + esac + ;; + "win2008r2" | "win2008r2-eval" ) + case "${culture,,}" in + "cs" | "cs-"* ) url="cs_${w08}_617402.iso" ;; + "de" | "de-"* ) url="de_${w08}_617404.iso" ;; + "en" | "en-"* ) + size=3166720000 + sum="9b0cd5b11cc2e92badb74450f0cac03006d3c63a2ada36cb1eb95c1bf4b2608f" + url="en_${w08}_617403.iso" ;; + "es" | "es-"* ) url="es_${w08}_617410.iso" ;; + "fr" | "fr-"* ) url="fr_${w08}_617392.iso" ;; + "hu" | "hu-"* ) url="hu_${w08}_617415.iso" ;; + "it" | "it-"* ) url="it_${w08}_619596.iso" ;; + "ja" | "ja-"* ) url="ja_${w08}_631466.iso" ;; + "ko" | "ko-"* ) url="ko_${w08}_617409.iso" ;; + "nl" | "nl-"* ) url="nl_${w08}_617395.iso" ;; + "pl" | "pl-"* ) url="pl_${w08}_617397.iso" ;; + "br" | "pt-br" ) url="pt_${w08}_617394.iso" ;; + "pt" | "pt-"* ) url="pp_${w08}_617411.iso" ;; + "ru" | "ru-"* ) url="ru_${w08}_617421.iso" ;; + "sv" | "sv-"* ) url="sv_${w08}_617400.iso" ;; + "tr" | "tr-"* ) url="tr_${w08}_617416.iso" ;; + "zh-hk" ) url="hk_${w08}_617386.iso" ;; + "zh-tw" ) url="tw_${w08}_617405.iso" ;; + "zh" | "zh-"* ) url="cn_${w08}_617396.iso" ;; esac ;; "win7x64" | "win7x64-enterprise" ) diff --git a/src/mido.sh b/src/mido.sh index ef8015e..be7884f 100644 --- a/src/mido.sh +++ b/src/mido.sh @@ -305,7 +305,7 @@ getWindows() { language=$(getLanguage "$lang" "desc") edition=$(printEdition "$version" "$desc") - local msg="Requesting $desc from Microsoft server..." + local msg="Requesting $desc from the Microsoft servers..." info "$msg" && html "$msg" case "${version,,}" in @@ -610,13 +610,18 @@ downloadImage() { local iso="$1" local version="$2" local lang="$3" + local delay=5 local tried="n" + local success="n" local url sum size base desc language + local msg="Will retry after $delay seconds..." if [[ "${version,,}" == "http"* ]]; then base=$(basename "$iso") desc=$(fromFile "$base") downloadFile "$iso" "$version" "" "" "" "$desc" && return 0 + info "$msg" && html "$msg" && sleep "$delay" + downloadFile "$iso" "$version" "" "" "" "$desc" && return 0 rm -f "$iso" return 1 fi @@ -637,11 +642,23 @@ downloadImage() { fi if isMido "$version" "$lang"; then + tried="y" + success="n" + if getWindows "$version" "$lang" "$desc"; then + success="y" + else + info "$msg" && html "$msg" && sleep "$delay" + getWindows "$version" "$lang" "$desc" && success="y" + fi + + if [[ "$success" == "y" ]]; then size=$(getMido "$version" "$lang" "size" ) sum=$(getMido "$version" "$lang" "sum") downloadFile "$iso" "$MIDO_URL" "$sum" "$size" "$lang" "$desc" && return 0 + info "$msg" && html "$msg" && sleep "$delay" + downloadFile "$iso" "$MIDO_URL" "$sum" "$size" "$lang" "$desc" && return 0 rm -f "$iso" fi fi @@ -655,10 +672,20 @@ downloadImage() { fi tried="y" + success="n" if getESD "$TMP/esd" "$version" "$lang" "$desc"; then + success="y" + else + info "$msg" && html "$msg" && sleep "$delay" + getESD "$TMP/esd" "$version" "$lang" "$desc" && success="y" + fi + + if [[ "$success" == "y" ]]; then ISO="${ISO%.*}.esd" downloadFile "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$lang" "$desc" && return 0 + info "$msg" && html "$msg" && sleep "$delay" + downloadFile "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$lang" "$desc" && return 0 rm -f "$ISO" ISO="$iso" fi @@ -677,6 +704,8 @@ downloadImage() { size=$(getSize "$i" "$version" "$lang") sum=$(getHash "$i" "$version" "$lang") downloadFile "$iso" "$url" "$sum" "$size" "$lang" "$desc" && return 0 + info "$msg" && html "$msg" && sleep "$delay" + downloadFile "$iso" "$url" "$sum" "$size" "$lang" "$desc" && return 0 rm -f "$iso" fi From bb0a0b47b8b7e7c3e36b5bce6cceede52be0b4f8 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 12 Nov 2024 12:17:51 +0100 Subject: [PATCH 011/216] build: Use same version number for ARM64 build (#873) --- Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Dockerfile b/Dockerfile index e5abb6f..a36dbd2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,6 +32,10 @@ ADD --chmod=755 https://raw.githubusercontent.com/christgau/wsdd/v0.8/src/wsdd.p ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.43-0/virtio-win-1.9.43.tar.xz /drivers.txz FROM dockurr/windows-arm:2.22 AS build-arm64 + +ARG VERSION_ARG="0.0" +RUN echo "$VERSION_ARG" > /run/version + FROM build-${TARGETARCH} EXPOSE 8006 3389 From d7fcf9a5da70f50eb633fb3b360dff8fd1941fc3 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 12 Nov 2024 12:34:03 +0100 Subject: [PATCH 012/216] build: Use same version number for ARM64 build (#874) --- Dockerfile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index a36dbd2..7e9e776 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,6 @@ FROM scratch AS build-amd64 COPY --from=qemux/qemu-docker:6.06 / / -ARG VERSION_ARG="0.0" ARG DEBCONF_NOWARNINGS="yes" ARG DEBIAN_FRONTEND="noninteractive" ARG DEBCONF_NONINTERACTIVE_SEEN="true" @@ -22,7 +21,6 @@ RUN set -eu && \ libxml2-utils \ libarchive-tools && \ apt-get clean && \ - echo "$VERSION_ARG" > /run/version && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* COPY --chmod=755 ./src /run/ @@ -32,12 +30,11 @@ ADD --chmod=755 https://raw.githubusercontent.com/christgau/wsdd/v0.8/src/wsdd.p ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.43-0/virtio-win-1.9.43.tar.xz /drivers.txz FROM dockurr/windows-arm:2.22 AS build-arm64 +FROM build-${TARGETARCH} ARG VERSION_ARG="0.0" RUN echo "$VERSION_ARG" > /run/version -FROM build-${TARGETARCH} - EXPOSE 8006 3389 VOLUME /storage From da8bbdcb4747ef88258833d76b07b5f5d98d5fdc Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 12 Nov 2024 12:51:43 +0100 Subject: [PATCH 013/216] build: Synchronize versions between platforms (#876) --- Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7e9e776..801a2ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,5 @@ +ARG VERSION_ARG="4.00" + FROM scratch AS build-amd64 COPY --from=qemux/qemu-docker:6.06 / / @@ -29,10 +31,10 @@ COPY --chmod=755 ./assets /run/assets ADD --chmod=755 https://raw.githubusercontent.com/christgau/wsdd/v0.8/src/wsdd.py /usr/sbin/wsdd ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.43-0/virtio-win-1.9.43.tar.xz /drivers.txz -FROM dockurr/windows-arm:2.22 AS build-arm64 +FROM dockurr/windows-arm:${VERSION_ARG} AS build-arm64 FROM build-${TARGETARCH} -ARG VERSION_ARG="0.0" +ARG VERSION_ARG="4.00" RUN echo "$VERSION_ARG" > /run/version EXPOSE 8006 3389 From 3aa2f6e128c64797f0f611e20544791251af79c5 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 13 Nov 2024 01:12:10 +0100 Subject: [PATCH 014/216] build: Update qemu-docker to v6.07 (#882) --- Dockerfile | 4 ++-- readme.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 801a2ee..f7252ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ ARG VERSION_ARG="4.00" FROM scratch AS build-amd64 -COPY --from=qemux/qemu-docker:6.06 / / +COPY --from=qemux/qemu-docker:6.07 / / ARG DEBCONF_NOWARNINGS="yes" ARG DEBIAN_FRONTEND="noninteractive" @@ -37,8 +37,8 @@ FROM build-${TARGETARCH} ARG VERSION_ARG="4.00" RUN echo "$VERSION_ARG" > /run/version -EXPOSE 8006 3389 VOLUME /storage +EXPOSE 8006 3389 ENV VERSION="11" ENV RAM_SIZE="4G" diff --git a/readme.md b/readme.md index 4ad3c42..4d7b8db 100644 --- a/readme.md +++ b/readme.md @@ -361,7 +361,7 @@ kubectl apply -f kubernetes.yml - you are not using "Docker Desktop for Linux" as it does not support KVM, instead make use of Docker Engine directly. - - it could help to add `privileged: true` to your compose file (or `sudo` to your `run` command), to rule out any permission issue. + - it could help to add `privileged: true` to your compose file (or `sudo` to your `docker run` command), to rule out any permission issue. ### How do I run macOS in a container? From 658c84c55f1dc08367d83ac5407abf13e55212db Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 13 Nov 2024 03:24:11 +0100 Subject: [PATCH 015/216] docs: Add compatibility chart (#883) --- readme.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/readme.md b/readme.md index 4d7b8db..29e1bdd 100644 --- a/readme.md +++ b/readme.md @@ -58,6 +58,16 @@ Via Kubernetes: kubectl apply -f kubernetes.yml ``` +## Compatibility ⚙️ + +| **Product** | **Platform** | | +|---|---|---| +| Docker Engine | Linux| ✅ | +| Docker Desktop | Linux | ❌ | +| Docker Desktop | macOS | ❌ | +| Docker Desktop | Windows 11 | ✅ | +| Docker Desktop | Windows 10 | ❌ | + ## FAQ 💬 ### How do I use it? From 6919e36aee1e86c9e30f4977dfcf231cc824d668 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 13 Nov 2024 03:34:45 +0100 Subject: [PATCH 016/216] docs: Add Kubernetes URL (#885) --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 29e1bdd..1a72923 100644 --- a/readme.md +++ b/readme.md @@ -55,7 +55,7 @@ docker run -it --rm -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-ti Via Kubernetes: ```shell -kubectl apply -f kubernetes.yml +kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/master/kubernetes.yml ``` ## Compatibility ⚙️ From 66f595d84a1c891daa4d262cd5a19ac2b4713d85 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 13 Nov 2024 04:37:27 +0100 Subject: [PATCH 017/216] fix: Disable HTTP keepalives (#887) --- src/mido.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mido.sh b/src/mido.sh index be7884f..d739553 100644 --- a/src/mido.sh +++ b/src/mido.sh @@ -457,7 +457,7 @@ getESD() { local eFile="esd_edition.xml" local fFile="products_filter.xml" - { wget "$winCatalog" -O "$dir/$wFile" -q --timeout=30; rc=$?; } || : + { wget "$winCatalog" -O "$dir/$wFile" -q --timeout=30 --no-http-keep-alive; rc=$?; } || : msg="Failed to download $winCatalog" (( rc == 3 )) && error "$msg , cannot write file (disk full?)" && return 1 @@ -583,7 +583,7 @@ downloadFile() { info "$msg..." /run/progress.sh "$iso" "$size" "$msg ([P])..." & - { wget "$url" -O "$iso" -q --timeout=30 --show-progress "$progress"; rc=$?; } || : + { wget "$url" -O "$iso" -q --timeout=30 --no-http-keep-alive --show-progress "$progress"; rc=$?; } || : fKill "progress.sh" From 2c4094b0f799e26c49cadb43075b595b6708a146 Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 15 Nov 2024 05:16:48 +0100 Subject: [PATCH 018/216] feat: Improved download method (#903) --- Dockerfile | 9 +++--- readme.md | 1 - src/define.sh | 33 +++++++++---------- src/install.sh | 8 ++--- src/mido.sh | 87 +++++++++++++++++++++++++------------------------- 5 files changed, 70 insertions(+), 68 deletions(-) diff --git a/Dockerfile b/Dockerfile index f7252ce..a610fbc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ -ARG VERSION_ARG="4.00" - +ARG VERSION_ARG="latest" FROM scratch AS build-amd64 -COPY --from=qemux/qemu-docker:6.07 / / + +COPY --from=qemux/qemu-docker:6.08 / / ARG DEBCONF_NOWARNINGS="yes" ARG DEBIAN_FRONTEND="noninteractive" @@ -11,6 +11,7 @@ RUN set -eu && \ apt-get update && \ apt-get --no-install-recommends -y install \ bc \ + jq \ curl \ 7zip \ wsdd \ @@ -34,7 +35,7 @@ ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.43- FROM dockurr/windows-arm:${VERSION_ARG} AS build-arm64 FROM build-${TARGETARCH} -ARG VERSION_ARG="4.00" +ARG VERSION_ARG="0.00" RUN echo "$VERSION_ARG" > /run/version VOLUME /storage diff --git a/readme.md b/readme.md index 1a72923..ed9c719 100644 --- a/readme.md +++ b/readme.md @@ -103,7 +103,6 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas | `10l` | Windows 10 LTSC | 4.6 GB | | `10e` | Windows 10 Enterprise | 5.2 GB | |||| - | `8` | Windows 8.1 Pro | 4.0 GB | | `8e` | Windows 8.1 Enterprise | 3.7 GB | | `7e` | Windows 7 Enterprise | 3.0 GB | | `ve` | Windows Vista Enterprise | 3.0 GB | diff --git a/src/define.sh b/src/define.sh index a2706e3..00fe997 100644 --- a/src/define.sh +++ b/src/define.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash set -Eeuo pipefail -: "${XRES:=""}" -: "${YRES:=""}" +: "${WIDTH:=""}" +: "${HEIGHT:=""}" : "${VERIFY:=""}" : "${REGION:=""}" : "${MANUAL:=""}" @@ -164,7 +164,7 @@ getLanguage() { desc="English" culture="en-GB" ;; "en" | "en-"* ) - lang="English (United States)" + lang="English" desc="English" culture="en-US" ;; "mx" | "es-mx" ) @@ -280,15 +280,15 @@ getLanguage() { desc="$lang" culture="uk-UA" ;; "hk" | "zh-hk" | "cn-hk" ) - lang="Chinese Traditional" + lang="Chinese (Traditional)" desc="Chinese HK" culture="zh-TW" ;; "tw" | "zh-tw" | "cn-tw" ) - lang="Chinese Traditional" + lang="Chinese (Traditional)" desc="Chinese TW" culture="zh-TW" ;; "zh" | "zh-"* | "cn" | "cn-"* ) - lang="Chinese Simplified" + lang="Chinese (Simplified)" desc="Chinese" culture="zh-CN" ;; esac @@ -671,10 +671,6 @@ getMido() { size=4898582528 sum="e4ab2e3535be5748252a8d5d57539a6e59be8d6726345ee10e7afd2cb89fefb5" ;; - "win81x64" ) - size=4320526336 - sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51" - ;; "win81x64-enterprise-eval" ) size=3961473024 sum="2dedd44c45646c74efc5a028f65336027e14a56f76686a4631cf94ffe37c72f2" @@ -766,6 +762,11 @@ getLink1() { sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51" url="8.x/8.1/en_windows_8.1_with_update_x64_dvd_6051480.iso" ;; + "win81x64-enterprise" | "win81x64-enterprise-eval" ) + size=4139163648 + sum="c3c604c03677504e8905090a8ce5bb1dde76b6fd58e10f32e3a25bef21b2abe1" + url="8.x/8.1/en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso" + ;; "win2025" | "win2025-eval" ) size=5307176960 sum="2293897341febdcea599f5412300b470b5288c6fd2b89666a7b27d283e8d3cf3" @@ -2122,11 +2123,11 @@ prepareInstall() { local install="$dir/\$OEM\$/\$1/OEM/install.bat" [ -f "$install" ] && oem="\"Script\"=\"cmd /C start \\\"Install\\\" \\\"cmd /C C:\\\\OEM\\\\install.bat\\\"\"" - [ -z "$YRES" ] && YRES="720" - [ -z "$XRES" ] && XRES="1280" + [ -z "$WIDTH" ] && WIDTH="1280" + [ -z "$HEIGHT" ] && HEIGHT="720" - XHEX=$(printf '%x\n' "$XRES") - YHEX=$(printf '%x\n' "$YRES") + XHEX=$(printf '%x\n' "$WIDTH") + YHEX=$(printf '%x\n' "$HEIGHT") local username="Docker" local password="*" @@ -2178,8 +2179,8 @@ prepareInstall() { echo "" echo "[Display]" echo " BitsPerPel=32" - echo " XResolution=$XRES" - echo " YResolution=$YRES" + echo " XResolution=$WIDTH" + echo " YResolution=$HEIGHT" echo "" echo "[Networking]" echo " InstallDefaultComponents=Yes" diff --git a/src/install.sh b/src/install.sh index b03f55a..e22b99e 100644 --- a/src/install.sh +++ b/src/install.sh @@ -620,11 +620,11 @@ updateXML() { local language="$2" local culture region user admin pass keyboard - [ -z "$YRES" ] && YRES="720" - [ -z "$XRES" ] && XRES="1280" + [ -z "$HEIGHT" ] && HEIGHT="720" + [ -z "$WIDTH" ] && WIDTH="1280" - sed -i "s/1080<\/VerticalResolution>/$YRES<\/VerticalResolution>/g" "$asset" - sed -i "s/1920<\/HorizontalResolution>/$XRES<\/HorizontalResolution>/g" "$asset" + sed -i "s/1080<\/VerticalResolution>/$HEIGHT<\/VerticalResolution>/g" "$asset" + sed -i "s/1920<\/HorizontalResolution>/$WIDTH<\/HorizontalResolution>/g" "$asset" culture=$(getLanguage "$language" "culture") diff --git a/src/mido.sh b/src/mido.sh index d739553..776f716 100644 --- a/src/mido.sh +++ b/src/mido.sh @@ -63,31 +63,33 @@ download_windows() { local lang="$2" local desc="$3" local sku_id="" + local sku_url="" + local iso_url="" + local iso_json="" local language="" local session_id="" local user_agent="" + local download_type="" local windows_version="" local iso_download_link="" + local download_page_html="" local product_edition_id="" - local iso_download_link_html="" - local iso_download_page_html="" - local language_skuid_table_html="" - - case "${id,,}" in - "win11x64" ) windows_version="11" ;; - "win10x64" ) windows_version="10" ;; - "win81x64" ) windows_version="8" ;; - * ) error "Invalid VERSION specified, value \"$id\" is not recognized!" && return 1 ;; - esac + local language_skuid_json="" + local profile="606624d44113" user_agent=$(get_agent) language=$(getLanguage "$lang" "name") - local url="https://www.microsoft.com/en-us/software-download/windows$windows_version" - case "$windows_version" in - 8 | 10) url+="ISO";; + case "${id,,}" in + "win11x64" ) windows_version="11" && download_type="1" ;; + "win10x64" ) windows_version="10" && download_type="1" ;; + "win11arm64" ) windows_version="11arm64" && download_type="2" ;; + * ) error "Invalid VERSION specified, value \"$id\" is not recognized!" && return 1 ;; esac + local url="https://www.microsoft.com/en-us/software-download/windows$windows_version" + [[ "${id,,}" == "win10"* ]] && url+="ISO" + # uuidgen: For MacOS (installed by default) and other systems (e.g. with no /proc) that don't have a kernel interface for generating random UUIDs session_id=$(cat /proc/sys/kernel/random/uuid 2> /dev/null || uuidgen --random) @@ -96,44 +98,39 @@ download_windows() { # This is the *only* request we make that Fido doesn't. Fido manually maintains a list of all the Windows release/edition product edition IDs in its script (see: $WindowsVersions array). This is helpful for downloading older releases (e.g. Windows 10 1909, 21H1, etc.) but we always want to get the newest release which is why we get this value dynamically # Also, keeping a "$WindowsVersions" array like Fido does would be way too much of a maintenance burden # Remove "Accept" header that curl sends by default - [[ "$DEBUG" == [Yy1]* ]] && echo " - Parsing download page: ${url}" - iso_download_page_html=$(curl --silent --max-time 30 --user-agent "$user_agent" --header "Accept:" --max-filesize 1M --fail --proto =https --tlsv1.2 --http1.1 -- "$url") || { + [[ "$DEBUG" == [Yy1]* ]] && echo "Parsing download page: ${url}" + download_page_html=$(curl --silent --max-time 30 --user-agent "$user_agent" --header "Accept:" --max-filesize 1M --fail --proto =https --tlsv1.2 --http1.1 -- "$url") || { handle_curl_error $? return $? } [[ "$DEBUG" == [Yy1]* ]] && echo -n "Getting Product edition ID: " - # tr: Filter for only numerics to prevent HTTP parameter injection - # head -c was recently added to POSIX: https://austingroupbugs.net/view.php?id=407 - product_edition_id=$(echo "$iso_download_page_html" | grep -Eo '