From cac5196c0976e0098da89ddb7503c672d860a8fc Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 27 Aug 2024 18:30:29 +0200 Subject: [PATCH 001/253] docs: Update package URL (#716) --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 5af0cb3..7054e6b 100644 --- a/readme.md +++ b/readme.md @@ -384,4 +384,4 @@ kubectl apply -f kubernetes.yml [Pulls]: https://img.shields.io/docker/pulls/dockurr/windows.svg?style=flat&label=pulls&logo=docker [Version]: https://img.shields.io/docker/v/dockurr/windows/latest?arch=amd64&sort=semver&color=066da5 [Package]: -https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fipitio%2Fbackage%2Fmaster%2Findex%2Fdockur%2Fwindows%2Fwindows.json&query=%24.downloads&logo=github&style=flat&color=066da5&label=pulls +https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fipitio.github.io%2Fbackage%2Fdockur%2Fwindows%2Fwindows.json&query=%24.downloads&logo=github&style=flat&color=066da5&label=pulls From c3177e279a37198d36696461ca2853d068ae83db Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 28 Aug 2024 13:14:09 +0200 Subject: [PATCH 002/253] fix: Update Win10 checksum (#717) --- src/define.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/define.sh b/src/define.sh index b95717b..1706a31 100644 --- a/src/define.sh +++ b/src/define.sh @@ -740,8 +740,8 @@ getLink1() { url="11/26100.1.240331-1435.ge_release_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" ;; "win10x64" | "win10x64-enterprise" | "win10x64-enterprise-eval" ) - size=5675616256 - sum="99c13b3afb1375661fc79496025cabe3f9ef5a555fc8ea767a48937b0f4bcace" + size=5623582720 + sum="57371545d752a79a8a8b163b209c7028915da661de83516e06ddae913290a855" url="10/en-us_windows_10_22h2_x64.iso" ;; "win10x64-iot" | "win10x64-enterprise-iot-eval" ) From a2a8ad8243935118877df966c5c06cc1f954b837 Mon Sep 17 00:00:00 2001 From: Kroese Date: Thu, 5 Sep 2024 20:03:34 +0200 Subject: [PATCH 003/253] fix: Update download mirrors (#729) --- Dockerfile | 4 +- readme.md | 3 +- src/define.sh | 259 ++++++++++++++++++-------------------------------- src/mido.sh | 2 +- 4 files changed, 95 insertions(+), 173 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4734e92..dc0e068 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM scratch -COPY --from=qemux/qemu-docker:5.18 / / +COPY --from=qemux/qemu-docker:6.00 / / ARG VERSION_ARG="0.0" ARG DEBCONF_NOWARNINGS="yes" @@ -28,7 +28,7 @@ COPY --chmod=755 ./src /run/ 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/releases/download/v0.1.262/virtio-win-0.1.262.tar.xz /drivers.txz +ADD --chmod=664 https://github.com/qemus/virtiso/releases/download/v0.1.262-2/virtio-win-0.1.262.tar.xz /drivers.txz EXPOSE 8006 3389 VOLUME /storage diff --git a/readme.md b/readme.md index 7054e6b..a3d7b49 100644 --- a/readme.md +++ b/readme.md @@ -383,5 +383,4 @@ kubectl apply -f kubernetes.yml [Size]: https://img.shields.io/docker/image-size/dockurr/windows/latest?color=066da5&label=size [Pulls]: https://img.shields.io/docker/pulls/dockurr/windows.svg?style=flat&label=pulls&logo=docker [Version]: https://img.shields.io/docker/v/dockurr/windows/latest?arch=amd64&sort=semver&color=066da5 -[Package]: -https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fipitio.github.io%2Fbackage%2Fdockur%2Fwindows%2Fwindows.json&query=%24.downloads&logo=github&style=flat&color=066da5&label=pulls +[Package]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fipitio.github.io%2Fbackage%2Fdockur%2Fwindows%2Fwindows.json&query=%24.downloads&logo=github&style=flat&color=066da5&label=pulls diff --git a/src/define.sh b/src/define.sh index 1706a31..efcb6b7 100644 --- a/src/define.sh +++ b/src/define.sh @@ -950,11 +950,11 @@ getLink3() { local sum="" local size="" local host="https://drive.massgrave.dev" - local s22="windows_server_2022_updated_july_2024_x64_dvd_fee121d6" - local c11="windows_11_consumer_editions_version_23h2_updated_july_2024_x64_dvd_13e3dd80" - local b11="windows_11_business_editions_version_23h2_updated_july_2024_x64_dvd" - local c10="windows_10_consumer_editions_version_22h2_updated_july_2024_x64_dvd_3245b006" - local b10="windows_10_business_editions_version_22h2_updated_july_2024_x64_dvd" + local s22="windows_server_2022_updated_aug_2024_x64_dvd_17b2bb17" + local c11="windows_11_consumer_editions_version_23h2_updated_aug_2024_x64_dvd_d3e1c088" + local b11="windows_11_business_editions_version_23h2_updated_aug_2024_x64_dvd" + local c10="windows_10_consumer_editions_version_22h2_updated_aug_2024_x86_dvd_2454bb57" + local b10="windows_10_business_editions_version_22h2_updated_aug_2024_x64_dvd" culture=$(getLanguage "$lang" "culture") @@ -969,8 +969,8 @@ getLink3() { "el" | "el-"* ) url="el-gr_${c11}.iso" ;; "gb" | "en-gb" ) url="en-gb_${c11}.iso" ;; "en" | "en-"* ) - size=7165775872 - sum="b84e497c019e95ba9aee9da3d86e679454cba1a426593711f0f4d426f48fc845" + size=7174344704 + sum="c37962a65405106323ccd9c8b26a148959413a8b4cae22be315338f283a25e60" url="en-us_${c11}.iso" ;; "mx" | "es-mx" ) url="es-mx_${c11}.iso" ;; "es" | "es-"* ) url="es-es_${c11}.iso" ;; @@ -1006,47 +1006,47 @@ getLink3() { ;; "win11x64-enterprise" | "win11x64-enterprise-eval" ) case "${culture,,}" in - "ar" | "ar-"* ) url="ar-sa_${b11}_39c553d6.iso" ;; - "bg" | "bg-"* ) url="bg-bg_${b11}_eb13b76c.iso" ;; - "cs" | "cs-"* ) url="cs-cz_${b11}_397728ab.iso" ;; - "da" | "da-"* ) url="da-dk_${b11}_4df23c83.iso" ;; - "de" | "de-"* ) url="de-de_${b11}_9a27972d.iso" ;; - "el" | "el-"* ) url="el-gr_${b11}_c8957889.iso" ;; - "gb" | "en-gb" ) url="en-gb_${b11}_deb8a337.iso" ;; + "ar" | "ar-"* ) url="ar-sa_${b11}_e8f50c77.iso" ;; + "bg" | "bg-"* ) url="bg-bg_${b11}_4917d646.iso" ;; + "cs" | "cs-"* ) url="cs-cz_${b11}_7423efd7.iso" ;; + "da" | "da-"* ) url="da-dk_${b11}_320e7939.iso" ;; + "de" | "de-"* ) url="de-de_${b11}_0a30ec34.iso" ;; + "el" | "el-"* ) url="el-gr_${b11}_8094f396.iso" ;; + "gb" | "en-gb" ) url="en-gb_${b11}_d2bfefb8.iso" ;; "en" | "en-"* ) - size=7035154432 - sum="651e02efa8efe5c3ed6f99f91a934604add93d0fa28a5e7e29898d47bc92eba5" - url="en-us_${b11}_5a07b6a4.iso" ;; - "mx" | "es-mx" ) url="es-mx_${b11}_2c5e4da9.iso" ;; - "es" | "es-"* ) url="es-es_${b11}_4fde1bd2.iso" ;; - "et" | "et-"* ) url="et-ee_${b11}_dbdba8e6.iso" ;; - "fi" | "fi-"* ) url="fi-fi_${b11}_84ef21ee.iso" ;; - "ca" | "fr-ca" ) url="fr-ca_${b11}_2cfbb3d3.iso" ;; - "fr" | "fr-"* ) url="fr-fr_${b11}_f922413d.iso" ;; - "he" | "he-"* ) url="he-il_${b11}_277cd23a.iso" ;; - "hr" | "hr-"* ) url="hr-hr_${b11}_65579a9d.iso" ;; - "hu" | "hu-"* ) url="hu-hu_${b11}_3e8637f5.iso" ;; - "it" | "it-"* ) url="it-it_${b11}_da0f0ca1.iso" ;; - "ja" | "ja-"* ) url="ja-jp_${b11}_86b39781.iso" ;; - "ko" | "ko-"* ) url="ko-kr_${b11}_0a970f66.iso" ;; - "lt" | "lt-"* ) url="lt-lt_${b11}_8429ce4c.iso" ;; - "lv" | "lv-"* ) url="lv-lv_${b11}_8eb4a9a7.iso" ;; - "nb" | "nb-"* ) url="nb-no_${b11}_2ebae5cb.iso" ;; - "nl" | "nl-"* ) url="nl-nl_${b11}_6dba664c.iso" ;; - "pl" | "pl-"* ) url="pl-pl_${b11}_829bf56a.iso" ;; - "br" | "pt-br" ) url="pt-br_${b11}_cd555922.iso" ;; - "pt" | "pt-"* ) url="pt-pt_${b11}_ad4cf2e0.iso" ;; - "ro" | "ro-"* ) url="ro-ro_${b11}_2340f750.iso" ;; - "ru" | "ru-"* ) url="ru-ru_${b11}_4207eb9f.iso" ;; - "sk" | "sk-"* ) url="sk-sk_${b11}_a1ba40e5.iso" ;; - "sl" | "sl-"* ) url="sl-si_${b11}_282cc939.iso" ;; - "sr" | "sr-"* ) url="sr-latn-rs_${b11}_b4915859.iso" ;; - "sv" | "sv-"* ) url="sv-se_${b11}_879e706a.iso" ;; - "th" | "th-"* ) url="th-th_${b11}_f51e12b1.iso" ;; - "tr" | "tr-"* ) url="tr-tr_${b11}_b52351ad.iso" ;; - "uk" | "uk-"* ) url="uk-ua_${b11}_4a9948b3.iso" ;; - "zh-hk" | "zh-tw" ) url="zh-tw_${b11}_75853f9b.iso" ;; - "zh" | "zh-"* ) url="zh-cn_${b11}_8c3fbaa8.iso" ;; + size=7058937856 + sum="16366a1970d98b590295f5858eb2aae5577ef870a148de42bd3ed051e78010fb" + url="en-us_${b11}_4b6aa6b4.iso" ;; + "mx" | "es-mx" ) url="es-mx_${b11}_a3ff371e.iso" ;; + "es" | "es-"* ) url="es-es_${b11}_49584d0f.iso" ;; + "et" | "et-"* ) url="et-ee_${b11}_9418af12.iso" ;; + "fi" | "fi-"* ) url="fi-fi_${b11}_f99ef6d3.iso" ;; + "ca" | "fr-ca" ) url="fr-ca_${b11}_3b3e23dc.iso" ;; + "fr" | "fr-"* ) url="fr-fr_${b11}_e5a1eeb4.iso" ;; + "he" | "he-"* ) url="he-il_${b11}_52d76f40.iso" ;; + "hr" | "hr-"* ) url="hr-hr_${b11}_c93171de.iso" ;; + "hu" | "hu-"* ) url="hu-hu_${b11}_0ac31337.iso" ;; + "it" | "it-"* ) url="it-it_${b11}_d1670509.iso" ;; + "ja" | "ja-"* ) url="ja-jp_${b11}_6394f8d8.iso" ;; + "ko" | "ko-"* ) url="ko-kr_${b11}_ad04a091.iso" ;; + "lt" | "lt-"* ) url="lt-lt_${b11}_75df52ae.iso" ;; + "lv" | "lv-"* ) url="lv-lv_${b11}_f498cffc.iso" ;; + "nb" | "nb-"* ) url="nb-no_${b11}_a4cdddfc.iso" ;; + "nl" | "nl-"* ) url="nl-nl_${b11}_03c01555.iso" ;; + "pl" | "pl-"* ) url="pl-pl_${b11}_d5274f4d.iso" ;; + "br" | "pt-br" ) url="pt-br_${b11}_662860be.iso" ;; + "pt" | "pt-"* ) url="pt-pt_${b11}_ec70d402.iso" ;; + "ro" | "ro-"* ) url="ro-ro_${b11}_d76af266.iso" ;; + "ru" | "ru-"* ) url="ru-ru_${b11}_689ea9dc.iso" ;; + "sk" | "sk-"* ) url="sk-sk_${b11}_358e8bce.iso" ;; + "sl" | "sl-"* ) url="sl-si_${b11}_69a9feb3.iso" ;; + "sr" | "sr-"* ) url="sr-latn-rs_${b11}_23247970.iso" ;; + "sv" | "sv-"* ) url="sv-se_${b11}_2b228b50.iso" ;; + "th" | "th-"* ) url="th-th_${b11}_6914e97f.iso" ;; + "tr" | "tr-"* ) url="tr-tr_${b11}_20dd43f1.iso" ;; + "uk" | "uk-"* ) url="uk-ua_${b11}_ed5be63e.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_${b11}_beaade88.iso" ;; + "zh" | "zh-"* ) url="zh-cn_${b11}_6ca91c94.iso" ;; esac ;; "win11x64-iot" | "win11x64-enterprise-iot-eval" ) @@ -1071,8 +1071,8 @@ getLink3() { "el" | "el-"* ) url="el-gr_${c10}.iso" ;; "gb" | "en-gb" ) url="en-gb_${c10}.iso" ;; "en" | "en-"* ) - size=7151144960 - sum="2eda4701d3e4061eccfdf0ad264b69392e67e2a29fef9eb7d7a57150b08e87e0" + size=4950300672 + sum="bbe2caba5ae2562166ed1ed0d7b54678c7cb9a3fe25dcb1e27c8f6993a95b498" url="en-us_${c10}.iso" ;; "mx" | "es-mx" ) url="es-mx_${c10}.iso" ;; "es" | "es-"* ) url="es-es_${c10}.iso" ;; @@ -1108,47 +1108,47 @@ getLink3() { ;; "win10x64-enterprise" | "win10x64-enterprise-eval" ) case "${culture,,}" in - "ar" | "ar-"* ) url="ar-sa_${b10}_c297cc0d.iso" ;; - "bg" | "bg-"* ) url="bg-bg_${b10}_30c9ad0e.iso" ;; - "cs" | "cs-"* ) url="cs-cz_${b10}_0a65fb0a.iso" ;; - "da" | "da-"* ) url="da-dk_${b10}_57521eab.iso" ;; - "de" | "de-"* ) url="de-de_${b10}_9beb944c.iso" ;; - "el" | "el-"* ) url="el-gr_${b10}_4f7921a5.iso" ;; - "gb" | "en-gb" ) url="en-gb_${b10}_77325f32.iso" ;; + "ar" | "ar-"* ) url="ar-sa_${b10}_92a8794f.iso" ;; + "bg" | "bg-"* ) url="bg-bg_${b10}_5c7ee697.iso" ;; + "cs" | "cs-"* ) url="cs-cz_${b10}_c8ad70aa.iso" ;; + "da" | "da-"* ) url="da-dk_${b10}_5a51835f.iso" ;; + "de" | "de-"* ) url="de-de_${b10}_e24c9809.iso" ;; + "el" | "el-"* ) url="el-gr_${b10}_a340838b.iso" ;; + "gb" | "en-gb" ) url="en-gb_${b10}_e758d63e.iso" ;; "en" | "en-"* ) - size=6978310144 - sum="7847abd6f39abd02dc8089c4177d354f9eb66fa0ee2fe8ae20e596e675d1ab67" - url="en-us_${b10}_c004521a.iso" ;; - "mx" | "es-mx" ) url="es-mx_${b10}_56d48916.iso" ;; - "es" | "es-"* ) url="es-es_${b10}_4e057a75.iso" ;; - "et" | "et-"* ) url="et-ee_${b10}_8e8c70da.iso" ;; - "fi" | "fi-"* ) url="fi-fi_${b10}_023ba9da.iso" ;; - "ca" | "fr-ca" ) url="fr-ca_${b10}_e4b0fd01.iso" ;; - "fr" | "fr-"* ) url="fr-fr_${b10}_8a45f12e.iso" ;; - "he" | "he-"* ) url="he-il_${b10}_8ce094aa.iso" ;; - "hr" | "hr-"* ) url="hr-hr_${b10}_668d9ec4.iso" ;; - "hu" | "hu-"* ) url="hu-hu_${b10}_7f70b22c.iso" ;; - "it" | "it-"* ) url="it-it_${b10}_3c49c82b.iso" ;; - "ja" | "ja-"* ) url="ja-jp_${b10}_383799d9.iso" ;; - "ko" | "ko-"* ) url="ko-kr_${b10}_f0249763.iso" ;; - "lt" | "lt-"* ) url="lt-lt_${b10}_a13593c6.iso" ;; - "lv" | "lv-"* ) url="lv-lv_${b10}_4a00695c.iso" ;; - "nb" | "nb-"* ) url="nb-no_${b10}_c949d1f1.iso" ;; - "nl" | "nl-"* ) url="nl-nl_${b10}_bb1f8a40.iso" ;; - "pl" | "pl-"* ) url="pl-pl_${b10}_26b503cc.iso" ;; - "br" | "pt-br" ) url="pt-br_${b10}_10757645.iso" ;; - "pt" | "pt-"* ) url="pt-pt_${b10}_07f873cd.iso" ;; - "ro" | "ro-"* ) url="ro-ro_${b10}_e2c973f8.iso" ;; - "ru" | "ru-"* ) url="ru-ru_${b10}_e86552ca.iso" ;; - "sk" | "sk-"* ) url="sk-sk_${b10}_03d84a11.iso" ;; - "sl" | "sl-"* ) url="sl-si_${b10}_ad745ec0.iso" ;; - "sr" | "sr-"* ) url="sr-latn-rs_${b10}_36a086b8.iso" ;; - "sv" | "sv-"* ) url="sv-se_${b10}_756d5d5b.iso" ;; - "th" | "th-"* ) url="th-th_${b10}_cf4bb364.iso" ;; - "tr" | "tr-"* ) url="tr-tr_${b10}_3ceed34b.iso" ;; - "uk" | "uk-"* ) url="uk-ua_${b10}_e6a5235d.iso" ;; - "zh-hk" | "zh-tw" ) url="zh-tw_${b10}_fac0f45b.iso" ;; - "zh" | "zh-"* ) url="zh-cn_${b10}_53d015e8.iso" ;; + size=6976530432 + sum="290cdbfe5f9b9a76dad12981e5f27eba353c535ffd8c83fdc4691a925f93f487" + url="en-us_${b10}_633dcd07.iso" ;; + "mx" | "es-mx" ) url="es-mx_${b10}_0c82aba5.iso" ;; + "es" | "es-"* ) url="es-es_${b10}_d12d0e1a.iso" ;; + "et" | "et-"* ) url="et-ee_${b10}_021c20ff.iso" ;; + "fi" | "fi-"* ) url="fi-fi_${b10}_8fcefb87.iso" ;; + "ca" | "fr-ca" ) url="fr-ca_${b10}_b0588c68.iso" ;; + "fr" | "fr-"* ) url="fr-fr_${b10}_8766236b.iso" ;; + "he" | "he-"* ) url="he-il_${b10}_e34ccebf.iso" ;; + "hr" | "hr-"* ) url="hr-hr_${b10}_ea8c7c60.iso" ;; + "hu" | "hu-"* ) url="hu-hu_${b10}_8381df72.iso" ;; + "it" | "it-"* ) url="it-it_${b10}_1e265790.iso" ;; + "ja" | "ja-"* ) url="ja-jp_${b10}_6334dde3.iso" ;; + "ko" | "ko-"* ) url="ko-kr_${b10}_092c4fe2.iso" ;; + "lt" | "lt-"* ) url="lt-lt_${b10}_5425bdce.iso" ;; + "lv" | "lv-"* ) url="lv-lv_${b10}_5426a93f.iso" ;; + "nb" | "nb-"* ) url="nb-no_${b10}_67cd70cf.iso" ;; + "nl" | "nl-"* ) url="nl-nl_${b10}_43418e31.iso" ;; + "pl" | "pl-"* ) url="pl-pl_${b10}_7d9fc23a.iso" ;; + "br" | "pt-br" ) url="pt-br_${b10}_159a147c.iso" ;; + "pt" | "pt-"* ) url="pt-pt_${b10}_003df1d7.iso" ;; + "ro" | "ro-"* ) url="ro-ro_${b10}_068fb76e.iso" ;; + "ru" | "ru-"* ) url="ru-ru_${b10}_71cdb226.iso" ;; + "sk" | "sk-"* ) url="sk-sk_${b10}_22793411.iso" ;; + "sl" | "sl-"* ) url="sl-si_${b10}_91ae3317.iso" ;; + "sr" | "sr-"* ) url="sr-latn-rs_${b10}_4f8045aa.iso" ;; + "sv" | "sv-"* ) url="sv-se_${b10}_fe117cac.iso" ;; + "th" | "th-"* ) url="th-th_${b10}_15986f75.iso" ;; + "tr" | "tr-"* ) url="tr-tr_${b10}_71319f58.iso" ;; + "uk" | "uk-"* ) url="uk-ua_${b10}_0555f2a3.iso" ;; + "zh-hk" | "zh-tw" ) url="zh-tw_${b10}_ebffe3cd.iso" ;; + "zh" | "zh-"* ) url="zh-cn_${b10}_2dce9717.iso" ;; esac ;; "win10x64-ltsc" | "win10x64-enterprise-ltsc-eval" ) @@ -1276,8 +1276,8 @@ getLink3() { "cs" | "cs-"* ) url="cs-cz_${s22}.iso" ;; "de" | "de-"* ) url="de-de_${s22}.iso" ;; "en" | "en-"* ) - size=5933062144 - sum="5b6c4fab1027ed15cbd4179b8a41b184304ba362fa0053b3bad6ac070ee74281" + size=5966127104 + sum="0b70ea0e3969ad63dfe7e819d76d37ea37582e9f29e0f8d70b38e6b978406ee9" url="en-us_${s22}.iso" ;; "es" | "es-"* ) url="es-es_${s22}.iso" ;; "fr" | "fr-"* ) url="fr-fr_${s22}.iso" ;; @@ -1321,83 +1321,6 @@ getLink3() { "zh" | "zh-"* ) url="zh-cn_windows_server_2019_x64_dvd_19d65722.iso" ;; esac ;; - "win2016" | "win2016-eval" ) - case "${culture,,}" in - "cs" | "cs-"* ) url="cs_windows_server_2016_vl_x64_dvd_11636699.iso" ;; - "de" | "de-"* ) url="de_windows_server_2016_vl_x64_dvd_11636696.iso" ;; - "en" | "en-"* ) - size=6003804160 - sum="47919ce8b4993f531ca1fa3f85941f4a72b47ebaa4d3a321fecf83ca9d17e6b8" - url="en_windows_server_2016_vl_x64_dvd_11636701.iso" ;; - "es" | "es-"* ) url="es_windows_server_2016_vl_x64_dvd_11636712.iso" ;; - "fr" | "fr-"* ) url="fr_windows_server_2016_vl_x64_dvd_11636729.iso" ;; - "hu" | "hu-"* ) url="hu_windows_server_2016_vl_x64_dvd_11636720.iso" ;; - "it" | "it-"* ) url="it_windows_server_2016_vl_x64_dvd_11636710.iso" ;; - "ja" | "ja-"* ) url="ja_windows_server_2016_vl_x64_dvd_11645964.iso" ;; - "ko" | "ko-"* ) url="ko_windows_server_2016_vl_x64_dvd_11636709.iso" ;; - "nl" | "nl-"* ) url="nl_windows_server_2016_vl_x64_dvd_11636731.iso" ;; - "pl" | "pl-"* ) url="pl_windows_server_2016_vl_x64_dvd_11636719.iso" ;; - "br" | "pt-br" ) url="pt_windows_server_2016_vl_x64_dvd_11636697.iso" ;; - "pt" | "pt-"* ) url="pp_windows_server_2016_vl_x64_dvd_11637454.iso" ;; - "ru" | "ru-"* ) url="ru_windows_server_2016_vl_x64_dvd_11636694.iso" ;; - "sv" | "sv-"* ) url="sv_windows_server_2016_vl_x64_dvd_11636706.iso" ;; - "tr" | "tr-"* ) url="tr_windows_server_2016_vl_x64_dvd_11636725.iso" ;; - "zh-hk" | "zh-tw" ) url="ct_windows_server_2016_vl_x64_dvd_11636717.iso" ;; - "zh" | "zh-"* ) url="cn_windows_server_2016_vl_x64_dvd_11636695.iso" ;; - esac - ;; - "win2012r2" | "win2012r2-eval" ) - case "${culture,,}" in - "cs" | "cs-"* ) url="cs_windows_server_2012_r2_vl_with_update_x64_dvd_6052752.iso" ;; - "de" | "de-"* ) url="de_windows_server_2012_r2_vl_with_update_x64_dvd_6052780.iso" ;; - "en" | "en-"* ) - size=5400115200 - sum="0e883ce28eb5c6f58a3a3007be978d43edb1035a4585506c1c4504c9e143408d" - url="en_windows_server_2012_r2_vl_with_update_x64_dvd_6052766.iso" ;; - "es" | "es-"* ) url="es_windows_server_2012_r2_vl_with_update_x64_dvd_6052831.iso" ;; - "fr" | "fr-"* ) url="fr_windows_server_2012_r2_vl_with_update_x64_dvd_6052772.iso" ;; - "hu" | "hu-"* ) url="hu_windows_server_2012_r2_vl_with_update_x64_dvd_6052786.iso" ;; - "it" | "it-"* ) url="it_windows_server_2012_r2_vl_with_update_x64_dvd_6052792.iso" ;; - "ja" | "ja-"* ) url="ja_windows_server_2012_r2_vl_with_update_x64_dvd_6052800.iso" ;; - "ko" | "ko-"* ) url="ko_windows_server_2012_r2_vl_with_update_x64_dvd_6052806.iso" ;; - "nl" | "nl-"* ) url="nl_windows_server_2012_r2_vl_with_update_x64_dvd_6052760.iso" ;; - "pl" | "pl-"* ) url="pl_windows_server_2012_r2_vl_with_update_x64_dvd_6052815.iso" ;; - "br" | "pt-br" ) url="pt_windows_server_2012_r2_vl_with_update_x64_dvd_6052819.iso" ;; - "pt" | "pt-"* ) url="pp_windows_server_2012_r2_vl_with_update_x64_dvd_6052823.iso" ;; - "ru" | "ru-"* ) url="ru_windows_server_2012_r2_vl_with_update_x64_dvd_6052827.iso" ;; - "sv" | "sv-"* ) url="sv_windows_server_2012_r2_vl_with_update_x64_dvd_6052835.iso" ;; - "tr" | "tr-"* ) url="tr_windows_server_2012_r2_vl_with_update_x64_dvd_6052838.iso" ;; - "zh-hk" ) url="hk_windows_server_2012_r2_vl_with_update_x64_dvd_6052739.iso" ;; - "zh-tw" ) url="tw_windows_server_2012_r2_vl_with_update_x64_dvd_6052746.iso" ;; - "zh" | "zh-"* ) url="cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso" ;; - esac - ;; - "win2008r2" | "win2008r2-eval" ) - case "${culture,,}" in - "cs" | "cs-"* ) url="cs_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617402.iso" ;; - "de" | "de-"* ) url="de_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617404.iso" ;; - "en" | "en-"* ) - size=3166720000 - sum="9b0cd5b11cc2e92badb74450f0cac03006d3c63a2ada36cb1eb95c1bf4b2608f" - url="en_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617403.iso" ;; - "es" | "es-"* ) url="es_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617410.iso" ;; - "fr" | "fr-"* ) url="fr_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617392.iso" ;; - "hu" | "hu-"* ) url="hu_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617415.iso" ;; - "it" | "it-"* ) url="it_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_619596.iso" ;; - "ja" | "ja-"* ) url="ja_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_631466.iso" ;; - "ko" | "ko-"* ) url="ko_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617409.iso" ;; - "nl" | "nl-"* ) url="nl_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617395.iso" ;; - "pl" | "pl-"* ) url="pl_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617397.iso" ;; - "br" | "pt-br" ) url="pt_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617394.iso" ;; - "pt" | "pt-"* ) url="pp_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617411.iso" ;; - "ru" | "ru-"* ) url="ru_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617421.iso" ;; - "sv" | "sv-"* ) url="sv_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617400.iso" ;; - "tr" | "tr-"* ) url="tr_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617416.iso" ;; - "zh-hk" ) url="hk_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617386.iso" ;; - "zh-tw" ) url="tw_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617405.iso" ;; - "zh" | "zh-"* ) url="cn_windows_server_2008_r2_with_sp1_vl_build_x64_dvd_617396.iso" ;; - esac - ;; "win7x64" | "win7x64-enterprise" ) case "${culture,,}" in "ar" | "ar-"* ) url="ar_windows_7_enterprise_with_sp1_x64_dvd_u_677643.iso" ;; diff --git a/src/mido.sh b/src/mido.sh index 8773263..19b1efa 100644 --- a/src/mido.sh +++ b/src/mido.sh @@ -548,7 +548,7 @@ downloadFile() { if (( rc == 0 )) && [ -f "$iso" ]; then total=$(stat -c%s "$iso") if [ "$total" -lt 100000000 ]; then - error "Invalid download link: $url (is only $total bytes?). Please report this issue." && return 1 + error "Invalid download link: $url (is only $total bytes?). Please report this at $SUPPORT/issues." && return 1 fi ! verifyFile "$iso" "$size" "$total" "$sum" && return 1 html "Download finished successfully..." && return 0 From a1e4ed160a7ba13ef3ef6e09b53c96bf33dfb995 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sat, 14 Sep 2024 23:13:14 +0200 Subject: [PATCH 004/253] feat: Support Windows Server 2025 (#740) --- Dockerfile | 4 ++-- readme.md | 2 ++ src/install.sh | 5 ----- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index dc0e068..54b0b90 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM scratch -COPY --from=qemux/qemu-docker:6.00 / / +COPY --from=qemux/qemu-docker:6.01 / / ARG VERSION_ARG="0.0" ARG DEBCONF_NOWARNINGS="yes" @@ -28,7 +28,7 @@ COPY --chmod=755 ./src /run/ 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/releases/download/v0.1.262-2/virtio-win-0.1.262.tar.xz /drivers.txz +ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.40-0/virtio-win-1.9.40.tar.xz /drivers.txz EXPOSE 8006 3389 VOLUME /storage diff --git a/readme.md b/readme.md index a3d7b49..7b7f1bd 100644 --- a/readme.md +++ b/readme.md @@ -98,11 +98,13 @@ kubectl apply -f kubernetes.yml | `vista` | Windows Vista Enterprise | 3.0 GB | | `winxp` | 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 | |||| | `core11` | Tiny 11 Core | 2.1 GB | | `tiny11` | Tiny 11 | 3.8 GB | diff --git a/src/install.sh b/src/install.sh index ac051ff..e9ce4da 100644 --- a/src/install.sh +++ b/src/install.sh @@ -705,11 +705,6 @@ addDriver() { "winvista"* ) [[ "${driver,,}" == "viorng" ]] && return 0 ;; - "win2025"* | "win11x64-iot"* | "win11x64-ltsc"* ) - [[ "${driver,,}" == "smbus" ]] && return 0 - [[ "${driver,,}" == "pvpanic" ]] && return 0 - [[ "${driver,,}" == "viogpudo" ]] && return 0 - ;; esac local dest="$path/$target/$driver" From b2251a4cc048df66838cd998a1baeca9520ec349 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 17 Sep 2024 23:14:23 +0200 Subject: [PATCH 005/253] build: Update VirtIO drivers to v1.9.43 (#741) --- Dockerfile | 2 +- src/define.sh | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 54b0b90..86eeb97 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,7 +28,7 @@ COPY --chmod=755 ./src /run/ 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.40-0/virtio-win-1.9.40.tar.xz /drivers.txz +ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.43-0/virtio-win-1.9.43.tar.xz /drivers.txz EXPOSE 8006 3389 VOLUME /storage diff --git a/src/define.sh b/src/define.sh index efcb6b7..f612c81 100644 --- a/src/define.sh +++ b/src/define.sh @@ -729,14 +729,14 @@ getLink1() { ;; "win11x64-iot" | "win11x64-enterprise-iot-eval" ) [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-us" ]] && return 0 - size=4821989376 - sum="e8f1431c4e6289b3997c20eadbb2576670300bb6e1cf8948b5d7af179010a962" + size=4501397504 + sum="aaa4bd3254c1af5f9ce07f50db68fdead7a305878f2425c059ecd6b062a855b3" url="11/26100.1.240331-1435.ge_release_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" ;; "win11x64-ltsc" | "win11x64-enterprise-ltsc-eval" ) [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-us" ]] && return 0 - size=4821989376 - sum="e8f1431c4e6289b3997c20eadbb2576670300bb6e1cf8948b5d7af179010a962" + size=4501397504 + sum="aaa4bd3254c1af5f9ce07f50db68fdead7a305878f2425c059ecd6b062a855b3" url="11/26100.1.240331-1435.ge_release_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" ;; "win10x64" | "win10x64-enterprise" | "win10x64-enterprise-eval" ) @@ -2333,6 +2333,9 @@ setMachine() { if ! prepare2k3 "$iso" "$dir" "$desc"; then error "Failed to prepare $desc ISO!" && return 1 fi ;; + "win2025"* | "win11x64-iot"* | "win11x64-ltsc"* ) + # Temporary: Use IDE CD to workaround install bug + MEDIA_TYPE="ide" ;; esac return 0 From c8f0d874534128c81e5b02cc5421ecfeeefe21e8 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 25 Sep 2024 15:58:12 +0200 Subject: [PATCH 006/253] fix: Missing x86 drivers for Windows XP (#755) --- readme.md | 4 - src/define.sh | 223 +++----------------------------------------------- 2 files changed, 12 insertions(+), 215 deletions(-) diff --git a/readme.md b/readme.md index 7b7f1bd..406984b 100644 --- a/readme.md +++ b/readme.md @@ -105,10 +105,6 @@ kubectl apply -f kubernetes.yml | `2012` | Windows Server 2012 | 4.3 GB | | `2008` | Windows Server 2008 | 3.0 GB | | `2003` | Windows Server 2003 | 0.6 GB | - |||| - | `core11` | Tiny 11 Core | 2.1 GB | - | `tiny11` | Tiny 11 | 3.8 GB | - | `tiny10` | Tiny 10 | 3.6 GB | > [!TIP] > To install ARM64 versions of Windows use [dockur/windows-arm](https://github.com/dockur/windows-arm/). diff --git a/src/define.sh b/src/define.sh index f612c81..bfdd535 100644 --- a/src/define.sh +++ b/src/define.sh @@ -950,105 +950,10 @@ getLink3() { local sum="" local size="" local host="https://drive.massgrave.dev" - local s22="windows_server_2022_updated_aug_2024_x64_dvd_17b2bb17" - local c11="windows_11_consumer_editions_version_23h2_updated_aug_2024_x64_dvd_d3e1c088" - local b11="windows_11_business_editions_version_23h2_updated_aug_2024_x64_dvd" - local c10="windows_10_consumer_editions_version_22h2_updated_aug_2024_x86_dvd_2454bb57" - local b10="windows_10_business_editions_version_22h2_updated_aug_2024_x64_dvd" culture=$(getLanguage "$lang" "culture") case "${id,,}" in - "win11x64" ) - case "${culture,,}" in - "ar" | "ar-"* ) url="ar-sa_${c11}.iso" ;; - "bg" | "bg-"* ) url="bg-bg_${c11}.iso" ;; - "cs" | "cs-"* ) url="cs-cz_${c11}.iso" ;; - "da" | "da-"* ) url="da-dk_${c11}.iso" ;; - "de" | "de-"* ) url="de-de_${c11}.iso" ;; - "el" | "el-"* ) url="el-gr_${c11}.iso" ;; - "gb" | "en-gb" ) url="en-gb_${c11}.iso" ;; - "en" | "en-"* ) - size=7174344704 - sum="c37962a65405106323ccd9c8b26a148959413a8b4cae22be315338f283a25e60" - url="en-us_${c11}.iso" ;; - "mx" | "es-mx" ) url="es-mx_${c11}.iso" ;; - "es" | "es-"* ) url="es-es_${c11}.iso" ;; - "et" | "et-"* ) url="et-ee_${c11}.iso" ;; - "fi" | "fi-"* ) url="fi-fi_${c11}.iso" ;; - "ca" | "fr-ca" ) url="fr-ca_${c11}.iso" ;; - "fr" | "fr-"* ) url="fr-fr_${c11}.iso" ;; - "he" | "he-"* ) url="he-il_${c11}.iso" ;; - "hr" | "hr-"* ) url="hr-hr_${c11}.iso" ;; - "hu" | "hu-"* ) url="hu-hu_${c11}.iso" ;; - "it" | "it-"* ) url="it-it_${c11}.iso" ;; - "ja" | "ja-"* ) url="ja-jp_${c11}.iso" ;; - "ko" | "ko-"* ) url="ko-kr_${c11}.iso" ;; - "lt" | "lt-"* ) url="lt-lt_${c11}.iso" ;; - "lv" | "lv-"* ) url="lv-lv_${c11}.iso" ;; - "nb" | "nb-"* ) url="nb-no_${c11}.iso" ;; - "nl" | "nl-"* ) url="nl-nl_${c11}.iso" ;; - "pl" | "pl-"* ) url="pl-pl_${c11}.iso" ;; - "br" | "pt-br" ) url="pt-br_${c11}.iso" ;; - "pt" | "pt-"* ) url="pt-pt_${c11}.iso" ;; - "ro" | "ro-"* ) url="ro-ro_${c11}.iso" ;; - "ru" | "ru-"* ) url="ru-ru_${c11}.iso" ;; - "sk" | "sk-"* ) url="sk-sk_${c11}.iso" ;; - "sl" | "sl-"* ) url="sl-si_${c11}.iso" ;; - "sr" | "sr-"* ) url="sr-latn-rs_${c11}.iso" ;; - "sv" | "sv-"* ) url="sv-se_${c11}.iso" ;; - "th" | "th-"* ) url="th-th_${c11}.iso" ;; - "tr" | "tr-"* ) url="tr-tr_${c11}.iso" ;; - "uk" | "uk-"* ) url="uk-ua_${c11}.iso" ;; - "zh-hk" | "zh-tw" ) url="zh-tw_${c11}.iso" ;; - "zh" | "zh-"* ) url="zh-cn_${c11}.iso" ;; - esac - ;; - "win11x64-enterprise" | "win11x64-enterprise-eval" ) - case "${culture,,}" in - "ar" | "ar-"* ) url="ar-sa_${b11}_e8f50c77.iso" ;; - "bg" | "bg-"* ) url="bg-bg_${b11}_4917d646.iso" ;; - "cs" | "cs-"* ) url="cs-cz_${b11}_7423efd7.iso" ;; - "da" | "da-"* ) url="da-dk_${b11}_320e7939.iso" ;; - "de" | "de-"* ) url="de-de_${b11}_0a30ec34.iso" ;; - "el" | "el-"* ) url="el-gr_${b11}_8094f396.iso" ;; - "gb" | "en-gb" ) url="en-gb_${b11}_d2bfefb8.iso" ;; - "en" | "en-"* ) - size=7058937856 - sum="16366a1970d98b590295f5858eb2aae5577ef870a148de42bd3ed051e78010fb" - url="en-us_${b11}_4b6aa6b4.iso" ;; - "mx" | "es-mx" ) url="es-mx_${b11}_a3ff371e.iso" ;; - "es" | "es-"* ) url="es-es_${b11}_49584d0f.iso" ;; - "et" | "et-"* ) url="et-ee_${b11}_9418af12.iso" ;; - "fi" | "fi-"* ) url="fi-fi_${b11}_f99ef6d3.iso" ;; - "ca" | "fr-ca" ) url="fr-ca_${b11}_3b3e23dc.iso" ;; - "fr" | "fr-"* ) url="fr-fr_${b11}_e5a1eeb4.iso" ;; - "he" | "he-"* ) url="he-il_${b11}_52d76f40.iso" ;; - "hr" | "hr-"* ) url="hr-hr_${b11}_c93171de.iso" ;; - "hu" | "hu-"* ) url="hu-hu_${b11}_0ac31337.iso" ;; - "it" | "it-"* ) url="it-it_${b11}_d1670509.iso" ;; - "ja" | "ja-"* ) url="ja-jp_${b11}_6394f8d8.iso" ;; - "ko" | "ko-"* ) url="ko-kr_${b11}_ad04a091.iso" ;; - "lt" | "lt-"* ) url="lt-lt_${b11}_75df52ae.iso" ;; - "lv" | "lv-"* ) url="lv-lv_${b11}_f498cffc.iso" ;; - "nb" | "nb-"* ) url="nb-no_${b11}_a4cdddfc.iso" ;; - "nl" | "nl-"* ) url="nl-nl_${b11}_03c01555.iso" ;; - "pl" | "pl-"* ) url="pl-pl_${b11}_d5274f4d.iso" ;; - "br" | "pt-br" ) url="pt-br_${b11}_662860be.iso" ;; - "pt" | "pt-"* ) url="pt-pt_${b11}_ec70d402.iso" ;; - "ro" | "ro-"* ) url="ro-ro_${b11}_d76af266.iso" ;; - "ru" | "ru-"* ) url="ru-ru_${b11}_689ea9dc.iso" ;; - "sk" | "sk-"* ) url="sk-sk_${b11}_358e8bce.iso" ;; - "sl" | "sl-"* ) url="sl-si_${b11}_69a9feb3.iso" ;; - "sr" | "sr-"* ) url="sr-latn-rs_${b11}_23247970.iso" ;; - "sv" | "sv-"* ) url="sv-se_${b11}_2b228b50.iso" ;; - "th" | "th-"* ) url="th-th_${b11}_6914e97f.iso" ;; - "tr" | "tr-"* ) url="tr-tr_${b11}_20dd43f1.iso" ;; - "uk" | "uk-"* ) url="uk-ua_${b11}_ed5be63e.iso" ;; - "zh-hk" | "zh-tw" ) url="zh-tw_${b11}_beaade88.iso" ;; - "zh" | "zh-"* ) url="zh-cn_${b11}_6ca91c94.iso" ;; - esac - ;; "win11x64-iot" | "win11x64-enterprise-iot-eval" ) [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-us" ]] && return 0 size=4821989376 @@ -1061,96 +966,6 @@ getLink3() { sum="e8f1431c4e6289b3997c20eadbb2576670300bb6e1cf8948b5d7af179010a962" url="26100.1.240331-1435.ge_release_CLIENTENTERPRISE_OEM_x64FRE_en-us.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=4950300672 - sum="bbe2caba5ae2562166ed1ed0d7b54678c7cb9a3fe25dcb1e27c8f6993a95b498" - 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}_92a8794f.iso" ;; - "bg" | "bg-"* ) url="bg-bg_${b10}_5c7ee697.iso" ;; - "cs" | "cs-"* ) url="cs-cz_${b10}_c8ad70aa.iso" ;; - "da" | "da-"* ) url="da-dk_${b10}_5a51835f.iso" ;; - "de" | "de-"* ) url="de-de_${b10}_e24c9809.iso" ;; - "el" | "el-"* ) url="el-gr_${b10}_a340838b.iso" ;; - "gb" | "en-gb" ) url="en-gb_${b10}_e758d63e.iso" ;; - "en" | "en-"* ) - size=6976530432 - sum="290cdbfe5f9b9a76dad12981e5f27eba353c535ffd8c83fdc4691a925f93f487" - url="en-us_${b10}_633dcd07.iso" ;; - "mx" | "es-mx" ) url="es-mx_${b10}_0c82aba5.iso" ;; - "es" | "es-"* ) url="es-es_${b10}_d12d0e1a.iso" ;; - "et" | "et-"* ) url="et-ee_${b10}_021c20ff.iso" ;; - "fi" | "fi-"* ) url="fi-fi_${b10}_8fcefb87.iso" ;; - "ca" | "fr-ca" ) url="fr-ca_${b10}_b0588c68.iso" ;; - "fr" | "fr-"* ) url="fr-fr_${b10}_8766236b.iso" ;; - "he" | "he-"* ) url="he-il_${b10}_e34ccebf.iso" ;; - "hr" | "hr-"* ) url="hr-hr_${b10}_ea8c7c60.iso" ;; - "hu" | "hu-"* ) url="hu-hu_${b10}_8381df72.iso" ;; - "it" | "it-"* ) url="it-it_${b10}_1e265790.iso" ;; - "ja" | "ja-"* ) url="ja-jp_${b10}_6334dde3.iso" ;; - "ko" | "ko-"* ) url="ko-kr_${b10}_092c4fe2.iso" ;; - "lt" | "lt-"* ) url="lt-lt_${b10}_5425bdce.iso" ;; - "lv" | "lv-"* ) url="lv-lv_${b10}_5426a93f.iso" ;; - "nb" | "nb-"* ) url="nb-no_${b10}_67cd70cf.iso" ;; - "nl" | "nl-"* ) url="nl-nl_${b10}_43418e31.iso" ;; - "pl" | "pl-"* ) url="pl-pl_${b10}_7d9fc23a.iso" ;; - "br" | "pt-br" ) url="pt-br_${b10}_159a147c.iso" ;; - "pt" | "pt-"* ) url="pt-pt_${b10}_003df1d7.iso" ;; - "ro" | "ro-"* ) url="ro-ro_${b10}_068fb76e.iso" ;; - "ru" | "ru-"* ) url="ru-ru_${b10}_71cdb226.iso" ;; - "sk" | "sk-"* ) url="sk-sk_${b10}_22793411.iso" ;; - "sl" | "sl-"* ) url="sl-si_${b10}_91ae3317.iso" ;; - "sr" | "sr-"* ) url="sr-latn-rs_${b10}_4f8045aa.iso" ;; - "sv" | "sv-"* ) url="sv-se_${b10}_fe117cac.iso" ;; - "th" | "th-"* ) url="th-th_${b10}_15986f75.iso" ;; - "tr" | "tr-"* ) url="tr-tr_${b10}_71319f58.iso" ;; - "uk" | "uk-"* ) url="uk-ua_${b10}_0555f2a3.iso" ;; - "zh-hk" | "zh-tw" ) url="zh-tw_${b10}_ebffe3cd.iso" ;; - "zh" | "zh-"* ) url="zh-cn_${b10}_2dce9717.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" ;; @@ -1271,31 +1086,6 @@ getLink3() { "zh" | "zh-"* ) url="zh-cn_windows_server_2025_preview_x64_dvd_a12bb0bf.iso" ;; esac ;; - "win2022" | "win2022-eval" ) - case "${culture,,}" in - "cs" | "cs-"* ) url="cs-cz_${s22}.iso" ;; - "de" | "de-"* ) url="de-de_${s22}.iso" ;; - "en" | "en-"* ) - size=5966127104 - sum="0b70ea0e3969ad63dfe7e819d76d37ea37582e9f29e0f8d70b38e6b978406ee9" - url="en-us_${s22}.iso" ;; - "es" | "es-"* ) url="es-es_${s22}.iso" ;; - "fr" | "fr-"* ) url="fr-fr_${s22}.iso" ;; - "hu" | "hu-"* ) url="hu-hu_${s22}.iso" ;; - "it" | "it-"* ) url="it-it_${s22}.iso" ;; - "ja" | "ja-"* ) url="ja-jp_${s22}.iso" ;; - "ko" | "ko-"* ) url="ko-kr_${s22}.iso" ;; - "nl" | "nl-"* ) url="nl-nl_${s22}.iso" ;; - "pl" | "pl-"* ) url="pl-pl_${s22}.iso" ;; - "br" | "pt-br" ) url="pt-br_${s22}.iso" ;; - "pt" | "pt-"* ) url="pt-pt_${s22}.iso" ;; - "ru" | "ru-"* ) url="ru-ru_${s22}.iso" ;; - "sv" | "sv-"* ) url="sv-se_${s22}.iso" ;; - "tr" | "tr-"* ) url="tr-tr_${s22}.iso" ;; - "zh-hk" | "zh-tw" ) url="zh-tw_${s22}.iso" ;; - "zh" | "zh-"* ) url="zh-cn_${s22}.iso" ;; - esac - ;; "win2019" | "win2019-eval" ) case "${culture,,}" in "cs" | "cs-"* ) url="cs-cz_windows_server_2019_x64_dvd_3781c31c.iso" ;; @@ -1895,6 +1685,10 @@ prepareInstall() { local target [[ "${arch,,}" == "x86" ]] && target="$dir/I386" || target="$dir/AMD64" + if [ ! -f "$drivers/viostor/$driver/$arch/viostor.sys" ]; then + error "Failed to locate required storage drivers!" && return 1 + fi + cp "$drivers/viostor/$driver/$arch/viostor.sys" "$target" mkdir -p "$dir/\$OEM\$/\$1/Drivers/viostor" @@ -1902,6 +1696,10 @@ prepareInstall() { cp "$drivers/viostor/$driver/$arch/viostor.inf" "$dir/\$OEM\$/\$1/Drivers/viostor" cp "$drivers/viostor/$driver/$arch/viostor.sys" "$dir/\$OEM\$/\$1/Drivers/viostor" + if [ ! -f "$drivers/NetKVM/$driver/$arch/netkvm.sys" ]; then + error "Failed to locate required network drivers!" && return 1 + fi + mkdir -p "$dir/\$OEM\$/\$1/Drivers/NetKVM" cp "$drivers/NetKVM/$driver/$arch/netkvm.cat" "$dir/\$OEM\$/\$1/Drivers/NetKVM" cp "$drivers/NetKVM/$driver/$arch/netkvm.inf" "$dir/\$OEM\$/\$1/Drivers/NetKVM" @@ -1919,8 +1717,11 @@ prepareInstall() { sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00021AF4=\"viostor\"/' "$target/TXTSETUP.SIF" sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00000000=\"viostor\"/' "$target/TXTSETUP.SIF" - mkdir -p "$dir/\$OEM\$/\$1/Drivers/sata" + if [ ! -d "$drivers/sata/xp/$arch" ]; then + error "Failed to locate required SATA drivers!" && return 1 + fi + mkdir -p "$dir/\$OEM\$/\$1/Drivers/sata" cp -a "$drivers/sata/xp/$arch/." "$dir/\$OEM\$/\$1/Drivers/sata" cp -a "$drivers/sata/xp/$arch/." "$target" From 34d6fa73f50d5732e258877ba5026d56a58f1520 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Sep 2024 14:51:16 +0200 Subject: [PATCH 007/253] chore(deps): update qemux/qemu-docker docker tag to v6.02 (#759) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 86eeb97..bb734dc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM scratch -COPY --from=qemux/qemu-docker:6.01 / / +COPY --from=qemux/qemu-docker:6.02 / / ARG VERSION_ARG="0.0" ARG DEBCONF_NOWARNINGS="yes" From bfc24167e3a72726be5bcb11c27a6594686e52a0 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 1 Oct 2024 01:04:19 +0200 Subject: [PATCH 008/253] fix: Update Windows 11 LTSC download mirrors (#768) --- src/define.sh | 26 +++++++++++++------------- src/mido.sh | 1 + 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/define.sh b/src/define.sh index bfdd535..37da591 100644 --- a/src/define.sh +++ b/src/define.sh @@ -386,7 +386,7 @@ printVersion() { if [ -z "$desc" ]; then desc="Windows" - [[ "${PLATFORM,,}" != "x64" ]] && desc="$desc for ${PLATFORM}" + [[ "${PLATFORM,,}" != "x64" ]] && desc+=" for ${PLATFORM}" fi echo "$desc" @@ -729,15 +729,15 @@ getLink1() { ;; "win11x64-iot" | "win11x64-enterprise-iot-eval" ) [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-us" ]] && return 0 - size=4501397504 - sum="aaa4bd3254c1af5f9ce07f50db68fdead7a305878f2425c059ecd6b062a855b3" - url="11/26100.1.240331-1435.ge_release_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" + size=5144817664 + sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" + url="11/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=4501397504 - sum="aaa4bd3254c1af5f9ce07f50db68fdead7a305878f2425c059ecd6b062a855b3" - url="11/26100.1.240331-1435.ge_release_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" + size=5144817664 + sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" + url="11/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" ;; "win10x64" | "win10x64-enterprise" | "win10x64-enterprise-eval" ) size=5623582720 @@ -956,15 +956,15 @@ getLink3() { case "${id,,}" in "win11x64-iot" | "win11x64-enterprise-iot-eval" ) [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-us" ]] && return 0 - size=4821989376 - sum="e8f1431c4e6289b3997c20eadbb2576670300bb6e1cf8948b5d7af179010a962" - url="26100.1.240331-1435.ge_release_CLIENTENTERPRISE_OEM_x64FRE_en-us.iso" + 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=4821989376 - sum="e8f1431c4e6289b3997c20eadbb2576670300bb6e1cf8948b5d7af179010a962" - url="26100.1.240331-1435.ge_release_CLIENTENTERPRISE_OEM_x64FRE_en-us.iso" + size=5144817664 + sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" + url="X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" ;; "win10x64-ltsc" | "win10x64-enterprise-ltsc-eval" ) case "${culture,,}" in diff --git a/src/mido.sh b/src/mido.sh index 19b1efa..454e83f 100644 --- a/src/mido.sh +++ b/src/mido.sh @@ -318,6 +318,7 @@ getWindows() { case "${version,,}" in "win11${PLATFORM,,}-enterprise-iot-eval" ) ;; + "win11${PLATFORM,,}-enterprise-ltsc-eval" ) ;; * ) if [[ "${PLATFORM,,}" != "x64" ]]; then error "No download for the ${PLATFORM^^} platform available for $edition!" From 73e725321824fa2a36c18102261e0b34b6280782 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 1 Oct 2024 20:33:25 +0200 Subject: [PATCH 009/253] feat: Add Windows 11 LTSC support (#770) --- assets/win11x64-iot.xml | 3 +++ assets/win11x64-ltsc.xml | 3 +++ src/define.sh | 7 ++----- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/assets/win11x64-iot.xml b/assets/win11x64-iot.xml index cf49f4e..eeef008 100644 --- a/assets/win11x64-iot.xml +++ b/assets/win11x64-iot.xml @@ -86,6 +86,9 @@ true Docker Windows for Docker + + + false diff --git a/assets/win11x64-ltsc.xml b/assets/win11x64-ltsc.xml index 16ec029..c4c35db 100644 --- a/assets/win11x64-ltsc.xml +++ b/assets/win11x64-ltsc.xml @@ -86,6 +86,9 @@ true Docker Windows for Docker + + + false diff --git a/src/define.sh b/src/define.sh index 37da591..b38fc28 100644 --- a/src/define.sh +++ b/src/define.sh @@ -115,7 +115,7 @@ parseVersion() { ;; "ltsc11" | "11ltsc" | "win11-ltsc" | "win11x64-ltsc" | "win11x64-enterprise-ltsc-eval" ) VERSION="win11x64-enterprise-ltsc-eval" - [ -z "$DETECTED" ] && DETECTED="win11x64-iot" + [ -z "$DETECTED" ] && DETECTED="win11x64-ltsc" ;; "ltsc10" | "10ltsc" | "win10-ltsc" | "win10x64-ltsc" | "win10x64-enterprise-ltsc-eval" ) VERSION="win10x64-enterprise-ltsc-eval" @@ -420,7 +420,7 @@ printEdition() { edition="Education" ;; *"-iot" | *"-iot-eval" ) - edition="IoT" + edition="LTSC" ;; *"-ltsc" | *"-ltsc-eval" ) edition="LTSC" @@ -2134,9 +2134,6 @@ setMachine() { if ! prepare2k3 "$iso" "$dir" "$desc"; then error "Failed to prepare $desc ISO!" && return 1 fi ;; - "win2025"* | "win11x64-iot"* | "win11x64-ltsc"* ) - # Temporary: Use IDE CD to workaround install bug - MEDIA_TYPE="ide" ;; esac return 0 From b5bef25c1a817b125f94df928623f0a3b63a8be5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 20:42:25 +0200 Subject: [PATCH 010/253] chore(deps): update qemux/qemu-docker docker tag to v6.03 (#771) 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 bb734dc..be8ec62 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM scratch -COPY --from=qemux/qemu-docker:6.02 / / +COPY --from=qemux/qemu-docker:6.03 / / ARG VERSION_ARG="0.0" ARG DEBCONF_NOWARNINGS="yes" From 717dbf01c4acd14c145cebaa95905a414a6edbbd Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 2 Oct 2024 09:24:11 +0200 Subject: [PATCH 011/253] docs: Disk pass-through (#773) --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 406984b..ff684f0 100644 --- a/readme.md +++ b/readme.md @@ -320,7 +320,7 @@ kubectl apply -f kubernetes.yml - /dev/sdc:/disk2 ``` - Use `/disk1` if you want it to become your main drive, and use `/disk2` and higher to add them as secondary drives. + Use `/disk1` if you want it to become your main drive (which will be formatted during installation), and use `/disk2` and higher to add them as secondary drives (which will stay untouched). ### How do I pass-through a USB device? From 27236d7352575ec6e04bb277ed1f7d04047d6b69 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 2 Oct 2024 10:31:16 +0200 Subject: [PATCH 012/253] feat: Add Windows 11 LTSC (#774) --- readme.md | 4 +++- src/define.sh | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index ff684f0..0e57a8d 100644 --- a/readme.md +++ b/readme.md @@ -86,8 +86,10 @@ kubectl apply -f kubernetes.yml | **Value** | **Version** | **Size** | |---|---|---| - | `win11` | Windows 11 Pro | 6.4 GB | + | `win11` | Windows 11 Pro | 5.4 GB | + | `ltsc11` | Windows 11 LTSC | 4.2 GB | | `win11e` | 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 | diff --git a/src/define.sh b/src/define.sh index b38fc28..c08867e 100644 --- a/src/define.sh +++ b/src/define.sh @@ -637,8 +637,8 @@ getMido() { case "${id,,}" in "win11x64" ) - size=6812706816 - sum="36de5ecb7a0daa58dce68c03b9465a543ed0f5498aa8ae60ab45fb7c8c4ae402" + size=5819484160 + sum="b56b911bf18a2ceaeb3904d87e7c770bdf92d3099599d61ac2497b91bf190b11" ;; "win11x64-enterprise-eval" ) size=6209064960 From efe2a5b725c0cdc97e35c5f0ac89b09664cd89f5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 5 Oct 2024 14:06:07 +0200 Subject: [PATCH 013/253] chore(deps): update qemux/qemu-docker docker tag to v6.04 (#776) 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 be8ec62..b28efc8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM scratch -COPY --from=qemux/qemu-docker:6.03 / / +COPY --from=qemux/qemu-docker:6.04 / / ARG VERSION_ARG="0.0" ARG DEBCONF_NOWARNINGS="yes" From 427ba244ce29bbee3971bf51f665d0237e1c3bda Mon Sep 17 00:00:00 2001 From: Kroese Date: Sat, 5 Oct 2024 15:42:18 +0200 Subject: [PATCH 014/253] fix: Do not store display device (#777) --- src/install.sh | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/install.sh b/src/install.sh index e9ce4da..a1c290a 100644 --- a/src/install.sh +++ b/src/install.sh @@ -156,10 +156,6 @@ finishInstall() { fi fi - if [ -n "${VGA:-}" ] && [[ "${VGA:-}" != "virtio" ]] && [[ "${VGA:-}" != "ramfb" ]]; then - echo "$VGA" > "$STORAGE/windows.vga" - fi - if [ -n "${DISK_TYPE:-}" ] && [[ "${DISK_TYPE:-}" != "scsi" ]]; then echo "$DISK_TYPE" > "$STORAGE/windows.type" fi @@ -980,12 +976,6 @@ bootWindows() { rm -rf "$TMP" - if [ -s "$STORAGE/windows.vga" ] && [ -f "$STORAGE/windows.vga" ]; then - [ -z "${VGA:-}" ] && VGA=$(<"$STORAGE/windows.vga") - else - [ -z "${VGA:-}" ] && [[ "${PLATFORM,,}" == "arm64" ]] && VGA="virtio-gpu" - fi - if [ -s "$STORAGE/windows.type" ] && [ -f "$STORAGE/windows.type" ]; then [ -z "${DISK_TYPE:-}" ] && DISK_TYPE=$(<"$STORAGE/windows.type") fi From f3a1ac08f8782c5643d48adad5413603cbbf80cd Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 8 Oct 2024 14:04:03 +0200 Subject: [PATCH 015/253] fix: Disable Hyper-V in Windows Legacy mode (#781) --- src/define.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/src/define.sh b/src/define.sh index c08867e..065ff3e 100644 --- a/src/define.sh +++ b/src/define.sh @@ -2111,7 +2111,6 @@ setMachine() { case "${id,,}" in "win9"* | "win2k"* | "winxp"* | "win2003"* ) - HV="N" BOOT_MODE="windows_legacy" ;; "winvista"* | "win7"* | "win2008"* ) BOOT_MODE="windows_legacy" ;; From 3d3945ee4e90c8083b2c8adfce875eb97aa1af86 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 19:35:54 +0200 Subject: [PATCH 016/253] chore(deps): update qemux/qemu-docker docker tag to v6.05 (#783) 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 b28efc8..74540dc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM scratch -COPY --from=qemux/qemu-docker:6.04 / / +COPY --from=qemux/qemu-docker:6.05 / / ARG VERSION_ARG="0.0" ARG DEBCONF_NOWARNINGS="yes" From 89834cf6e611215b5e55bad6322e41e0e43179c5 Mon Sep 17 00:00:00 2001 From: Kroese Date: Thu, 10 Oct 2024 10:54:10 +0200 Subject: [PATCH 017/253] docs: Frequently asked questions (#785) --- readme.md | 49 +++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/readme.md b/readme.md index 0e57a8d..c1c88c2 100644 --- a/readme.md +++ b/readme.md @@ -111,30 +111,6 @@ kubectl apply -f kubernetes.yml > [!TIP] > To install ARM64 versions of Windows use [dockur/windows-arm](https://github.com/dockur/windows-arm/). -### How do I select the Windows language? - - By default, the English version of Windows will be downloaded. But you can add the `LANGUAGE` environment variable to your compose file, in order to specify an alternative language: - - ```yaml - environment: - 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. - -### How do I select the keyboard layout? - - If you want to use a keyboard layout or locale that is not the default for your selected language, you can add the `KEYBOARD` and `REGION` variables with a culture code, like this: - - ```yaml - environment: - REGION: "en-US" - KEYBOARD: "en-US" - ``` - -> [!NOTE] -> Changing these values will have no effect after the installation has been performed already. Use the control panel inside Windows in that case. - ### How do I change the storage location? To change the storage location, include the following bind mount in your compose file: @@ -236,6 +212,31 @@ kubectl apply -f kubernetes.yml PASSWORD: "gates" ``` +### How do I select the Windows language? + + By default, the English version of Windows will be downloaded. But you can add the `LANGUAGE` environment variable to your compose file, in order to specify an alternative language: + + ```yaml + environment: + 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. + +### How do I select the keyboard layout? + + If you want to use a keyboard layout or locale that is not the default for your selected language, you can add the `KEYBOARD` and `REGION` variables with a culture code, like this: + + ```yaml + environment: + REGION: "en-US" + KEYBOARD: "en-US" + ``` + +> [!NOTE] +> Changing these values will have no effect after the installation has been performed already. Use the control panel inside Windows in that case. +> + ### How do I connect using RDP? The web-viewer is mainly meant to be used during installation, as its picture quality is low, and it has no audio or clipboard for example. From 42d4e075d8f78e8b7d8c829700f0dc658d400c11 Mon Sep 17 00:00:00 2001 From: Kroese Date: Thu, 10 Oct 2024 21:15:18 +0200 Subject: [PATCH 018/253] feat: Disable SMB signing requirement (#787) --- assets/win11x64-enterprise-eval.xml | 43 +++++++++++++++------------- assets/win11x64-enterprise.xml | 44 ++++++++++++++++------------- assets/win11x64-iot.xml | 43 +++++++++++++++------------- assets/win11x64-ltsc.xml | 43 +++++++++++++++------------- assets/win11x64.xml | 43 +++++++++++++++------------- assets/win2025-eval.xml | 41 +++++++++++++++------------ assets/win2025.xml | 41 +++++++++++++++------------ 7 files changed, 167 insertions(+), 131 deletions(-) diff --git a/assets/win11x64-enterprise-eval.xml b/assets/win11x64-enterprise-eval.xml index c0045d3..555d1f4 100644 --- a/assets/win11x64-enterprise-eval.xml +++ b/assets/win11x64-enterprise-eval.xml @@ -343,101 +343,106 @@ 2 + reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f + Disable SMB signing requirement + + + 3 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f Allow RDP login with blank password - 3 + 4 reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f Enable option for passwordless sign-in - 4 + 5 cmd /C wmic useraccount where name="Docker" set PasswordExpires=false Password Never Expires - 5 + 6 cmd /C POWERCFG -H OFF Disable Hibernation - 6 + 7 cmd /C POWERCFG -X -monitor-timeout-ac 0 Disable monitor blanking - 7 + 8 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f Disable first-run experience in Edge - 8 + 9 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f Show file extensions in Explorer - 9 + 10 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f Zero Hibernation File - 10 + 11 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f Disable Hibernation - 11 + 12 cmd /C POWERCFG -X -standby-timeout-ac 0 Disable Sleep - 12 + 13 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f Enable RemoteAPP to launch unlisted programs - 13 + 14 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f Remove Task View from the Taskbar - 14 + 15 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f Remove Widgets from the Taskbar - 15 + 16 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f Remove Chat from the Taskbar - 16 + 17 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f Turn off Windows Update auto download - 17 + 18 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes Enable Network Discovery - 18 + 19 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes Enable File Sharing - 19 + 20 reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f Disable unsupported hardware notifications - 20 + 21 reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f Disable unsupported hardware notifications - 21 + 22 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win11x64-enterprise.xml b/assets/win11x64-enterprise.xml index 9800436..88983f0 100644 --- a/assets/win11x64-enterprise.xml +++ b/assets/win11x64-enterprise.xml @@ -346,101 +346,106 @@ 2 + reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f + Disable SMB signing requirement + + + 3 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f Allow RDP login with blank password - 3 + 4 reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f Enable option for passwordless sign-in - 4 + 5 cmd /C wmic useraccount where name="Docker" set PasswordExpires=false Password Never Expires - 5 + 6 cmd /C POWERCFG -H OFF Disable Hibernation - 6 + 7 cmd /C POWERCFG -X -monitor-timeout-ac 0 Disable monitor blanking - 7 + 8 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f Disable first-run experience in Edge - 8 + 9 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f Show file extensions in Explorer - 9 + 10 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f Zero Hibernation File - 10 + 11 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f Disable Hibernation - 11 + 12 cmd /C POWERCFG -X -standby-timeout-ac 0 Disable Sleep - 12 + 13 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f Enable RemoteAPP to launch unlisted programs - 13 + 14 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f Remove Task View from the Taskbar - 14 + 15 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f Remove Widgets from the Taskbar - 15 + 16 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f Remove Chat from the Taskbar - 16 + 17 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f Turn off Windows Update auto download - 17 + 18 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes Enable Network Discovery - 18 + 19 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes Enable File Sharing - 19 + 20 reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f Disable unsupported hardware notifications - 20 + 21 reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f Disable unsupported hardware notifications - 21 + 22 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists @@ -448,3 +453,4 @@ + diff --git a/assets/win11x64-iot.xml b/assets/win11x64-iot.xml index eeef008..79fc392 100644 --- a/assets/win11x64-iot.xml +++ b/assets/win11x64-iot.xml @@ -352,101 +352,106 @@ 2 + reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f + Disable SMB signing requirement + + + 3 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f Allow RDP login with blank password - 3 + 4 reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f Enable option for passwordless sign-in - 4 + 5 cmd /C wmic useraccount where name="Docker" set PasswordExpires=false Password Never Expires - 5 + 6 cmd /C POWERCFG -H OFF Disable Hibernation - 6 + 7 cmd /C POWERCFG -X -monitor-timeout-ac 0 Disable monitor blanking - 7 + 8 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f Disable first-run experience in Edge - 8 + 9 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f Show file extensions in Explorer - 9 + 10 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f Zero Hibernation File - 10 + 11 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f Disable Hibernation - 11 + 12 cmd /C POWERCFG -X -standby-timeout-ac 0 Disable Sleep - 12 + 13 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f Enable RemoteAPP to launch unlisted programs - 13 + 14 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f Remove Task View from the Taskbar - 14 + 15 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f Remove Widgets from the Taskbar - 15 + 16 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f Remove Chat from the Taskbar - 16 + 17 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f Turn off Windows Update auto download - 17 + 18 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes Enable Network Discovery - 18 + 19 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes Enable File Sharing - 19 + 20 reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f Disable unsupported hardware notifications - 20 + 21 reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f Disable unsupported hardware notifications - 21 + 22 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win11x64-ltsc.xml b/assets/win11x64-ltsc.xml index c4c35db..584ff9e 100644 --- a/assets/win11x64-ltsc.xml +++ b/assets/win11x64-ltsc.xml @@ -352,101 +352,106 @@ 2 + reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f + Disable SMB signing requirement + + + 3 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f Allow RDP login with blank password - 3 + 4 reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f Enable option for passwordless sign-in - 4 + 5 cmd /C wmic useraccount where name="Docker" set PasswordExpires=false Password Never Expires - 5 + 6 cmd /C POWERCFG -H OFF Disable Hibernation - 6 + 7 cmd /C POWERCFG -X -monitor-timeout-ac 0 Disable monitor blanking - 7 + 8 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f Disable first-run experience in Edge - 8 + 9 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f Show file extensions in Explorer - 9 + 10 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f Zero Hibernation File - 10 + 11 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f Disable Hibernation - 11 + 12 cmd /C POWERCFG -X -standby-timeout-ac 0 Disable Sleep - 12 + 13 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f Enable RemoteAPP to launch unlisted programs - 13 + 14 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f Remove Task View from the Taskbar - 14 + 15 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f Remove Widgets from the Taskbar - 15 + 16 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f Remove Chat from the Taskbar - 16 + 17 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f Turn off Windows Update auto download - 17 + 18 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes Enable Network Discovery - 18 + 19 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes Enable File Sharing - 19 + 20 reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f Disable unsupported hardware notifications - 20 + 21 reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f Disable unsupported hardware notifications - 21 + 22 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win11x64.xml b/assets/win11x64.xml index 4877868..71ecdf9 100644 --- a/assets/win11x64.xml +++ b/assets/win11x64.xml @@ -346,101 +346,106 @@ 2 + reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f + Disable SMB signing requirement + + + 3 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f Allow RDP login with blank password - 3 + 4 reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f Enable option for passwordless sign-in - 4 + 5 cmd /C wmic useraccount where name="Docker" set PasswordExpires=false Password Never Expires - 5 + 6 cmd /C POWERCFG -H OFF Disable Hibernation - 6 + 7 cmd /C POWERCFG -X -monitor-timeout-ac 0 Disable monitor blanking - 7 + 8 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f Disable first-run experience in Edge - 8 + 9 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f Show file extensions in Explorer - 9 + 10 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f Zero Hibernation File - 10 + 11 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f Disable Hibernation - 11 + 12 cmd /C POWERCFG -X -standby-timeout-ac 0 Disable Sleep - 12 + 13 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f Enable RemoteAPP to launch unlisted programs - 13 + 14 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f Remove Task View from the Taskbar - 14 + 15 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f Remove Widgets from the Taskbar - 15 + 16 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f Remove Chat from the Taskbar - 16 + 17 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f Turn off Windows Update auto download - 17 + 18 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes Enable Network Discovery - 18 + 19 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes Enable File Sharing - 19 + 20 reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f Disable unsupported hardware notifications - 20 + 21 reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f Disable unsupported hardware notifications - 21 + 22 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win2025-eval.xml b/assets/win2025-eval.xml index 1ee2b54..70aa09c 100644 --- a/assets/win2025-eval.xml +++ b/assets/win2025-eval.xml @@ -242,96 +242,101 @@ 2 + reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f + Disable SMB signing requirement + + + 3 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f Allow RDP login with blank password - 3 + 4 reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f Enable option for passwordless sign-in - 4 + 5 cmd /C wmic useraccount where name="Docker" set PasswordExpires=false Password Never Expires - 5 + 6 cmd /C POWERCFG -H OFF Disable Hibernation - 6 + 7 cmd /C POWERCFG -X -monitor-timeout-ac 0 Disable monitor blanking - 7 + 8 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f Disable first-run experience in Edge - 8 + 9 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f Show file extensions in Explorer - 9 + 10 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f Zero Hibernation File - 10 + 11 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f Disable Hibernation - 11 + 12 cmd /C POWERCFG -X -standby-timeout-ac 0 Disable Sleep - 12 + 13 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f Enable RemoteAPP to launch unlisted programs - 13 + 14 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f Remove Search from the Taskbar - 14 + 15 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f Remove Task View from the Taskbar - 15 + 16 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f Remove Widgets from the Taskbar - 16 + 17 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f Remove Chat from the Taskbar - 17 + 18 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f Turn off Windows Update auto download - 18 + 19 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes Enable Network Discovery - 19 + 20 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes Enable File Sharing - 20 + 21 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win2025.xml b/assets/win2025.xml index c0801b0..66871a5 100644 --- a/assets/win2025.xml +++ b/assets/win2025.xml @@ -245,96 +245,101 @@ 2 + reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f + Disable SMB signing requirement + + + 3 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f Allow RDP login with blank password - 3 + 4 reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f Enable option for passwordless sign-in - 4 + 5 cmd /C wmic useraccount where name="Docker" set PasswordExpires=false Password Never Expires - 5 + 6 cmd /C POWERCFG -H OFF Disable Hibernation - 6 + 7 cmd /C POWERCFG -X -monitor-timeout-ac 0 Disable monitor blanking - 7 + 8 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f Disable first-run experience in Edge - 8 + 9 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f Show file extensions in Explorer - 9 + 10 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f Zero Hibernation File - 10 + 11 reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f Disable Hibernation - 11 + 12 cmd /C POWERCFG -X -standby-timeout-ac 0 Disable Sleep - 12 + 13 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f Enable RemoteAPP to launch unlisted programs - 13 + 14 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f Remove Search from the Taskbar - 14 + 15 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f Remove Task View from the Taskbar - 15 + 16 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f Remove Widgets from the Taskbar - 16 + 17 reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f Remove Chat from the Taskbar - 17 + 18 reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f Turn off Windows Update auto download - 18 + 19 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes Enable Network Discovery - 19 + 20 netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes Enable File Sharing - 20 + 21 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists From a2208ace94ff0158f79fcbd89ff5dc713deb916f Mon Sep 17 00:00:00 2001 From: Kroese Date: Thu, 10 Oct 2024 23:15:46 +0200 Subject: [PATCH 019/253] fix: Workaround VirtIO display driver bug (#788) --- assets/win11x64-enterprise-eval.xml | 5 +++++ assets/win11x64-enterprise.xml | 5 +++++ assets/win11x64-iot.xml | 5 +++++ assets/win11x64-ltsc.xml | 5 +++++ assets/win11x64.xml | 5 +++++ assets/win2025-eval.xml | 5 +++++ assets/win2025.xml | 5 +++++ src/install.sh | 4 ++++ 8 files changed, 39 insertions(+) diff --git a/assets/win11x64-enterprise-eval.xml b/assets/win11x64-enterprise-eval.xml index 555d1f4..3072a69 100644 --- a/assets/win11x64-enterprise-eval.xml +++ b/assets/win11x64-enterprise-eval.xml @@ -443,6 +443,11 @@ 22 + pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf + Install VirtIO display driver + + + 23 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win11x64-enterprise.xml b/assets/win11x64-enterprise.xml index 88983f0..ffb0d72 100644 --- a/assets/win11x64-enterprise.xml +++ b/assets/win11x64-enterprise.xml @@ -446,6 +446,11 @@ 22 + pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf + Install VirtIO display driver + + + 23 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win11x64-iot.xml b/assets/win11x64-iot.xml index 79fc392..96d29e1 100644 --- a/assets/win11x64-iot.xml +++ b/assets/win11x64-iot.xml @@ -452,6 +452,11 @@ 22 + pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf + Install VirtIO display driver + + + 23 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win11x64-ltsc.xml b/assets/win11x64-ltsc.xml index 584ff9e..8a680e5 100644 --- a/assets/win11x64-ltsc.xml +++ b/assets/win11x64-ltsc.xml @@ -452,6 +452,11 @@ 22 + pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf + Install VirtIO display driver + + + 23 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win11x64.xml b/assets/win11x64.xml index 71ecdf9..ca65c1a 100644 --- a/assets/win11x64.xml +++ b/assets/win11x64.xml @@ -446,6 +446,11 @@ 22 + pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf + Install VirtIO display driver + + + 23 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win2025-eval.xml b/assets/win2025-eval.xml index 70aa09c..fc44ff1 100644 --- a/assets/win2025-eval.xml +++ b/assets/win2025-eval.xml @@ -337,6 +337,11 @@ 21 + pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf + Install VirtIO display driver + + + 22 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win2025.xml b/assets/win2025.xml index 66871a5..2c53caf 100644 --- a/assets/win2025.xml +++ b/assets/win2025.xml @@ -340,6 +340,11 @@ 21 + pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf + Install VirtIO display driver + + + 22 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/src/install.sh b/src/install.sh index a1c290a..cf9cac1 100644 --- a/src/install.sh +++ b/src/install.sh @@ -701,6 +701,9 @@ addDriver() { "winvista"* ) [[ "${driver,,}" == "viorng" ]] && return 0 ;; + "win11x64"* | "win2025"* ) + [[ "${driver,,}" == "viogpudo" ]] && return 0 + ;; esac local dest="$path/$target/$driver" @@ -737,6 +740,7 @@ addDrivers() { addDriver "$version" "$drivers" "$target" "smbus" addDriver "$version" "$drivers" "$target" "qxldod" addDriver "$version" "$drivers" "$target" "viorng" + addDriver "$version" "$drivers" "$target" "viomem" addDriver "$version" "$drivers" "$target" "viostor" addDriver "$version" "$drivers" "$target" "NetKVM" addDriver "$version" "$drivers" "$target" "Balloon" From 5bd88a5cc8be9b86f7a4910e8d7ee2da402017e8 Mon Sep 17 00:00:00 2001 From: Kroese Date: Thu, 10 Oct 2024 23:53:41 +0200 Subject: [PATCH 020/253] fix: Workaround VirtIO display driver bug (#790) --- src/install.sh | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/install.sh b/src/install.sh index cf9cac1..7f87fd1 100644 --- a/src/install.sh +++ b/src/install.sh @@ -701,9 +701,6 @@ addDriver() { "winvista"* ) [[ "${driver,,}" == "viorng" ]] && return 0 ;; - "win11x64"* | "win2025"* ) - [[ "${driver,,}" == "viogpudo" ]] && return 0 - ;; esac local dest="$path/$target/$driver" @@ -714,9 +711,10 @@ addDriver() { addDrivers() { - local file="$1" - local index="$2" - local version="$3" + local src="$1" + local file="$2" + local index="$3" + local version="$4" local msg="Adding drivers to image..." info "$msg" && html "$msg" @@ -751,6 +749,16 @@ addDrivers() { addDriver "$version" "$drivers" "$target" "vioserial" addDriver "$version" "$drivers" "$target" "qemupciserial" + case "${version,,}" in + "win11x64"* | "win2025"* ) + # Workaround Virtio GPU driver bug + local dst="$src/\$OEM\$/\$\$/Drivers" + mkdir -p "$dst" + ! cp -a "$dest/." "$dst" && return 1 + rm -rf "$dest/viogpudo" + ;; + esac + if ! wimlib-imagex update "$file" "$index" --command "add $dest /$target" >/dev/null; then return 1 fi @@ -772,10 +780,10 @@ addFolder() { local msg="Adding OEM folder to image..." info "$msg" && html "$msg" - local dest="$src/\$OEM\$/\$1/" + local dest="$src/\$OEM\$/\$1/OEM" mkdir -p "$dest" - ! cp -r "$folder" "$dest" && return 1 + ! cp -a "$folder/." "$dest" && return 1 local file file=$(find "$dest" -maxdepth 1 -type f -iname install.bat | head -n 1) @@ -824,7 +832,7 @@ updateImage() { index="2" fi - if ! addDrivers "$wim" "$index" "$DETECTED"; then + if ! addDrivers "$src" "$wim" "$index" "$DETECTED"; then error "Failed to add drivers to image!" && return 1 fi From d06591f2a1458bfea22c406be5c90f57c1701df4 Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 11 Oct 2024 01:00:07 +0200 Subject: [PATCH 021/253] feat: Remove empty Windows.old folder (#791) --- assets/win11x64-enterprise-eval.xml | 5 +++++ assets/win11x64-enterprise.xml | 5 +++++ assets/win11x64-iot.xml | 5 +++++ assets/win11x64-ltsc.xml | 5 +++++ assets/win11x64.xml | 5 +++++ assets/win2025-eval.xml | 5 +++++ assets/win2025.xml | 5 +++++ 7 files changed, 35 insertions(+) diff --git a/assets/win11x64-enterprise-eval.xml b/assets/win11x64-enterprise-eval.xml index 3072a69..72dc300 100644 --- a/assets/win11x64-enterprise-eval.xml +++ b/assets/win11x64-enterprise-eval.xml @@ -448,6 +448,11 @@ 23 + rd /q c:\Windows.old 2>nul + Remove empty Windows.old folder + + + 24 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win11x64-enterprise.xml b/assets/win11x64-enterprise.xml index ffb0d72..56fa786 100644 --- a/assets/win11x64-enterprise.xml +++ b/assets/win11x64-enterprise.xml @@ -451,6 +451,11 @@ 23 + rd /q c:\Windows.old 2>nul + Remove empty Windows.old folder + + + 24 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win11x64-iot.xml b/assets/win11x64-iot.xml index 96d29e1..68f74f6 100644 --- a/assets/win11x64-iot.xml +++ b/assets/win11x64-iot.xml @@ -457,6 +457,11 @@ 23 + rd /q c:\Windows.old 2>nul + Remove empty Windows.old folder + + + 24 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win11x64-ltsc.xml b/assets/win11x64-ltsc.xml index 8a680e5..1024334 100644 --- a/assets/win11x64-ltsc.xml +++ b/assets/win11x64-ltsc.xml @@ -457,6 +457,11 @@ 23 + rd /q c:\Windows.old 2>nul + Remove empty Windows.old folder + + + 24 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win11x64.xml b/assets/win11x64.xml index ca65c1a..61aad2e 100644 --- a/assets/win11x64.xml +++ b/assets/win11x64.xml @@ -451,6 +451,11 @@ 23 + rd /q c:\Windows.old 2>nul + Remove empty Windows.old folder + + + 24 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win2025-eval.xml b/assets/win2025-eval.xml index fc44ff1..73801c5 100644 --- a/assets/win2025-eval.xml +++ b/assets/win2025-eval.xml @@ -342,6 +342,11 @@ 22 + rd /q c:\Windows.old 2>nul + Remove empty Windows.old folder + + + 23 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists diff --git a/assets/win2025.xml b/assets/win2025.xml index 2c53caf..a641959 100644 --- a/assets/win2025.xml +++ b/assets/win2025.xml @@ -345,6 +345,11 @@ 22 + rd /q c:\Windows.old 2>nul + Remove empty Windows.old folder + + + 23 cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat" Execute custom script from the OEM folder if exists From 94a84b0c2d5b692e03b032fcf1a0854bbcfbff79 Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 11 Oct 2024 11:33:50 +0200 Subject: [PATCH 022/253] feat: Remove empty Windows.old folder (#793) --- assets/win11x64-enterprise-eval.xml | 2 +- assets/win11x64-enterprise.xml | 2 +- assets/win11x64-iot.xml | 2 +- assets/win11x64-ltsc.xml | 2 +- assets/win11x64.xml | 2 +- assets/win2025-eval.xml | 2 +- assets/win2025.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/assets/win11x64-enterprise-eval.xml b/assets/win11x64-enterprise-eval.xml index 72dc300..b8c3cbf 100644 --- a/assets/win11x64-enterprise-eval.xml +++ b/assets/win11x64-enterprise-eval.xml @@ -448,7 +448,7 @@ 23 - rd /q c:\Windows.old 2>nul + cmd /C rd /q C:\Windows.old Remove empty Windows.old folder diff --git a/assets/win11x64-enterprise.xml b/assets/win11x64-enterprise.xml index 56fa786..fc8562a 100644 --- a/assets/win11x64-enterprise.xml +++ b/assets/win11x64-enterprise.xml @@ -451,7 +451,7 @@ 23 - rd /q c:\Windows.old 2>nul + cmd /C rd /q C:\Windows.old Remove empty Windows.old folder diff --git a/assets/win11x64-iot.xml b/assets/win11x64-iot.xml index 68f74f6..89aa0d6 100644 --- a/assets/win11x64-iot.xml +++ b/assets/win11x64-iot.xml @@ -457,7 +457,7 @@ 23 - rd /q c:\Windows.old 2>nul + cmd /C rd /q C:\Windows.old Remove empty Windows.old folder diff --git a/assets/win11x64-ltsc.xml b/assets/win11x64-ltsc.xml index 1024334..545ea88 100644 --- a/assets/win11x64-ltsc.xml +++ b/assets/win11x64-ltsc.xml @@ -457,7 +457,7 @@ 23 - rd /q c:\Windows.old 2>nul + cmd /C rd /q C:\Windows.old Remove empty Windows.old folder diff --git a/assets/win11x64.xml b/assets/win11x64.xml index 61aad2e..3130bb4 100644 --- a/assets/win11x64.xml +++ b/assets/win11x64.xml @@ -451,7 +451,7 @@ 23 - rd /q c:\Windows.old 2>nul + cmd /C rd /q C:\Windows.old Remove empty Windows.old folder diff --git a/assets/win2025-eval.xml b/assets/win2025-eval.xml index 73801c5..9d90c77 100644 --- a/assets/win2025-eval.xml +++ b/assets/win2025-eval.xml @@ -342,7 +342,7 @@ 22 - rd /q c:\Windows.old 2>nul + cmd /C rd /q C:\Windows.old Remove empty Windows.old folder diff --git a/assets/win2025.xml b/assets/win2025.xml index a641959..7e543a2 100644 --- a/assets/win2025.xml +++ b/assets/win2025.xml @@ -345,7 +345,7 @@ 22 - rd /q c:\Windows.old 2>nul + cmd /C rd /q C:\Windows.old Remove empty Windows.old folder From 5f4c0938ac5020b60c719beb385d996b38a7af20 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sat, 12 Oct 2024 14:26:04 +0200 Subject: [PATCH 023/253] feat: Extract temporary files to RAM (#796) --- src/define.sh | 7 ++++--- src/install.sh | 46 +++++++++++++++++++++++----------------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/define.sh b/src/define.sh index 065ff3e..cd214df 100644 --- a/src/define.sh +++ b/src/define.sh @@ -1665,7 +1665,10 @@ prepareInstall() { local arch="$4" local key="$5" local driver="$6" - local drivers="$TMP/drivers" + local drivers="/run/shm/drivers" + + rm -rf "$drivers" + mkdir -p "$drivers" ETFS="[BOOT]/Boot-NoEmul.img" @@ -1676,8 +1679,6 @@ prepareInstall() { local msg="Adding drivers to image..." info "$msg" && html "$msg" - mkdir -p "$drivers" - if ! tar -xf /drivers.txz -C "$drivers" --warning=no-timestamp; then error "Failed to extract drivers!" && return 1 fi diff --git a/src/install.sh b/src/install.sh index 7f87fd1..32f2f68 100644 --- a/src/install.sh +++ b/src/install.sh @@ -561,7 +561,7 @@ detectImage() { if [[ "${LANGUAGE,,}" != "en" ]] && [[ "${LANGUAGE,,}" != "en-"* ]]; then language=$(getLanguage "$LANGUAGE" "desc") - desc=+" ($language)" + desc+=" ($language)" fi info "Detected: $desc" @@ -712,18 +712,20 @@ addDriver() { addDrivers() { local src="$1" - local file="$2" - local index="$3" - local version="$4" + local tmp="$2" + local file="$3" + local index="$4" + local version="$5" + local drivers="$tmp/drivers" + + rm -rf "$drivers" + mkdir -p "$drivers" local msg="Adding drivers to image..." info "$msg" && html "$msg" - local drivers="$TMP/drivers" - mkdir -p "$drivers" - if ! tar -xf /drivers.txz -C "$drivers" --warning=no-timestamp; then - error "Failed to extract driver!" && return 1 + error "Failed to extract drivers from archive!" && return 1 fi local target="\$WinPEDriver\$" @@ -738,8 +740,8 @@ addDrivers() { addDriver "$version" "$drivers" "$target" "smbus" addDriver "$version" "$drivers" "$target" "qxldod" addDriver "$version" "$drivers" "$target" "viorng" - addDriver "$version" "$drivers" "$target" "viomem" addDriver "$version" "$drivers" "$target" "viostor" + addDriver "$version" "$drivers" "$target" "viomem" addDriver "$version" "$drivers" "$target" "NetKVM" addDriver "$version" "$drivers" "$target" "Balloon" addDriver "$version" "$drivers" "$target" "vioscsi" @@ -797,6 +799,7 @@ updateImage() { local dir="$1" local asset="$2" local language="$3" + local tmp="/run/shm/img" local file="autounattend.xml" local org="${file//.xml/.org}" local dat="${file//.xml/.dat}" @@ -812,6 +815,9 @@ updateImage() { fi fi + rm -rf "$tmp" + mkdir -p "$tmp" + src=$(find "$dir" -maxdepth 1 -type d -iname sources | head -n 1) if [ ! -d "$src" ]; then @@ -832,7 +838,7 @@ updateImage() { index="2" fi - if ! addDrivers "$src" "$wim" "$index" "$DETECTED"; then + if ! addDrivers "$src" "$tmp" "$wim" "$index" "$DETECTED"; then error "Failed to add drivers to image!" && return 1 fi @@ -840,17 +846,14 @@ updateImage() { error "Failed to add OEM folder to image!" && return 1 fi - if wimlib-imagex extract "$wim" "$index" "/$file" "--dest-dir=$TMP" >/dev/null 2>&1; then - if ! wimlib-imagex extract "$wim" "$index" "/$dat" "--dest-dir=$TMP" >/dev/null 2>&1; then - if ! wimlib-imagex extract "$wim" "$index" "/$org" "--dest-dir=$TMP" >/dev/null 2>&1; then + if wimlib-imagex extract "$wim" "$index" "/$file" "--dest-dir=$tmp" >/dev/null 2>&1; then + if ! wimlib-imagex extract "$wim" "$index" "/$dat" "--dest-dir=$tmp" >/dev/null 2>&1; then + if ! wimlib-imagex extract "$wim" "$index" "/$org" "--dest-dir=$tmp" >/dev/null 2>&1; then if ! wimlib-imagex update "$wim" "$index" --command "rename /$file /$org" > /dev/null; then warn "failed to backup original answer file ($file)." fi fi fi - rm -f "$TMP/$dat" - rm -f "$TMP/$org" - rm -f "$TMP/$file" fi if [[ "$MANUAL" != [Yy1]* ]]; then @@ -858,7 +861,7 @@ updateImage() { xml=$(basename "$asset") info "Adding $xml for automatic installation..." - local answer="$TMP/$xml" + local answer="$tmp/$xml" cp "$asset" "$answer" updateXML "$answer" "$language" @@ -869,22 +872,18 @@ updateImage() { wimlib-imagex update "$wim" "$index" --command "add $answer /$dat" > /dev/null || true fi - rm -f "$answer" - fi if [[ "$MANUAL" == [Yy1]* ]]; then wimlib-imagex update "$wim" "$index" --command "delete --force /$file" > /dev/null || true - if wimlib-imagex extract "$wim" "$index" "/$org" "--dest-dir=$TMP" >/dev/null 2>&1; then - if ! wimlib-imagex update "$wim" "$index" --command "add $TMP/$org /$file" > /dev/null; then + if wimlib-imagex extract "$wim" "$index" "/$org" "--dest-dir=$tmp" >/dev/null 2>&1; then + if ! wimlib-imagex update "$wim" "$index" --command "add $tmp/$org /$file" > /dev/null; then warn "failed to restore original answer file ($org)." fi fi - rm -f "$TMP/$org" - fi local find="$file" @@ -899,6 +898,7 @@ updateImage() { fi fi + rm -rf "$tmp" return 0 } From 0dabce04a6fc78347dfc130557f7a579d74bfeb1 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sat, 12 Oct 2024 15:52:51 +0200 Subject: [PATCH 024/253] docs: Features (#797) --- readme.md | 1 - 1 file changed, 1 deletion(-) diff --git a/readme.md b/readme.md index c1c88c2..24a262c 100644 --- a/readme.md +++ b/readme.md @@ -16,7 +16,6 @@ Windows inside a Docker container. ## Features ✨ - - Multi-language - ISO downloader - KVM acceleration - Web-based viewer From 9db3651654544558ded41db510b14861d29a04f2 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sat, 12 Oct 2024 16:54:35 +0200 Subject: [PATCH 025/253] feat: Select LTSC edition based on key (#798) --- assets/win11x64-iot.xml | 8 +------- assets/win11x64-ltsc.xml | 8 +------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/assets/win11x64-iot.xml b/assets/win11x64-iot.xml index 89aa0d6..0de7bb4 100644 --- a/assets/win11x64-iot.xml +++ b/assets/win11x64-iot.xml @@ -61,12 +61,6 @@ - - - /image/index - 2 - - 0 3 @@ -87,7 +81,7 @@ Docker Windows for Docker - + CGK42-GYN6Y-VD22B-BX98W-J8JXD false diff --git a/assets/win11x64-ltsc.xml b/assets/win11x64-ltsc.xml index 545ea88..8e42eb6 100644 --- a/assets/win11x64-ltsc.xml +++ b/assets/win11x64-ltsc.xml @@ -61,12 +61,6 @@ - - - /image/index - 1 - - 0 3 @@ -87,7 +81,7 @@ Docker Windows for Docker - + M7XTQ-FN8P6-TTKYV-9D4CC-J462D false From edb300dfec9cce9caf44415cb4d4e68f4579b994 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sat, 12 Oct 2024 18:09:13 +0200 Subject: [PATCH 026/253] feat: Additional download mirrors (#799) --- src/mido.sh | 44 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/src/mido.sh b/src/mido.sh index 454e83f..0c6b58e 100644 --- a/src/mido.sh +++ b/src/mido.sh @@ -309,7 +309,7 @@ getWindows() { info "$msg" && html "$msg" case "${version,,}" in - "win2008r2" | "win81${PLATFORM,,}-enterprise-eval" | "win11${PLATFORM,,}-enterprise-iot-eval" ) + "win2008r2" | "win81${PLATFORM,,}-enterprise"* | "win11${PLATFORM,,}-enterprise-iot-eval" ) if [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-"* ]]; then error "No download in the $language language available for $edition!" MIDO_URL="" && return 1 @@ -336,15 +336,47 @@ getWindows() { "win2025-eval" | "win2022-eval" | "win2019-eval" | "win2016-eval" | "win2012r2-eval" ) download_windows_eval "$version" "$lang" "$edition" && return 0 ;; - "win81${PLATFORM,,}-enterprise-eval" ) - MIDO_URL="https://download.microsoft.com/download/B/9/9/B999286E-0A47-406D-8B3D-5B5AD7373A4A/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_ENTERPRISE_EVAL_EN-US-IR3_CENA_X64FREE_EN-US_DV9.ISO" && return 0 - ;; - "win2008r2" ) - MIDO_URL="https://download.microsoft.com/download/4/1/D/41DEA7E0-B30D-4012-A1E3-F24DC03BA1BB/7601.17514.101119-1850_x64fre_server_eval_en-us-GRMSXEVAL_EN_DVD.iso" && return 0 + "win81${PLATFORM,,}-enterprise"* | "win2008r2" ) ;; * ) error "Invalid VERSION specified, value \"$version\" is not recognized!" ;; esac + if [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-"* ]]; then + MIDO_URL="" + return 1 + fi + + case "${version,,}" in + "win81${PLATFORM,,}-enterprise"* ) + MIDO_URL="https://download.microsoft.com/download/B/9/9/B999286E-0A47-406D-8B3D-5B5AD7373A4A/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_ENTERPRISE_EVAL_EN-US-IR3_CENA_X64FREE_EN-US_DV9.ISO" + return 0 + ;; + "win2025-eval" ) + MIDO_URL="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26100.1.240331-1435.ge_release_SERVER_EVAL_x64FRE_en-us.iso" + return 0 + ;; + "win2022-eval" ) + MIDO_URL="https://software-static.download.prss.microsoft.com/sg/download/888969d5-f34g-4e03-ac9d-1f9786c66749/SERVER_EVAL_x64FRE_en-us.iso" + return 0 + ;; + "win2019-eval" ) + MIDO_URL="https://software-download.microsoft.com/download/pr/17763.737.190906-2324.rs5_release_svc_refresh_SERVER_EVAL_x64FRE_en-us_1.iso" + return 0 + ;; + "win2016-eval" ) + MIDO_URL="https://software-download.microsoft.com/download/pr/Windows_Server_2016_Datacenter_EVAL_en-us_14393_refresh.ISO" + return 0 + ;; + "win2012r2-eval" ) + MIDO_URL="https://download.microsoft.com/download/6/2/A/62A76ABB-9990-4EFC-A4FE-C7D698DAEB96/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO" + return 0 + ;; + "win2008r2" ) + MIDO_URL="https://download.microsoft.com/download/4/1/D/41DEA7E0-B30D-4012-A1E3-F24DC03BA1BB/7601.17514.101119-1850_x64fre_server_eval_en-us-GRMSXEVAL_EN_DVD.iso" + return 0 + ;; + esac + MIDO_URL="" return 1 } From ff55f843bd75082c6fff613a43027226baf3a2fe Mon Sep 17 00:00:00 2001 From: Kroese Date: Sat, 12 Oct 2024 19:02:03 +0200 Subject: [PATCH 027/253] feat: Additional download mirrors (#801) --- src/mido.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/mido.sh b/src/mido.sh index 0c6b58e..079f9f2 100644 --- a/src/mido.sh +++ b/src/mido.sh @@ -309,7 +309,7 @@ getWindows() { info "$msg" && html "$msg" case "${version,,}" in - "win2008r2" | "win81${PLATFORM,,}-enterprise"* | "win11${PLATFORM,,}-enterprise-iot-eval" ) + "win2008r2" | "win81${PLATFORM,,}-enterprise"* | "win11${PLATFORM,,}-enterprise-iot"* | "win11${PLATFORM,,}-enterprise-ltsc"* ) if [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-"* ]]; then error "No download in the $language language available for $edition!" MIDO_URL="" && return 1 @@ -317,8 +317,8 @@ getWindows() { esac case "${version,,}" in - "win11${PLATFORM,,}-enterprise-iot-eval" ) ;; - "win11${PLATFORM,,}-enterprise-ltsc-eval" ) ;; + "win11${PLATFORM,,}-enterprise-iot"* ) ;; + "win11${PLATFORM,,}-enterprise-ltsc"* ) ;; * ) if [[ "${PLATFORM,,}" != "x64" ]]; then error "No download for the ${PLATFORM^^} platform available for $edition!" @@ -341,6 +341,11 @@ getWindows() { * ) error "Invalid VERSION specified, value \"$version\" is not recognized!" ;; esac + if [[ "${PLATFORM,,}" != "x64" ]]; then + MIDO_URL="" + return 1 + fi + if [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-"* ]]; then MIDO_URL="" return 1 @@ -351,6 +356,10 @@ getWindows() { MIDO_URL="https://download.microsoft.com/download/B/9/9/B999286E-0A47-406D-8B3D-5B5AD7373A4A/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_ENTERPRISE_EVAL_EN-US-IR3_CENA_X64FREE_EN-US_DV9.ISO" return 0 ;; + "win11${PLATFORM,,}-enterprise-iot"* | "win11${PLATFORM,,}-enterprise-ltsc"* ) + MIDO_URL="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26100.1.240331-1435.ge_release_CLIENT_IOT_LTSC_EVAL_x64FRE_en-us.iso" + return 0 + ;; "win2025-eval" ) MIDO_URL="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26100.1.240331-1435.ge_release_SERVER_EVAL_x64FRE_en-us.iso" return 0 From 3cab3d1c7bd7de8d7347b61c884e970a51b6d661 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 13 Oct 2024 11:28:21 +0200 Subject: [PATCH 028/253] feat: Extract drivers to temporary folder (#803) --- src/define.sh | 64 +++++++++++++++++++++++++++----------------------- src/install.sh | 32 ++++--------------------- 2 files changed, 38 insertions(+), 58 deletions(-) diff --git a/src/define.sh b/src/define.sh index cd214df..1b4bd77 100644 --- a/src/define.sh +++ b/src/define.sh @@ -1637,6 +1637,31 @@ validVersion() { return 1 } +addFolder() { + + local src="$1" + local folder="/oem" + + [ ! -d "$folder" ] && folder="/OEM" + [ ! -d "$folder" ] && folder="$STORAGE/oem" + [ ! -d "$folder" ] && folder="$STORAGE/OEM" + [ ! -d "$folder" ] && return 0 + + local msg="Adding OEM folder to image..." + info "$msg" && html "$msg" + + local dest="$src/\$OEM\$/\$1/OEM" + mkdir -p "$dest" + + ! cp -Lr "$folder/." "$dest" && return 1 + + local file + file=$(find "$dest" -maxdepth 1 -type f -iname install.bat | head -n 1) + [ -f "$file" ] && unix2dos -q "$file" + + return 0 +} + migrateFiles() { local base="$1" @@ -1665,7 +1690,7 @@ prepareInstall() { local arch="$4" local key="$5" local driver="$6" - local drivers="/run/shm/drivers" + local drivers="/tmp/drivers" rm -rf "$drivers" mkdir -p "$drivers" @@ -1723,8 +1748,8 @@ prepareInstall() { fi mkdir -p "$dir/\$OEM\$/\$1/Drivers/sata" - cp -a "$drivers/sata/xp/$arch/." "$dir/\$OEM\$/\$1/Drivers/sata" - cp -a "$drivers/sata/xp/$arch/." "$target" + cp -Lr "$drivers/sata/xp/$arch/." "$dir/\$OEM\$/\$1/Drivers/sata" + cp -Lr "$drivers/sata/xp/$arch/." "$target" sed -i '/^\[SCSI.Load\]/s/$/\niaStor=iaStor.sys,4/' "$target/TXTSETUP.SIF" sed -i '/^\[FileFlags\]/s/$/\niaStor.sys = 16/' "$target/TXTSETUP.SIF" @@ -1749,23 +1774,14 @@ prepareInstall() { warn "this version of $desc requires a volume license key (VLK), it will ask for one during installation." fi - local oem="" - local folder="/oem" - - [ ! -d "$folder" ] && folder="/OEM" - [ ! -d "$folder" ] && folder="$STORAGE/oem" - [ ! -d "$folder" ] && folder="$STORAGE/OEM" - - if [ -d "$folder" ]; then - - file=$(find "$folder" -maxdepth 1 -type f -iname install.bat | head -n 1) - - if [ -f "$file" ]; then - unix2dos -q "$file" - oem="\"Script\"=\"cmd /C start \\\"Install\\\" \\\"cmd /C C:\\\\OEM\\\\install.bat\\\"\"" - fi + if ! addFolder "$dir"; then + error "Failed to add OEM folder to image!" && return 1 fi + local oem="" + 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" @@ -1958,18 +1974,6 @@ prepareInstall() { echo "" } | unix2dos > "$dir/\$OEM\$/cmdlines.txt" - [ ! -d "$folder" ] && return 0 - - msg="Adding OEM folder to image..." - info "$msg" && html "$msg" - - local dest="$dir/\$OEM\$/\$1/" - mkdir -p "$dest" - - if ! cp -r "$folder" "$dest"; then - error "Failed to copy OEM folder!" && return 1 - fi - return 0 } diff --git a/src/install.sh b/src/install.sh index 32f2f68..f6cad16 100644 --- a/src/install.sh +++ b/src/install.sh @@ -704,8 +704,9 @@ addDriver() { esac local dest="$path/$target/$driver" - mv "$path/$driver/$folder" "$dest" + mkdir -p "$dest" + cp -Lr "$path/$driver/$folder/." "$dest" return 0 } @@ -756,7 +757,7 @@ addDrivers() { # Workaround Virtio GPU driver bug local dst="$src/\$OEM\$/\$\$/Drivers" mkdir -p "$dst" - ! cp -a "$dest/." "$dst" && return 1 + ! cp -Lr "$dest/." "$dst" && return 1 rm -rf "$dest/viogpudo" ;; esac @@ -769,37 +770,12 @@ addDrivers() { return 0 } -addFolder() { - - local src="$1" - local folder="/oem" - - [ ! -d "$folder" ] && folder="/OEM" - [ ! -d "$folder" ] && folder="$STORAGE/oem" - [ ! -d "$folder" ] && folder="$STORAGE/OEM" - [ ! -d "$folder" ] && return 0 - - local msg="Adding OEM folder to image..." - info "$msg" && html "$msg" - - local dest="$src/\$OEM\$/\$1/OEM" - mkdir -p "$dest" - - ! cp -a "$folder/." "$dest" && return 1 - - local file - file=$(find "$dest" -maxdepth 1 -type f -iname install.bat | head -n 1) - [ -f "$file" ] && unix2dos -q "$file" - - return 0 -} - updateImage() { local dir="$1" local asset="$2" local language="$3" - local tmp="/run/shm/img" + local tmp="/tmp/install" local file="autounattend.xml" local org="${file//.xml/.org}" local dat="${file//.xml/.dat}" From 16c3a047c2ca6e5bfbff0f135a49003276ad645c Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 13 Oct 2024 12:00:31 +0200 Subject: [PATCH 029/253] fix: Shared folder mount (#804) --- readme.md | 2 +- src/samba.sh | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/readme.md b/readme.md index 24a262c..2e98468 100644 --- a/readme.md +++ b/readme.md @@ -139,7 +139,7 @@ kubectl apply -f kubernetes.yml ```yaml volumes: - - /home/user/example:/shared + - /home/user/example:/data ``` The example folder `/home/user/example` will be available as ` \\host.lan\Data`. diff --git a/src/samba.sh b/src/samba.sh index 71f9bcf..6a65095 100644 --- a/src/samba.sh +++ b/src/samba.sh @@ -14,7 +14,15 @@ if [[ "$DHCP" == [Yy1]* ]]; then interface="$VM_NET_DEV" fi -share="/shared" +share="/data" + +if [ ! -d "$share" ] && [ -d "$STORAGE/data" ]; then + share="$STORAGE/data" +fi + +if [ ! -d "$share" ] && [ -d "/shared" ]; then + share="/shared" +fi if [ ! -d "$share" ] && [ -d "$STORAGE/shared" ]; then share="$STORAGE/shared" @@ -36,11 +44,11 @@ if [ -z "$(ls -A "$share")" ]; then echo "To change its location, include the following bind mount in your compose file:" echo "" echo " volumes:" - echo " - \"/home/user/example:/shared\"" + echo " - \"/home/user/example:/data\"" echo "" echo "Or in your run command:" echo "" - echo " -v \"/home/user/example:/shared\"" + echo " -v \"/home/user/example:/data\"" echo "" echo "Replace the example path /home/user/example with the desired shared folder." echo "" From a659c1c9da635a5f594fbb2450be3edb834a2b21 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 13 Oct 2024 21:14:38 +0200 Subject: [PATCH 030/253] feat: Use bsdtar to extract driver archive (#805) --- Dockerfile | 3 ++- src/define.sh | 2 +- src/install.sh | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 74540dc..a8e4197 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,8 @@ RUN set -eu && \ dos2unix \ cabextract \ genisoimage \ - libxml2-utils && \ + libxml2-utils \ + libarchive-tools && \ apt-get clean && \ echo "$VERSION_ARG" > /run/version && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/src/define.sh b/src/define.sh index 1b4bd77..2fc1b1d 100644 --- a/src/define.sh +++ b/src/define.sh @@ -1704,7 +1704,7 @@ prepareInstall() { local msg="Adding drivers to image..." info "$msg" && html "$msg" - if ! tar -xf /drivers.txz -C "$drivers" --warning=no-timestamp; then + if ! bsdtar -xf /drivers.txz -C "$drivers"; then error "Failed to extract drivers!" && return 1 fi diff --git a/src/install.sh b/src/install.sh index f6cad16..b0c58ff 100644 --- a/src/install.sh +++ b/src/install.sh @@ -725,7 +725,7 @@ addDrivers() { local msg="Adding drivers to image..." info "$msg" && html "$msg" - if ! tar -xf /drivers.txz -C "$drivers" --warning=no-timestamp; then + if ! bsdtar -xf /drivers.txz -C "$drivers"; then error "Failed to extract drivers from archive!" && return 1 fi From 955f8a08a0584a514583535ce5fc50f7f718902a Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 14 Oct 2024 01:03:52 +0200 Subject: [PATCH 031/253] fix: Dereference symbolic links (#806) --- src/define.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/define.sh b/src/define.sh index 2fc1b1d..7a1c705 100644 --- a/src/define.sh +++ b/src/define.sh @@ -1715,21 +1715,21 @@ prepareInstall() { error "Failed to locate required storage drivers!" && return 1 fi - cp "$drivers/viostor/$driver/$arch/viostor.sys" "$target" + cp -L "$drivers/viostor/$driver/$arch/viostor.sys" "$target" mkdir -p "$dir/\$OEM\$/\$1/Drivers/viostor" - cp "$drivers/viostor/$driver/$arch/viostor.cat" "$dir/\$OEM\$/\$1/Drivers/viostor" - cp "$drivers/viostor/$driver/$arch/viostor.inf" "$dir/\$OEM\$/\$1/Drivers/viostor" - cp "$drivers/viostor/$driver/$arch/viostor.sys" "$dir/\$OEM\$/\$1/Drivers/viostor" + cp -L "$drivers/viostor/$driver/$arch/viostor.cat" "$dir/\$OEM\$/\$1/Drivers/viostor" + cp -L "$drivers/viostor/$driver/$arch/viostor.inf" "$dir/\$OEM\$/\$1/Drivers/viostor" + cp -L "$drivers/viostor/$driver/$arch/viostor.sys" "$dir/\$OEM\$/\$1/Drivers/viostor" if [ ! -f "$drivers/NetKVM/$driver/$arch/netkvm.sys" ]; then error "Failed to locate required network drivers!" && return 1 fi mkdir -p "$dir/\$OEM\$/\$1/Drivers/NetKVM" - cp "$drivers/NetKVM/$driver/$arch/netkvm.cat" "$dir/\$OEM\$/\$1/Drivers/NetKVM" - cp "$drivers/NetKVM/$driver/$arch/netkvm.inf" "$dir/\$OEM\$/\$1/Drivers/NetKVM" - cp "$drivers/NetKVM/$driver/$arch/netkvm.sys" "$dir/\$OEM\$/\$1/Drivers/NetKVM" + cp -L "$drivers/NetKVM/$driver/$arch/netkvm.cat" "$dir/\$OEM\$/\$1/Drivers/NetKVM" + cp -L "$drivers/NetKVM/$driver/$arch/netkvm.inf" "$dir/\$OEM\$/\$1/Drivers/NetKVM" + cp -L "$drivers/NetKVM/$driver/$arch/netkvm.sys" "$dir/\$OEM\$/\$1/Drivers/NetKVM" if [ ! -f "$target/TXTSETUP.SIF" ]; then error "The file TXTSETUP.SIF could not be found!" && return 1 From b347232ac88c3af7352bfbc4d28f6b6877d9af64 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 14 Oct 2024 03:26:19 +0200 Subject: [PATCH 032/253] feat: Check returnvalues for drivers (#807) --- src/define.sh | 29 ++++++++++++++--------------- src/install.sh | 42 +++++++++++++++++++++--------------------- 2 files changed, 35 insertions(+), 36 deletions(-) diff --git a/src/define.sh b/src/define.sh index 7a1c705..501b8c8 100644 --- a/src/define.sh +++ b/src/define.sh @@ -1651,9 +1651,8 @@ addFolder() { info "$msg" && html "$msg" local dest="$src/\$OEM\$/\$1/OEM" - mkdir -p "$dest" - - ! cp -Lr "$folder/." "$dest" && return 1 + mkdir -p "$dest" || return 1 + cp -Lr "$folder/." "$dest" || return 1 local file file=$(find "$dest" -maxdepth 1 -type f -iname install.bat | head -n 1) @@ -1715,21 +1714,21 @@ prepareInstall() { error "Failed to locate required storage drivers!" && return 1 fi - cp -L "$drivers/viostor/$driver/$arch/viostor.sys" "$target" + cp -L "$drivers/viostor/$driver/$arch/viostor.sys" "$target" || return 1 - mkdir -p "$dir/\$OEM\$/\$1/Drivers/viostor" - cp -L "$drivers/viostor/$driver/$arch/viostor.cat" "$dir/\$OEM\$/\$1/Drivers/viostor" - cp -L "$drivers/viostor/$driver/$arch/viostor.inf" "$dir/\$OEM\$/\$1/Drivers/viostor" - cp -L "$drivers/viostor/$driver/$arch/viostor.sys" "$dir/\$OEM\$/\$1/Drivers/viostor" + mkdir -p "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1 + cp -L "$drivers/viostor/$driver/$arch/viostor.cat" "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1 + cp -L "$drivers/viostor/$driver/$arch/viostor.inf" "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1 + cp -L "$drivers/viostor/$driver/$arch/viostor.sys" "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1 if [ ! -f "$drivers/NetKVM/$driver/$arch/netkvm.sys" ]; then error "Failed to locate required network drivers!" && return 1 fi - mkdir -p "$dir/\$OEM\$/\$1/Drivers/NetKVM" - cp -L "$drivers/NetKVM/$driver/$arch/netkvm.cat" "$dir/\$OEM\$/\$1/Drivers/NetKVM" - cp -L "$drivers/NetKVM/$driver/$arch/netkvm.inf" "$dir/\$OEM\$/\$1/Drivers/NetKVM" - cp -L "$drivers/NetKVM/$driver/$arch/netkvm.sys" "$dir/\$OEM\$/\$1/Drivers/NetKVM" + mkdir -p "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1 + cp -L "$drivers/NetKVM/$driver/$arch/netkvm.cat" "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1 + cp -L "$drivers/NetKVM/$driver/$arch/netkvm.inf" "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1 + cp -L "$drivers/NetKVM/$driver/$arch/netkvm.sys" "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1 if [ ! -f "$target/TXTSETUP.SIF" ]; then error "The file TXTSETUP.SIF could not be found!" && return 1 @@ -1747,9 +1746,9 @@ prepareInstall() { error "Failed to locate required SATA drivers!" && return 1 fi - mkdir -p "$dir/\$OEM\$/\$1/Drivers/sata" - cp -Lr "$drivers/sata/xp/$arch/." "$dir/\$OEM\$/\$1/Drivers/sata" - cp -Lr "$drivers/sata/xp/$arch/." "$target" + mkdir -p "$dir/\$OEM\$/\$1/Drivers/sata" || return 1 + cp -Lr "$drivers/sata/xp/$arch/." "$dir/\$OEM\$/\$1/Drivers/sata" || return 1 + cp -Lr "$drivers/sata/xp/$arch/." "$target" || return 1 sed -i '/^\[SCSI.Load\]/s/$/\niaStor=iaStor.sys,4/' "$target/TXTSETUP.SIF" sed -i '/^\[FileFlags\]/s/$/\niaStor.sys = 16/' "$target/TXTSETUP.SIF" diff --git a/src/install.sh b/src/install.sh index b0c58ff..4d7f6da 100644 --- a/src/install.sh +++ b/src/install.sh @@ -704,9 +704,9 @@ addDriver() { esac local dest="$path/$target/$driver" - mkdir -p "$dest" + mkdir -p "$dest" || return 1 + cp -Lr "$path/$driver/$folder/." "$dest" || return 1 - cp -Lr "$path/$driver/$folder/." "$dest" return 0 } @@ -731,33 +731,33 @@ addDrivers() { local target="\$WinPEDriver\$" local dest="$drivers/$target" - mkdir -p "$dest" + mkdir -p "$dest" || return 1 wimlib-imagex update "$file" "$index" --command "delete --force --recursive /$target" >/dev/null || true - addDriver "$version" "$drivers" "$target" "qxl" - addDriver "$version" "$drivers" "$target" "viofs" - addDriver "$version" "$drivers" "$target" "sriov" - addDriver "$version" "$drivers" "$target" "smbus" - addDriver "$version" "$drivers" "$target" "qxldod" - addDriver "$version" "$drivers" "$target" "viorng" - addDriver "$version" "$drivers" "$target" "viostor" - addDriver "$version" "$drivers" "$target" "viomem" - addDriver "$version" "$drivers" "$target" "NetKVM" - addDriver "$version" "$drivers" "$target" "Balloon" - addDriver "$version" "$drivers" "$target" "vioscsi" - addDriver "$version" "$drivers" "$target" "pvpanic" - addDriver "$version" "$drivers" "$target" "vioinput" - addDriver "$version" "$drivers" "$target" "viogpudo" - addDriver "$version" "$drivers" "$target" "vioserial" - addDriver "$version" "$drivers" "$target" "qemupciserial" + addDriver "$version" "$drivers" "$target" "qxl" || return 1 + addDriver "$version" "$drivers" "$target" "viofs" || return 1 + addDriver "$version" "$drivers" "$target" "sriov" || return 1 + addDriver "$version" "$drivers" "$target" "smbus" || return 1 + addDriver "$version" "$drivers" "$target" "qxldod" || return 1 + addDriver "$version" "$drivers" "$target" "viorng" || return 1 + addDriver "$version" "$drivers" "$target" "viostor" || return 1 + addDriver "$version" "$drivers" "$target" "viomem" || return 1 + addDriver "$version" "$drivers" "$target" "NetKVM" || return 1 + addDriver "$version" "$drivers" "$target" "Balloon" || return 1 + addDriver "$version" "$drivers" "$target" "vioscsi" || return 1 + addDriver "$version" "$drivers" "$target" "pvpanic" || return 1 + addDriver "$version" "$drivers" "$target" "vioinput" || return 1 + addDriver "$version" "$drivers" "$target" "viogpudo" || return 1 + addDriver "$version" "$drivers" "$target" "vioserial" || return 1 + addDriver "$version" "$drivers" "$target" "qemupciserial" || return 1 case "${version,,}" in "win11x64"* | "win2025"* ) # Workaround Virtio GPU driver bug local dst="$src/\$OEM\$/\$\$/Drivers" - mkdir -p "$dst" - ! cp -Lr "$dest/." "$dst" && return 1 + mkdir -p "$dst" || return 1 + cp -Lr "$dest/." "$dst" || return 1 rm -rf "$dest/viogpudo" ;; esac From 69b450299c684a80e16e345bcad356849a5c5f2c Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 14 Oct 2024 15:23:59 +0200 Subject: [PATCH 033/253] fix: Continue without drivers (#809) --- src/define.sh | 6 +++--- src/install.sh | 27 ++++++++++++++------------- src/mido.sh | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/define.sh b/src/define.sh index 501b8c8..e496be5 100644 --- a/src/define.sh +++ b/src/define.sh @@ -1677,7 +1677,7 @@ migrateFiles() { [[ "${version,,}" == "win7x64" ]] && file="en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.iso" [ ! -f "$STORAGE/$file" ] && return 0 - ! mv -f "$STORAGE/$file" "$base" && return 1 + mv -f "$STORAGE/$file" "$base" || return 1 return 0 } @@ -1996,7 +1996,7 @@ prepare2k3() { key="P4WJG-WK3W7-3HM8W-RWHCK-8JTRY" fi - ! prepareInstall "$iso" "$dir" "$desc" "$arch" "$key" "$driver" && return 1 + prepareInstall "$iso" "$dir" "$desc" "$arch" "$key" "$driver" || return 1 return 0 } @@ -2021,7 +2021,7 @@ prepareXP() { key="B2RBK-7KPT9-4JP6X-QQFWM-PJD6G" fi - ! prepareInstall "$iso" "$dir" "$desc" "$arch" "$key" "$driver" && return 1 + prepareInstall "$iso" "$dir" "$desc" "$arch" "$key" "$driver" || return 1 return 0 } diff --git a/src/install.sh b/src/install.sh index 4d7f6da..3170833 100644 --- a/src/install.sh +++ b/src/install.sh @@ -541,7 +541,7 @@ detectImage() { fi info=$(wimlib-imagex info -xml "$wim" | tr -d '\000') - ! checkPlatform "$info" && exit 67 + checkPlatform "$info" || exit 67 DETECTED=$(detectVersion "$info") @@ -588,7 +588,7 @@ prepareImage() { desc=$(printVersion "$DETECTED" "$DETECTED") - ! setMachine "$DETECTED" "$iso" "$dir" "$desc" && return 1 + setMachine "$DETECTED" "$iso" "$dir" "$desc" || return 1 skipVersion "$DETECTED" && return 0 if [[ "${BOOT_MODE,,}" != "windows_legacy" ]]; then @@ -815,11 +815,11 @@ updateImage() { fi if ! addDrivers "$src" "$tmp" "$wim" "$index" "$DETECTED"; then - error "Failed to add drivers to image!" && return 1 + error "Failed to add drivers to image!" fi if ! addFolder "$src"; then - error "Failed to add OEM folder to image!" && return 1 + error "Failed to add OEM folder to image!" fi if wimlib-imagex extract "$wim" "$index" "/$file" "--dest-dir=$tmp" >/dev/null 2>&1; then @@ -884,7 +884,8 @@ removeImage() { [ ! -f "$iso" ] && return 0 [ -n "$CUSTOM" ] && return 0 - ! rm -f "$iso" 2> /dev/null && warn "failed to remove $iso !" + + rm -f "$iso" 2> /dev/null || warn "failed to remove $iso !" return 0 } @@ -927,20 +928,20 @@ buildImage() { if [[ "${BOOT_MODE,,}" != "windows_legacy" ]]; then - ! genisoimage -o "$out" -b "$ETFS" -no-emul-boot -c "$cat" -iso-level 4 -J -l -D -N -joliet-long -relaxed-filenames -V "${LABEL::30}" \ - -udf -boot-info-table -eltorito-alt-boot -eltorito-boot "$EFISYS" -no-emul-boot -allow-limited-size -quiet "$dir" 2> "$log" && failed="y" + genisoimage -o "$out" -b "$ETFS" -no-emul-boot -c "$cat" -iso-level 4 -J -l -D -N -joliet-long -relaxed-filenames -V "${LABEL::30}" \ + -udf -boot-info-table -eltorito-alt-boot -eltorito-boot "$EFISYS" -no-emul-boot -allow-limited-size -quiet "$dir" 2> "$log" || failed="y" else case "${DETECTED,,}" in "win2k"* | "winxp"* | "win2003"* ) - ! genisoimage -o "$out" -b "$ETFS" -no-emul-boot -boot-load-seg 1984 -boot-load-size 4 -c "$cat" -iso-level 2 -J -l -D -N -joliet-long \ - -relaxed-filenames -V "${LABEL::30}" -quiet "$dir" 2> "$log" && failed="y" ;; + genisoimage -o "$out" -b "$ETFS" -no-emul-boot -boot-load-seg 1984 -boot-load-size 4 -c "$cat" -iso-level 2 -J -l -D -N -joliet-long \ + -relaxed-filenames -V "${LABEL::30}" -quiet "$dir" 2> "$log" || failed="y" ;; "win9"* ) - ! genisoimage -o "$out" -b "$ETFS" -J -r -V "${LABEL::30}" -quiet "$dir" 2> "$log" && failed="y" ;; + genisoimage -o "$out" -b "$ETFS" -J -r -V "${LABEL::30}" -quiet "$dir" 2> "$log" || failed="y" ;; * ) - ! genisoimage -o "$out" -b "$ETFS" -no-emul-boot -c "$cat" -iso-level 2 -J -l -D -N -joliet-long -relaxed-filenames -V "${LABEL::30}" \ - -udf -allow-limited-size -quiet "$dir" 2> "$log" && failed="y" ;; + genisoimage -o "$out" -b "$ETFS" -no-emul-boot -c "$cat" -iso-level 2 -J -l -D -N -joliet-long -relaxed-filenames -V "${LABEL::30}" \ + -udf -allow-limited-size -quiet "$dir" 2> "$log" || failed="y" ;; esac fi @@ -956,7 +957,7 @@ buildImage() { [ -s "$log" ] && error="$(<"$log")" [[ "$error" != "$hide" ]] && echo "$error" - ! mv -f "$out" "$BOOT" && return 1 + mv -f "$out" "$BOOT" || return 1 return 0 } diff --git a/src/mido.sh b/src/mido.sh index 079f9f2..ef8015e 100644 --- a/src/mido.sh +++ b/src/mido.sh @@ -592,7 +592,7 @@ downloadFile() { if [ "$total" -lt 100000000 ]; then error "Invalid download link: $url (is only $total bytes?). Please report this at $SUPPORT/issues." && return 1 fi - ! verifyFile "$iso" "$size" "$total" "$sum" && return 1 + verifyFile "$iso" "$size" "$total" "$sum" || return 1 html "Download finished successfully..." && return 0 fi From 815a3f3c6637e617a0b121510cf43267c9586f4c Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 14 Oct 2024 16:40:15 +0200 Subject: [PATCH 034/253] feat: Support multiple shared folders (#810) --- src/samba.sh | 92 ++++++++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 43 deletions(-) diff --git a/src/samba.sh b/src/samba.sh index 6a65095..498194f 100644 --- a/src/samba.sh +++ b/src/samba.sh @@ -14,47 +14,52 @@ if [[ "$DHCP" == [Yy1]* ]]; then interface="$VM_NET_DEV" fi -share="/data" +addShare() { + local dir="$1" + local name="$2" + local comment="$3" -if [ ! -d "$share" ] && [ -d "$STORAGE/data" ]; then - share="$STORAGE/data" -fi + mkdir -p "$dir" || return 1 -if [ ! -d "$share" ] && [ -d "/shared" ]; then - share="/shared" -fi + if [ -z "$(ls -A "$dir")" ]; then -if [ ! -d "$share" ] && [ -d "$STORAGE/shared" ]; then - share="$STORAGE/shared" -fi + chmod 777 "$dir" -mkdir -p "$share" + { echo "--------------------------------------------------------" + echo " $APP for Docker v$( "$dir/readme.txt" -if [ -z "$(ls -A "$share")" ]; then + fi - chmod 777 "$share" + { echo "" + echo "[$name]" + echo " path = $dir" + echo " comment = $comment" + echo " writable = yes" + echo " guest ok = yes" + echo " guest only = yes" + echo " force user = root" + echo " force group = root" + } >> "/etc/samba/smb.conf" - { echo "--------------------------------------------------------" - echo " $APP for Docker v$( "$share/readme.txt" - -fi + return 0 +} { echo "[global]" echo " server string = Dockur" @@ -72,17 +77,18 @@ fi echo " printing = bsd" echo " printcap name = /dev/null" echo " disable spoolss = yes" - echo "" - echo "[Data]" - echo " path = $share" - echo " comment = Shared" - echo " writable = yes" - echo " guest ok = yes" - echo " guest only = yes" - echo " force user = root" - echo " force group = root" } > "/etc/samba/smb.conf" +share="/data" +[ ! -d "$share" ] && [ -d "$STORAGE/data" ] && share="$STORAGE/data" +[ ! -d "$share" ] && [ -d "/shared" ] && share="/shared" +[ ! -d "$share" ] && [ -d "$STORAGE/shared" ] && share="$STORAGE/shared" + +addShare "$share" "Data" "Shared" || error "Failed to create shared folder!" + +[ -d "/data2" ] && addShare "/data2" "Data2" "Shared" +[ -d "/data3" ] && addShare "/data3" "Data3" "Shared" + if ! smbd; then error "Samba daemon failed to start!" smbd -i --debug-stdout || true From 01c61dd32d924903f8df8f51e7d82adae97dfcb6 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 14 Oct 2024 18:56:43 +0200 Subject: [PATCH 035/253] build: Remove ARM64 platform (#811) --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eb6174a..f6e2cf1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -74,7 +74,7 @@ jobs: context: . push: true provenance: false - platforms: linux/amd64,linux/arm64 + platforms: linux/amd64 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} annotations: ${{ steps.meta.outputs.annotations }} From 760fe9a31f10f3ef831c9cdfc874fd7d0ee7d725 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 15 Oct 2024 00:45:28 +0200 Subject: [PATCH 036/253] feat: Include ARM64 version in image (#812) --- .github/workflows/build.yml | 4 ++-- Dockerfile | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f6e2cf1..8731ab4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -50,7 +50,7 @@ jobs: labels: | org.opencontainers.image.title=${{ vars.NAME }} env: - DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index + DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -74,7 +74,7 @@ jobs: context: . push: true provenance: false - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} annotations: ${{ steps.meta.outputs.annotations }} diff --git a/Dockerfile b/Dockerfile index a8e4197..22a73af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM scratch +FROM scratch AS build-amd64 COPY --from=qemux/qemu-docker:6.05 / / ARG VERSION_ARG="0.0" @@ -31,6 +31,9 @@ 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 build-${TARGETARCH} + EXPOSE 8006 3389 VOLUME /storage From 80c5ba2231eadfa39a51ada9b1e7bb3e95e41d18 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 15 Oct 2024 00:49:05 +0200 Subject: [PATCH 037/253] build: Docker lint exception (#813) --- .github/workflows/check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 2c1ce5a..b132f31 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -21,5 +21,5 @@ jobs: uses: hadolint/hadolint-action@v3.1.0 with: dockerfile: Dockerfile - ignore: DL3008 + ignore: DL3006,DL3008 failure-threshold: warning From bc614fd233768137c118dfcfa74fb121fb48c7d1 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 20 Oct 2024 16:20:12 +0200 Subject: [PATCH 038/253] 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 039/253] 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 040/253] 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 041/253] 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 042/253] 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 043/253] 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 044/253] 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 045/253] 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 046/253] 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 047/253] 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 048/253] 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 049/253] 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 050/253] 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 051/253] 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 052/253] 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 053/253] 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 054/253] 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 055/253] 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 '