Compare commits

..

7 Commits
v4.00 ... v4.01

Author SHA1 Message Date
renovate[bot]
243b3bb5d6 chore(deps): update dockurr/windows-arm docker tag to v2.21 (#861)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-10 02:45:01 +01:00
Kroese
2cdb57a679 feat: Update download links (#860) 2024-11-10 00:17:00 +01:00
Kroese
f1f6c640b9 docs: Version alias (#859) 2024-11-10 00:01:12 +01:00
Kroese
86a766381e feat: Support 32-bit Windows versions (#834) 2024-10-24 17:49:02 +02:00
Kroese
b39507c5a4 feat: Additional aliasses (#833) 2024-10-24 12:17:09 +02:00
Kroese
80dead1446 fix: Enable USB for legacy machines (#824) 2024-10-20 16:39:42 +02:00
Kroese
bc614fd233 feat: Use q35 machine type for Windows XP (#823) 2024-10-20 16:20:12 +02:00
7 changed files with 153 additions and 102 deletions

View File

@@ -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"
@@ -31,15 +31,15 @@ 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
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"]

View File

@@ -3,7 +3,7 @@ services:
image: dockurr/windows
container_name: windows
environment:
VERSION: "win11"
VERSION: "11"
devices:
- /dev/kvm
cap_add:

View File

@@ -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

View File

@@ -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/).

View File

@@ -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" )
"11i" | "11iot" | "iot11" | "win11i" | "win11-iot" | "win11x64-iot" | "win11x64-enterprise-iot-eval" )
VERSION="win11x64-enterprise-iot-eval"
[ -z "$DETECTED" ] && DETECTED="win11x64-iot"
;;
"11l" | "11ltsc" | "ltsc11" | "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" )
"10i" | "10iot" | "iot10" | "win10i" | "win10-iot" | "win10x64-iot" | "win10x64-enterprise-iot-eval" )
VERSION="win10x64-enterprise-iot-eval"
[ -z "$DETECTED" ] && DETECTED="win10x64-iot"
;;
"10l" | "10ltsc" | "ltsc10" | "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" )
@@ -55,21 +71,21 @@ parseVersion() {
VERSION="win7x86"
[ -z "$DETECTED" ] && DETECTED="win7x86-enterprise"
;;
"vista" | "winvista" | "windowsvista" | "windows vista" )
"vista" | "ve" | "6" | "winvista" | "windowsvista" | "windows vista" )
VERSION="winvistax64"
[ -z "$DETECTED" ] && DETECTED="winvistax64-enterprise"
;;
"vistu" | "winvistu" | "windowsvistu" | "windows vistu" )
"vistu" | "vu" | "6u" | "winvistu" | "windowsvistu" | "windows vistu" )
VERSION="winvistax64-ultimate"
;;
"vistax86" | "winvistax86" | "windowsvistax86" | "winvistax86-enterprise" )
"vistax86" | "vex86" | "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" )
@@ -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
@@ -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
@@ -954,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
@@ -2107,36 +2153,36 @@ setMachine() {
local desc="$4"
case "${id,,}" in
"win9"* | "win2k"* )
MACHINE="pc-i440fx-2.4" ;;
"winxp"* | "win2003"* | "winvistax86"* | "win7x86"* )
MACHINE="pc-q35-2.10" ;;
"win9"* )
ETFS="[BOOT]/Boot-1.44M.img" ;;
"win2k"* )
ETFS="[BOOT]/Boot-NoEmul.img" ;;
"winxp"* )
if ! prepareXP "$iso" "$dir" "$desc"; then
error "Failed to prepare $desc ISO!" && return 1
fi ;;
"win2003"* )
if ! prepare2k3 "$iso" "$dir" "$desc"; then
error "Failed to prepare $desc ISO!" && return 1
fi ;;
esac
case "${id,,}" in
"win9"* | "win2k"* | "winxp"* | "win2003"* )
"win9"* | "win2k"* )
DISK_TYPE="auto"
MACHINE="pc-i440fx-2.4"
BOOT_MODE="windows_legacy" ;;
"winxp"* | "win2003"* )
DISK_TYPE="blk"
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 ;;
"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

View File

@@ -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

View File

@@ -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