Or^|-#e0%#dzw*V|r{(#|b!ZD~
z6THUwenPsJ0ZWwc#8z)CLK{c|b2r+UqaTAq6ohq?Q$GaH_H3yBUFQP0Go({<3B8~u-+>`F-
z_~JSj5t9QF$N`qLWdTcn?~SFx$3w&31ABiMwrRN%=JGF?!CtUl-sF&zx
zV(RB^DvJK(%n?TyU;UBi9CgR4HQ}aKOExzevOBSKl2m(#B2!rW7I@BEZk*WFTlPj6
zdag-I?e^!&QkH#f*Sve{ilOFO6Z~w`Fzl1;H`TbaRH`flKkIyW&t#|k^CMQQI;&q5
z52pBwB!u5I!7f*yNMf>Gs^O1vW4`RfpHOr=cL?(HiLoywgr>=$nyYYvIW
zjD*B=gZke|RL;YP8>*&h55uW%i*reEM&Hw70n3OW{hDs$jg|XQEfKYObRjcJ0zL
zZ@zKc<+t9{J-*RgIg%s|$|?q?h_>*HSk8Jq8`<}zwLf{8sH{BHy4aUfSm-JBpjdp)
z!c1Dvo=}G-U!=Vla4!t}U6Oj1U3}g^Z#w9mgBg`Yd7)xTHyJ=yzU
z@$>&dK<_TQjyf(friROs@0&`=0gX
ze|qlSi`%^vu2gXqBSoL_qGV#O7ml2p=a_9<YggSpW#XqmbmFN^`$Us^y)SzPgZR3>nytn}
z4T(5(VUXyea#ELFG;apS9`Q-m6{Y!p(
z?u>q?`Xlk?iquN#eLq0|?q<&a{Mzpv^e|~-Zcmqp%3I<9sy`RlfqF|Q
z<7*aR!1nJcx4_vfS<}ZZ7)uaq9_**LkAOBV8Z3h?u|)=p3Pob@_gI6tMQxA!Mxa3>
z5n5EI4wTkPEfHLd+G?jBErV|ixD!v*y_lL)vV-TcxSl1?f8p?+vJC=MrrJG}x)$}TeR|PiEX_Q?BIJNrdj9_KWECFh
z{Jn?Bg-K
zFZR0Oqerk~*M0U?X8eR#b!}_hCQbZY_%}cM=%3yHwln7eF8Lk5q2KTSd9Rp1RnjDN
zU7b!s=k2q9b=2Q(t{=b|zdZNc%J<%!Bw>~7IT~r}3FqAJ-0?RnzX0%->oK4H^ke_6
z(xF$llBC^C6YcK0AuXqW^_%ZF>j{7}f90;DwQT=ZUg|kjS$f+rJwxZ?n>B
zJt_O+svzFeb`@>srCk;}(kpajuPZByo{aaqtmyZ3RlkrGm8b0-P48&b(Vq{f&$X8F
zU}dtL*+Z%8Fb?A>K!T7MsEpu5@Ww`>kXZUz&Qz<(w!Eo3n@!!-Y|75O!H!lgwRtn$
z+Dyoa;E*8J+Pzu5Mc9idJo6WB`lDI1`jtJCbi8CcQkyO>L%AHnm-?OJ@A6@WMdU5s
zvs#_pm)W5iN;%er-f+p>`(3afY)XDh~G%7p$lXMvA_U^-DidmNMqNX*;KR@Z=$gCHiRXH-vPO
zX!l@cvRtPQrLMy`jHd(v5pe=4f-^=-Yt-39yLm3tja+tSIdfSMz)$M1ICpD04(>cS5ErrX^m6d~ciUPrdb~f4<-!0nY#V2Y+I2
zp4Yl8Sr@dBmT}~vb4MQBpM2}>7k}*;zxKU#y-xD0eLwWPUe(A_(X>&`&o_PXg^4D=
z{o%hqWAnAI|L&QpdP1Y!|I|nR;s95Go+GWX5Rne|0
zMk~jVkL9uu7!2feVXay({!lbY=pC#~mN9cEb-}{wv{p?##r&nme$e@`3;mzdzW@0A
zSmJ+IJ_L~kx0?Z{P^1Z+G-WQDG1E&k=Ch2MEM+>ibZkP`CKM7m47JJrtmpPdyznCY
z*w6pv_`Cn=7p4ZkpZD{>JF-2w<~fqCI47V*uCq5RzvB&{c8`NFw?hJ
ziEu*dyN|WYUEhA~v6p}6NB_S)>!}NV{_gX8l{veW*)`IierS{@zVW$#c)=rs{Ga?E
zcaA(X*}SH}ToNb><{tmn>h!B$``FumcVza4aTrex3+fg%Xb^)pMk-?{t<^HI+DQ_+HqpW+(znL+tfj1F3Du!+
z2m>54QTRU%A*h6)Ru!v=4S^(h(%{K`AX85o0*MQup+SujWdH<`AW|FBGq83M5H%*0
z2PiQqH#(WMPmH=s2DeO4;p+A#sq)RGB!r^I9R#**^5La{UPS7*54Q9#{kNE=WD&C
z(9--^e|_wL`3J85$pxP#z{s1#oFYMmkt2`KX8P&!CP8(DgXcg07*qoM6N<$f{ccxE&u=k
literal 0
HcmV?d00001
diff --git a/readme.md b/readme.md
index 50a66b4..cdde509 100644
--- a/readme.md
+++ b/readme.md
@@ -66,6 +66,10 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
[](https://codespaces.new/dockur/windows)
+##### Via a graphical installer:
+
+[](https://winboat.app)
+
## FAQ 💬
### How do I use it?
From 44dd2b67c8b7ca3af5b18826089dad0c2a5e49c4 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sat, 11 Oct 2025 17:33:02 +0200
Subject: [PATCH 309/342] docs: Update image link (#1468)
---
readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/readme.md b/readme.md
index cdde509..ed27dc3 100644
--- a/readme.md
+++ b/readme.md
@@ -68,7 +68,7 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
##### Via a graphical installer:
-[](https://winboat.app)
+[](https://winboat.app)
## FAQ 💬
From 8846aad171a415697e8b5a17410907abf1899db4 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sun, 12 Oct 2025 00:22:18 +0200
Subject: [PATCH 310/342] build: Run check for all files (#1469)
Removed specific paths from pull request triggers.
---
.github/workflows/test.yml | 6 ------
1 file changed, 6 deletions(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 4903636..c275f1a 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -1,12 +1,6 @@
on:
workflow_dispatch:
pull_request:
- paths:
- - '**/*.sh'
- - '**/*.xml'
- - '.github/workflows/test.yml'
- - '.github/workflows/check.yml'
- - 'Dockerfile'
name: "Test"
permissions: {}
From 3c029582d64593851d36470046b2b83b1924d906 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sun, 12 Oct 2025 02:03:16 +0200
Subject: [PATCH 311/342] build: Update QEMU base image version to v7.23
(#1470)
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 686fb85..59ea59f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,7 +3,7 @@
ARG VERSION_ARG="latest"
FROM scratch AS build-amd64
-COPY --from=qemux/qemu:7.22 / /
+COPY --from=qemux/qemu:7.23 / /
ARG TARGETARCH
ARG DEBCONF_NOWARNINGS="yes"
From 5e2ca4c1b6d822fdd2f4b4b7909e9d33ee19c25b Mon Sep 17 00:00:00 2001
From: Kroese
Date: Mon, 13 Oct 2025 15:06:21 +0200
Subject: [PATCH 312/342] build: Update QEMU base image to v7.24 (#1476)
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 59ea59f..9fa65be 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,7 +3,7 @@
ARG VERSION_ARG="latest"
FROM scratch AS build-amd64
-COPY --from=qemux/qemu:7.23 / /
+COPY --from=qemux/qemu:7.24 / /
ARG TARGETARCH
ARG DEBCONF_NOWARNINGS="yes"
From 70dce80aec8576e3cfeeb2a803c0bcc9a826f1c2 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Wed, 15 Oct 2025 13:15:31 +0200
Subject: [PATCH 313/342] docs: Readme (#1484)
---
readme.md | 19 +++++--------------
1 file changed, 5 insertions(+), 14 deletions(-)
diff --git a/readme.md b/readme.md
index ed27dc3..4256727 100644
--- a/readme.md
+++ b/readme.md
@@ -160,7 +160,7 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
### How do I change the amount of CPU or RAM?
- By default, the container will be allowed to use a maximum of 2 CPU cores and 4 GB of RAM.
+ By default, Windows will be allowed to use 2 CPU cores and 4 GB of RAM.
If you want to adjust this, you can specify the desired amount using the following environment variables:
@@ -172,9 +172,9 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
### How do I configure the username and password?
- By default, a user called `Docker` is created during installation and its password is `admin`.
+ By default, a user called `Docker` is created and its password is `admin`.
- If you want to use different credentials, you can configure them in your compose file (only before installation):
+ If you want to use different credentials during installation, you can configure them in your compose file:
```yaml
environment:
@@ -186,7 +186,7 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
By default, the English version of Windows will be downloaded.
- But before installation you can add the `LANGUAGE` environment variable to your compose file, in order to specify an alternative language:
+ But you can add the `LANGUAGE` environment variable to your compose file, in order to specify an alternative language to be downloaded:
```yaml
environment:
@@ -197,7 +197,7 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
### 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 `KEYBOARD` and `REGION` variables like this (before installation):
+ If you want to use a keyboard layout or locale that is not the default for your selected language, you can add `KEYBOARD` and `REGION` variables like this:
```yaml
environment:
@@ -205,15 +205,6 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
KEYBOARD: "en-US"
```
-### How do I select the edition?
-
- Windows Server offers a minimalistic Core edition without a GUI. To select those non-standard editions, you can add a `EDITION` variable like this (before installation):
-
- ```yaml
- environment:
- EDITION: "core"
- ```
-
### How do I install a custom image?
In order to download an unsupported ISO image, specify its URL in the `VERSION` environment variable:
From ab457abc3c6a12bbbfd6c6ffd9ce00e63cf500bc Mon Sep 17 00:00:00 2001
From: Kroese
Date: Wed, 15 Oct 2025 21:54:52 +0200
Subject: [PATCH 314/342] feat: Add custom .yml for Github Codespaces (#1486)
---
.devcontainer.json | 2 +-
.github/codespaces.yml | 22 ++++++++++++++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
create mode 100644 .github/codespaces.yml
diff --git a/.devcontainer.json b/.devcontainer.json
index 14d70b4..a7eeaf5 100644
--- a/.devcontainer.json
+++ b/.devcontainer.json
@@ -2,5 +2,5 @@
"name": "windows",
"service": "windows",
"forwardPorts": [8006],
- "dockerComposeFile": "compose.yml"
+ "dockerComposeFile": ".github/codespaces.yml"
}
diff --git a/.github/codespaces.yml b/.github/codespaces.yml
new file mode 100644
index 0000000..7aaba65
--- /dev/null
+++ b/.github/codespaces.yml
@@ -0,0 +1,22 @@
+services:
+ windows:
+ image: dockurr/windows
+ container_name: windows
+ environment:
+ VERSION: "11"
+ RAM_SIZE: "max"
+ DISK_SIZE: "max"
+ CPU_CORES: "max"
+ devices:
+ - /dev/kvm
+ - /dev/net/tun
+ cap_add:
+ - NET_ADMIN
+ ports:
+ - 8006:8006
+ - 3389:3389/tcp
+ - 3389:3389/udp
+ volumes:
+ - ./windows:/storage
+ restart: on-failure
+ stop_grace_period: 2m
From 8472d700dc2083bebdfdba8610072f21f7eb1a65 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Wed, 15 Oct 2025 23:47:29 +0200
Subject: [PATCH 315/342] feat: Improve Github Codespaces configuration (#1487)
---
.devcontainer.json | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/.devcontainer.json b/.devcontainer.json
index a7eeaf5..b70743f 100644
--- a/.devcontainer.json
+++ b/.devcontainer.json
@@ -1,6 +1,21 @@
{
- "name": "windows",
+ "name": "Windows 11 Pro",
"service": "windows",
- "forwardPorts": [8006],
+ "containerEnv": {
+ "VERSION": "11"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
"dockerComposeFile": ".github/codespaces.yml"
}
From 0b0de7de142761383e68c80c8176c5056ff34d0e Mon Sep 17 00:00:00 2001
From: Kroese
Date: Thu, 16 Oct 2025 00:03:24 +0200
Subject: [PATCH 316/342] feat: Improve Github Codespaces configuration (#1488)
---
.devcontainer.json | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/.devcontainer.json b/.devcontainer.json
index b70743f..3d8577f 100644
--- a/.devcontainer.json
+++ b/.devcontainer.json
@@ -2,7 +2,10 @@
"name": "Windows 11 Pro",
"service": "windows",
"containerEnv": {
- "VERSION": "11"
+ "VERSION": "11",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
},
"forwardPorts": [8006],
"portsAttributes": {
From 42a149d7b91a329fc1a0fd7073b5ff3b78e5fe73 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Thu, 16 Oct 2025 10:54:06 +0200
Subject: [PATCH 317/342] feat: Make Windows version selectable in Codespaces
(#1489)
---
.../10/devcontainer.json | 6 ++---
.devcontainer/10e/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/10l/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/11e/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/11l/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/2003/devcontainer.json | 21 ++++++++++++++++
.devcontainer/2008/devcontainer.json | 21 ++++++++++++++++
.devcontainer/2012/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/2016/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/2019/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/2022/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/2025/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/2k/devcontainer.json | 21 ++++++++++++++++
.devcontainer/7u/devcontainer.json | 21 ++++++++++++++++
.devcontainer/7u32/devcontainer.json | 21 ++++++++++++++++
.devcontainer/8e/devcontainer.json | 24 +++++++++++++++++++
{.github => .devcontainer}/codespaces.yml | 0
.devcontainer/core11/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/nano11/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/tiny10/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/tiny11/devcontainer.json | 24 +++++++++++++++++++
.devcontainer/vu/devcontainer.json | 21 ++++++++++++++++
.devcontainer/vu32/devcontainer.json | 21 ++++++++++++++++
.devcontainer/xp/devcontainer.json | 21 ++++++++++++++++
.devcontainer/xp64/devcontainer.json | 21 ++++++++++++++++
26 files changed, 552 insertions(+), 3 deletions(-)
rename .devcontainer.json => .devcontainer/10/devcontainer.json (79%)
create mode 100644 .devcontainer/10e/devcontainer.json
create mode 100644 .devcontainer/10l/devcontainer.json
create mode 100644 .devcontainer/11e/devcontainer.json
create mode 100644 .devcontainer/11l/devcontainer.json
create mode 100644 .devcontainer/2003/devcontainer.json
create mode 100644 .devcontainer/2008/devcontainer.json
create mode 100644 .devcontainer/2012/devcontainer.json
create mode 100644 .devcontainer/2016/devcontainer.json
create mode 100644 .devcontainer/2019/devcontainer.json
create mode 100644 .devcontainer/2022/devcontainer.json
create mode 100644 .devcontainer/2025/devcontainer.json
create mode 100644 .devcontainer/2k/devcontainer.json
create mode 100644 .devcontainer/7u/devcontainer.json
create mode 100644 .devcontainer/7u32/devcontainer.json
create mode 100644 .devcontainer/8e/devcontainer.json
rename {.github => .devcontainer}/codespaces.yml (100%)
create mode 100644 .devcontainer/core11/devcontainer.json
create mode 100644 .devcontainer/devcontainer.json
create mode 100644 .devcontainer/nano11/devcontainer.json
create mode 100644 .devcontainer/tiny10/devcontainer.json
create mode 100644 .devcontainer/tiny11/devcontainer.json
create mode 100644 .devcontainer/vu/devcontainer.json
create mode 100644 .devcontainer/vu32/devcontainer.json
create mode 100644 .devcontainer/xp/devcontainer.json
create mode 100644 .devcontainer/xp64/devcontainer.json
diff --git a/.devcontainer.json b/.devcontainer/10/devcontainer.json
similarity index 79%
rename from .devcontainer.json
rename to .devcontainer/10/devcontainer.json
index 3d8577f..bdc023e 100644
--- a/.devcontainer.json
+++ b/.devcontainer/10/devcontainer.json
@@ -1,8 +1,8 @@
{
- "name": "Windows 11 Pro",
+ "name": "Windows 10 Pro",
"service": "windows",
"containerEnv": {
- "VERSION": "11",
+ "VERSION": "10",
"RAM_SIZE": "max",
"DISK_SIZE": "max",
"CPU_CORES": "max"
@@ -20,5 +20,5 @@
"hostRequirements": {
"storage": "64gb"
},
- "dockerComposeFile": ".github/codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml"
}
diff --git a/.devcontainer/10e/devcontainer.json b/.devcontainer/10e/devcontainer.json
new file mode 100644
index 0000000..e401fea
--- /dev/null
+++ b/.devcontainer/10e/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Windows 10 Enterprise",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "10e",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/10l/devcontainer.json b/.devcontainer/10l/devcontainer.json
new file mode 100644
index 0000000..25109bb
--- /dev/null
+++ b/.devcontainer/10l/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Windows 10 LTSC",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "10l",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/11e/devcontainer.json b/.devcontainer/11e/devcontainer.json
new file mode 100644
index 0000000..c67781a
--- /dev/null
+++ b/.devcontainer/11e/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Windows 11 Enterprise",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "11e",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/11l/devcontainer.json b/.devcontainer/11l/devcontainer.json
new file mode 100644
index 0000000..6cda36c
--- /dev/null
+++ b/.devcontainer/11l/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Windows 11 LTSC",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "11l",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/2003/devcontainer.json b/.devcontainer/2003/devcontainer.json
new file mode 100644
index 0000000..ffe7dc5
--- /dev/null
+++ b/.devcontainer/2003/devcontainer.json
@@ -0,0 +1,21 @@
+{
+ "name": "Windows Server 2003",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "2003",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/2008/devcontainer.json b/.devcontainer/2008/devcontainer.json
new file mode 100644
index 0000000..5930e9c
--- /dev/null
+++ b/.devcontainer/2008/devcontainer.json
@@ -0,0 +1,21 @@
+{
+ "name": "Windows Server 2008 R2",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "2008",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/2012/devcontainer.json b/.devcontainer/2012/devcontainer.json
new file mode 100644
index 0000000..8d3519c
--- /dev/null
+++ b/.devcontainer/2012/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Windows Server 2012 R2",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "2012",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/2016/devcontainer.json b/.devcontainer/2016/devcontainer.json
new file mode 100644
index 0000000..2ede9d5
--- /dev/null
+++ b/.devcontainer/2016/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Windows Server 2016",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "2016",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/2019/devcontainer.json b/.devcontainer/2019/devcontainer.json
new file mode 100644
index 0000000..68e2829
--- /dev/null
+++ b/.devcontainer/2019/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Windows Server 2019",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "2019",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/2022/devcontainer.json b/.devcontainer/2022/devcontainer.json
new file mode 100644
index 0000000..5c66d43
--- /dev/null
+++ b/.devcontainer/2022/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Windows Server 2022",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "2022",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/2025/devcontainer.json b/.devcontainer/2025/devcontainer.json
new file mode 100644
index 0000000..f5b2984
--- /dev/null
+++ b/.devcontainer/2025/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Windows Server 2025",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "2025",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/2k/devcontainer.json b/.devcontainer/2k/devcontainer.json
new file mode 100644
index 0000000..2aa0e55
--- /dev/null
+++ b/.devcontainer/2k/devcontainer.json
@@ -0,0 +1,21 @@
+{
+ "name": "Windows 2000 Professional",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "2k",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/7u/devcontainer.json b/.devcontainer/7u/devcontainer.json
new file mode 100644
index 0000000..ac4314c
--- /dev/null
+++ b/.devcontainer/7u/devcontainer.json
@@ -0,0 +1,21 @@
+{
+ "name": "Windows 7 Ultimate (64-bit)",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "7u",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/7u32/devcontainer.json b/.devcontainer/7u32/devcontainer.json
new file mode 100644
index 0000000..612ddc2
--- /dev/null
+++ b/.devcontainer/7u32/devcontainer.json
@@ -0,0 +1,21 @@
+{
+ "name": "Windows 7 Ultimate (32-bit)",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "7ux86",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/8e/devcontainer.json b/.devcontainer/8e/devcontainer.json
new file mode 100644
index 0000000..d27348b
--- /dev/null
+++ b/.devcontainer/8e/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Windows 8.1 Enterprise",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "8e",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.github/codespaces.yml b/.devcontainer/codespaces.yml
similarity index 100%
rename from .github/codespaces.yml
rename to .devcontainer/codespaces.yml
diff --git a/.devcontainer/core11/devcontainer.json b/.devcontainer/core11/devcontainer.json
new file mode 100644
index 0000000..44ba15f
--- /dev/null
+++ b/.devcontainer/core11/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Tiny 11 Core",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "core11",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000..7a9ad96
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Windows 11 Pro",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "11",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "codespaces.yml"
+}
diff --git a/.devcontainer/nano11/devcontainer.json b/.devcontainer/nano11/devcontainer.json
new file mode 100644
index 0000000..a5ea04a
--- /dev/null
+++ b/.devcontainer/nano11/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Tiny 11 Nano",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "nano11",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/tiny10/devcontainer.json b/.devcontainer/tiny10/devcontainer.json
new file mode 100644
index 0000000..9b7dd6b
--- /dev/null
+++ b/.devcontainer/tiny10/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Tiny 10",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "tiny10",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/tiny11/devcontainer.json b/.devcontainer/tiny11/devcontainer.json
new file mode 100644
index 0000000..a659705
--- /dev/null
+++ b/.devcontainer/tiny11/devcontainer.json
@@ -0,0 +1,24 @@
+{
+ "name": "Tiny 11",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "tiny11",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/vu/devcontainer.json b/.devcontainer/vu/devcontainer.json
new file mode 100644
index 0000000..2b9e871
--- /dev/null
+++ b/.devcontainer/vu/devcontainer.json
@@ -0,0 +1,21 @@
+{
+ "name": "Windows Vista Ultimate (64-bit)",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "vu",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/vu32/devcontainer.json b/.devcontainer/vu32/devcontainer.json
new file mode 100644
index 0000000..7c5be1c
--- /dev/null
+++ b/.devcontainer/vu32/devcontainer.json
@@ -0,0 +1,21 @@
+{
+ "name": "Windows Vista Ultimate (32-bit)",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "vux86",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/xp/devcontainer.json b/.devcontainer/xp/devcontainer.json
new file mode 100644
index 0000000..d7a8dfd
--- /dev/null
+++ b/.devcontainer/xp/devcontainer.json
@@ -0,0 +1,21 @@
+{
+ "name": "Windows XP (32-bit)",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "xp",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/xp64/devcontainer.json b/.devcontainer/xp64/devcontainer.json
new file mode 100644
index 0000000..a03df31
--- /dev/null
+++ b/.devcontainer/xp64/devcontainer.json
@@ -0,0 +1,21 @@
+{
+ "name": "Windows XP (64-bit)",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "xp64",
+ "RAM_SIZE": "max",
+ "DISK_SIZE": "max",
+ "CPU_CORES": "max"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
From 0ab3198ded9678c96389e113d9dd9352d5039ae8 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Fri, 17 Oct 2025 10:05:12 +0200
Subject: [PATCH 318/342] build: Validate JSON and YML files (#1493)
---
.dockerignore | 1 +
.github/workflows/check.yml | 26 ++++++++++++++++++--------
2 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/.dockerignore b/.dockerignore
index 258778b..154d44a 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,4 +1,5 @@
.dockerignore
+.devcontainer
.git
.github
.gitignore
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
index 788a2b0..9e9d278 100644
--- a/.github/workflows/check.yml
+++ b/.github/workflows/check.yml
@@ -7,19 +7,29 @@ jobs:
name: shellcheck
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v5
- - name: Run ShellCheck
+ -
+ name: Checkout
+ uses: actions/checkout@v5
+ -
+ name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
env:
SHELLCHECK_OPTS: -x --source-path=src -e SC1091 -e SC2001 -e SC2002 -e SC2034 -e SC2064 -e SC2153 -e SC2317 -e SC2028
- - name: Validate XML
- uses: action-pack/valid-xml@v1
- with:
- path: "assets"
- file-endings: ".xml"
- - name: Lint Dockerfile
+ -
+ name: Lint Dockerfile
uses: hadolint/hadolint-action@v3.3.0
with:
dockerfile: Dockerfile
ignore: DL3006,DL3008
failure-threshold: warning
+ -
+ name: Validate XML
+ uses: action-pack/valid-xml@v1
+ with:
+ path: "assets"
+ file-endings: ".xml"
+ -
+ name: Validate JSON and YML files
+ uses: GrantBirki/json-yaml-validate@v4
+ with:
+ yaml_exclude_regex: ".*\\kubernetes\\.yml$"
From f1ea8ee227c4943e1729610e64dd9681bcd2234a Mon Sep 17 00:00:00 2001
From: Kroese
Date: Fri, 17 Oct 2025 12:53:48 +0200
Subject: [PATCH 319/342] build: Update VirtIO drivers to v1.9.48 (#1494)
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 9fa65be..2a58348 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -27,7 +27,7 @@ RUN set -eu && \
COPY --chmod=755 ./src /run/
COPY --chmod=755 ./assets /run/assets
-ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.47-0/virtio-win-1.9.47.tar.xz /var/drivers.txz
+ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.48-0/virtio-win-1.9.48.tar.xz /var/drivers.txz
FROM dockurr/windows-arm:${VERSION_ARG} AS build-arm64
FROM build-${TARGETARCH}
From c6a8c0b702d921caff883d839f8d79d6832c717f Mon Sep 17 00:00:00 2001
From: Kroese
Date: Fri, 17 Oct 2025 13:38:11 +0200
Subject: [PATCH 320/342] feat: Load memory module (#1495)
---
src/entry.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/entry.sh b/src/entry.sh
index 1b440a0..2929503 100644
--- a/src/entry.sh
+++ b/src/entry.sh
@@ -22,7 +22,9 @@ cd /run
. boot.sh # Configure boot
. proc.sh # Initialize processor
. power.sh # Configure shutdown
+. memory.sh # Check available memory
. config.sh # Configure arguments
+. finish.sh # Finish initialization
trap - ERR
From c997bf7765faba8ba497898cf289b34d45b97b1a Mon Sep 17 00:00:00 2001
From: Kroese
Date: Fri, 17 Oct 2025 13:42:41 +0200
Subject: [PATCH 321/342] feat: Improve Github Codespaces configuration (#1497)
---
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 7 ++----
.../devcontainer.json | 18 ++++++++++++++
.../devcontainer.json | 18 ++++++++++++++
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 5 +---
.../devcontainer.json | 7 ++----
.../devcontainer.json | 7 ++----
.../devcontainer.json | 7 ++----
.devcontainer/210 - Tiny10/devcontainer.json | 21 ++++++++++++++++
.devcontainer/7u/devcontainer.json | 21 ----------------
.devcontainer/7u32/devcontainer.json | 21 ----------------
.devcontainer/codespaces.yml | 3 ++-
.devcontainer/devcontainer.json | 5 +---
.devcontainer/nano11/devcontainer.json | 24 -------------------
.devcontainer/vu/devcontainer.json | 21 ----------------
.devcontainer/vu32/devcontainer.json | 21 ----------------
.devcontainer/xp64/devcontainer.json | 21 ----------------
29 files changed, 82 insertions(+), 210 deletions(-)
rename .devcontainer/{11e => 010 - Windows 11 Enterprise}/devcontainer.json (80%)
rename .devcontainer/{11l => 020 - Windows 11 LTSC}/devcontainer.json (79%)
rename .devcontainer/{10 => 030 - Windows 10 Pro}/devcontainer.json (79%)
rename .devcontainer/{10e => 040 - Windows 10 Enterprise}/devcontainer.json (80%)
rename .devcontainer/{10l => 050 - Windows 10 LTSC}/devcontainer.json (79%)
rename .devcontainer/{8e => 060 - Windows 8.1 Enterprise}/devcontainer.json (80%)
rename .devcontainer/{xp => 070 - Windows 7 Ultimate}/devcontainer.json (69%)
create mode 100644 .devcontainer/080 - Windows Vista Ultimate/devcontainer.json
create mode 100644 .devcontainer/090 - Windows XP Professional/devcontainer.json
rename .devcontainer/{2k => 100 - Windows 2000 Professional}/devcontainer.json (77%)
rename .devcontainer/{2025 => 110 - Windows Server 2025}/devcontainer.json (79%)
rename .devcontainer/{2022 => 120 - Windows Server 2022}/devcontainer.json (79%)
rename .devcontainer/{2019 => 130 - Windows Server 2019}/devcontainer.json (79%)
rename .devcontainer/{2016 => 140 - Windows Server 2016}/devcontainer.json (79%)
rename .devcontainer/{2012 => 150 - Windows Server 2012 R2}/devcontainer.json (79%)
rename .devcontainer/{2008 => 160 - Windows Server 2008 R2}/devcontainer.json (77%)
rename .devcontainer/{2003 => 170 - Windows Server 2003}/devcontainer.json (77%)
rename .devcontainer/{tiny10 => 180 - Tiny11}/devcontainer.json (74%)
rename .devcontainer/{tiny11 => 190 - Tiny11 Core}/devcontainer.json (74%)
rename .devcontainer/{core11 => 200 - Tiny11 Nano}/devcontainer.json (73%)
create mode 100644 .devcontainer/210 - Tiny10/devcontainer.json
delete mode 100644 .devcontainer/7u/devcontainer.json
delete mode 100644 .devcontainer/7u32/devcontainer.json
delete mode 100644 .devcontainer/nano11/devcontainer.json
delete mode 100644 .devcontainer/vu/devcontainer.json
delete mode 100644 .devcontainer/vu32/devcontainer.json
delete mode 100644 .devcontainer/xp64/devcontainer.json
diff --git a/.devcontainer/11e/devcontainer.json b/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
similarity index 80%
rename from .devcontainer/11e/devcontainer.json
rename to .devcontainer/010 - Windows 11 Enterprise/devcontainer.json
index c67781a..4e67f1a 100644
--- a/.devcontainer/11e/devcontainer.json
+++ b/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows 11 Enterprise",
"service": "windows",
"containerEnv": {
- "VERSION": "11e",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "11e"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/11l/devcontainer.json b/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
similarity index 79%
rename from .devcontainer/11l/devcontainer.json
rename to .devcontainer/020 - Windows 11 LTSC/devcontainer.json
index 6cda36c..e93fbf1 100644
--- a/.devcontainer/11l/devcontainer.json
+++ b/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows 11 LTSC",
"service": "windows",
"containerEnv": {
- "VERSION": "11l",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "11l"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/10/devcontainer.json b/.devcontainer/030 - Windows 10 Pro/devcontainer.json
similarity index 79%
rename from .devcontainer/10/devcontainer.json
rename to .devcontainer/030 - Windows 10 Pro/devcontainer.json
index bdc023e..573f6ab 100644
--- a/.devcontainer/10/devcontainer.json
+++ b/.devcontainer/030 - Windows 10 Pro/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows 10 Pro",
"service": "windows",
"containerEnv": {
- "VERSION": "10",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "10"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/10e/devcontainer.json b/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
similarity index 80%
rename from .devcontainer/10e/devcontainer.json
rename to .devcontainer/040 - Windows 10 Enterprise/devcontainer.json
index e401fea..b5ef076 100644
--- a/.devcontainer/10e/devcontainer.json
+++ b/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows 10 Enterprise",
"service": "windows",
"containerEnv": {
- "VERSION": "10e",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "10e"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/10l/devcontainer.json b/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
similarity index 79%
rename from .devcontainer/10l/devcontainer.json
rename to .devcontainer/050 - Windows 10 LTSC/devcontainer.json
index 25109bb..30ced2a 100644
--- a/.devcontainer/10l/devcontainer.json
+++ b/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows 10 LTSC",
"service": "windows",
"containerEnv": {
- "VERSION": "10l",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "10l"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/8e/devcontainer.json b/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
similarity index 80%
rename from .devcontainer/8e/devcontainer.json
rename to .devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
index d27348b..41870d0 100644
--- a/.devcontainer/8e/devcontainer.json
+++ b/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows 8.1 Enterprise",
"service": "windows",
"containerEnv": {
- "VERSION": "8e",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "8e"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/xp/devcontainer.json b/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
similarity index 69%
rename from .devcontainer/xp/devcontainer.json
rename to .devcontainer/070 - Windows 7 Ultimate/devcontainer.json
index d7a8dfd..ffaf504 100644
--- a/.devcontainer/xp/devcontainer.json
+++ b/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
@@ -1,11 +1,8 @@
{
- "name": "Windows XP (32-bit)",
+ "name": "Windows 7 Ultimate",
"service": "windows",
"containerEnv": {
- "VERSION": "xp",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "7u"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json b/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
new file mode 100644
index 0000000..2cdfe89
--- /dev/null
+++ b/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
@@ -0,0 +1,18 @@
+{
+ "name": "Windows Vista Ultimate",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "vu"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/090 - Windows XP Professional/devcontainer.json b/.devcontainer/090 - Windows XP Professional/devcontainer.json
new file mode 100644
index 0000000..1e375ff
--- /dev/null
+++ b/.devcontainer/090 - Windows XP Professional/devcontainer.json
@@ -0,0 +1,18 @@
+{
+ "name": "Windows XP Professional",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "xp"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/2k/devcontainer.json b/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
similarity index 77%
rename from .devcontainer/2k/devcontainer.json
rename to .devcontainer/100 - Windows 2000 Professional/devcontainer.json
index 2aa0e55..9ee27cb 100644
--- a/.devcontainer/2k/devcontainer.json
+++ b/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows 2000 Professional",
"service": "windows",
"containerEnv": {
- "VERSION": "2k",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "2k"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/2025/devcontainer.json b/.devcontainer/110 - Windows Server 2025/devcontainer.json
similarity index 79%
rename from .devcontainer/2025/devcontainer.json
rename to .devcontainer/110 - Windows Server 2025/devcontainer.json
index f5b2984..2ef30e8 100644
--- a/.devcontainer/2025/devcontainer.json
+++ b/.devcontainer/110 - Windows Server 2025/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows Server 2025",
"service": "windows",
"containerEnv": {
- "VERSION": "2025",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "2025"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/2022/devcontainer.json b/.devcontainer/120 - Windows Server 2022/devcontainer.json
similarity index 79%
rename from .devcontainer/2022/devcontainer.json
rename to .devcontainer/120 - Windows Server 2022/devcontainer.json
index 5c66d43..4994c5f 100644
--- a/.devcontainer/2022/devcontainer.json
+++ b/.devcontainer/120 - Windows Server 2022/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows Server 2022",
"service": "windows",
"containerEnv": {
- "VERSION": "2022",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "2022"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/2019/devcontainer.json b/.devcontainer/130 - Windows Server 2019/devcontainer.json
similarity index 79%
rename from .devcontainer/2019/devcontainer.json
rename to .devcontainer/130 - Windows Server 2019/devcontainer.json
index 68e2829..333902b 100644
--- a/.devcontainer/2019/devcontainer.json
+++ b/.devcontainer/130 - Windows Server 2019/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows Server 2019",
"service": "windows",
"containerEnv": {
- "VERSION": "2019",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "2019"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/2016/devcontainer.json b/.devcontainer/140 - Windows Server 2016/devcontainer.json
similarity index 79%
rename from .devcontainer/2016/devcontainer.json
rename to .devcontainer/140 - Windows Server 2016/devcontainer.json
index 2ede9d5..f611b12 100644
--- a/.devcontainer/2016/devcontainer.json
+++ b/.devcontainer/140 - Windows Server 2016/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows Server 2016",
"service": "windows",
"containerEnv": {
- "VERSION": "2016",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "2016"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/2012/devcontainer.json b/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
similarity index 79%
rename from .devcontainer/2012/devcontainer.json
rename to .devcontainer/150 - Windows Server 2012 R2/devcontainer.json
index 8d3519c..d9d72f5 100644
--- a/.devcontainer/2012/devcontainer.json
+++ b/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows Server 2012 R2",
"service": "windows",
"containerEnv": {
- "VERSION": "2012",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "2012"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/2008/devcontainer.json b/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
similarity index 77%
rename from .devcontainer/2008/devcontainer.json
rename to .devcontainer/160 - Windows Server 2008 R2/devcontainer.json
index 5930e9c..cca5f42 100644
--- a/.devcontainer/2008/devcontainer.json
+++ b/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows Server 2008 R2",
"service": "windows",
"containerEnv": {
- "VERSION": "2008",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "2008"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/2003/devcontainer.json b/.devcontainer/170 - Windows Server 2003/devcontainer.json
similarity index 77%
rename from .devcontainer/2003/devcontainer.json
rename to .devcontainer/170 - Windows Server 2003/devcontainer.json
index ffe7dc5..14eb337 100644
--- a/.devcontainer/2003/devcontainer.json
+++ b/.devcontainer/170 - Windows Server 2003/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows Server 2003",
"service": "windows",
"containerEnv": {
- "VERSION": "2003",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "2003"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/tiny10/devcontainer.json b/.devcontainer/180 - Tiny11/devcontainer.json
similarity index 74%
rename from .devcontainer/tiny10/devcontainer.json
rename to .devcontainer/180 - Tiny11/devcontainer.json
index 9b7dd6b..0ed1384 100644
--- a/.devcontainer/tiny10/devcontainer.json
+++ b/.devcontainer/180 - Tiny11/devcontainer.json
@@ -1,11 +1,8 @@
{
- "name": "Tiny 10",
+ "name": "Tiny11",
"service": "windows",
"containerEnv": {
- "VERSION": "tiny10",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "tiny11"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/tiny11/devcontainer.json b/.devcontainer/190 - Tiny11 Core/devcontainer.json
similarity index 74%
rename from .devcontainer/tiny11/devcontainer.json
rename to .devcontainer/190 - Tiny11 Core/devcontainer.json
index a659705..1873cbc 100644
--- a/.devcontainer/tiny11/devcontainer.json
+++ b/.devcontainer/190 - Tiny11 Core/devcontainer.json
@@ -1,11 +1,8 @@
{
- "name": "Tiny 11",
+ "name": "Tiny11 Core",
"service": "windows",
"containerEnv": {
- "VERSION": "tiny11",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "core11"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/core11/devcontainer.json b/.devcontainer/200 - Tiny11 Nano/devcontainer.json
similarity index 73%
rename from .devcontainer/core11/devcontainer.json
rename to .devcontainer/200 - Tiny11 Nano/devcontainer.json
index 44ba15f..f05b707 100644
--- a/.devcontainer/core11/devcontainer.json
+++ b/.devcontainer/200 - Tiny11 Nano/devcontainer.json
@@ -1,11 +1,8 @@
{
- "name": "Tiny 11 Core",
+ "name": "Tiny11 Nano",
"service": "windows",
"containerEnv": {
- "VERSION": "core11",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "nano11"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/210 - Tiny10/devcontainer.json b/.devcontainer/210 - Tiny10/devcontainer.json
new file mode 100644
index 0000000..5039698
--- /dev/null
+++ b/.devcontainer/210 - Tiny10/devcontainer.json
@@ -0,0 +1,21 @@
+{
+ "name": "Tiny10",
+ "service": "windows",
+ "containerEnv": {
+ "VERSION": "tiny10"
+ },
+ "forwardPorts": [8006],
+ "portsAttributes": {
+ "8006": {
+ "label": "Web",
+ "onAutoForward": "openBrowser"
+ }
+ },
+ "otherPortsAttributes": {
+ "onAutoForward": "silent"
+ },
+ "hostRequirements": {
+ "storage": "64gb"
+ },
+ "dockerComposeFile": "../codespaces.yml"
+}
diff --git a/.devcontainer/7u/devcontainer.json b/.devcontainer/7u/devcontainer.json
deleted file mode 100644
index ac4314c..0000000
--- a/.devcontainer/7u/devcontainer.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "Windows 7 Ultimate (64-bit)",
- "service": "windows",
- "containerEnv": {
- "VERSION": "7u",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "openBrowser"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "../codespaces.yml"
-}
diff --git a/.devcontainer/7u32/devcontainer.json b/.devcontainer/7u32/devcontainer.json
deleted file mode 100644
index 612ddc2..0000000
--- a/.devcontainer/7u32/devcontainer.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "Windows 7 Ultimate (32-bit)",
- "service": "windows",
- "containerEnv": {
- "VERSION": "7ux86",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "openBrowser"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "../codespaces.yml"
-}
diff --git a/.devcontainer/codespaces.yml b/.devcontainer/codespaces.yml
index 7aaba65..f9682d1 100644
--- a/.devcontainer/codespaces.yml
+++ b/.devcontainer/codespaces.yml
@@ -4,7 +4,8 @@ services:
container_name: windows
environment:
VERSION: "11"
- RAM_SIZE: "max"
+ ALLOCATE: "Y"
+ RAM_SIZE: "half"
DISK_SIZE: "max"
CPU_CORES: "max"
devices:
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 7a9ad96..5de96d5 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -2,10 +2,7 @@
"name": "Windows 11 Pro",
"service": "windows",
"containerEnv": {
- "VERSION": "11",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
+ "VERSION": "11"
},
"forwardPorts": [8006],
"portsAttributes": {
diff --git a/.devcontainer/nano11/devcontainer.json b/.devcontainer/nano11/devcontainer.json
deleted file mode 100644
index a5ea04a..0000000
--- a/.devcontainer/nano11/devcontainer.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "name": "Tiny 11 Nano",
- "service": "windows",
- "containerEnv": {
- "VERSION": "nano11",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "openBrowser"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
-}
diff --git a/.devcontainer/vu/devcontainer.json b/.devcontainer/vu/devcontainer.json
deleted file mode 100644
index 2b9e871..0000000
--- a/.devcontainer/vu/devcontainer.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "Windows Vista Ultimate (64-bit)",
- "service": "windows",
- "containerEnv": {
- "VERSION": "vu",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "openBrowser"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "../codespaces.yml"
-}
diff --git a/.devcontainer/vu32/devcontainer.json b/.devcontainer/vu32/devcontainer.json
deleted file mode 100644
index 7c5be1c..0000000
--- a/.devcontainer/vu32/devcontainer.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "Windows Vista Ultimate (32-bit)",
- "service": "windows",
- "containerEnv": {
- "VERSION": "vux86",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "openBrowser"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "../codespaces.yml"
-}
diff --git a/.devcontainer/xp64/devcontainer.json b/.devcontainer/xp64/devcontainer.json
deleted file mode 100644
index a03df31..0000000
--- a/.devcontainer/xp64/devcontainer.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "Windows XP (64-bit)",
- "service": "windows",
- "containerEnv": {
- "VERSION": "xp64",
- "RAM_SIZE": "max",
- "DISK_SIZE": "max",
- "CPU_CORES": "max"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "openBrowser"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "../codespaces.yml"
-}
From 6f84823117bd5e79b94a69854e378ba1a0bce43d Mon Sep 17 00:00:00 2001
From: Kroese
Date: Fri, 17 Oct 2025 13:45:46 +0200
Subject: [PATCH 322/342] build: Update QEMU base image version to v7.25
(#1496)
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 2a58348..1f8a231 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,7 +3,7 @@
ARG VERSION_ARG="latest"
FROM scratch AS build-amd64
-COPY --from=qemux/qemu:7.24 / /
+COPY --from=qemux/qemu:7.25 / /
ARG TARGETARCH
ARG DEBCONF_NOWARNINGS="yes"
From b998cd4c7fbee6d8e1be74024b5004c02d5cde7a Mon Sep 17 00:00:00 2001
From: Kroese
Date: Fri, 17 Oct 2025 19:03:03 +0200
Subject: [PATCH 323/342] fix: Remove version variable in Codespaces (#1500)
---
.devcontainer/codespaces.yml | 1 -
.devcontainer/devcontainer.json | 3 ---
2 files changed, 4 deletions(-)
diff --git a/.devcontainer/codespaces.yml b/.devcontainer/codespaces.yml
index f9682d1..02c57be 100644
--- a/.devcontainer/codespaces.yml
+++ b/.devcontainer/codespaces.yml
@@ -3,7 +3,6 @@ services:
image: dockurr/windows
container_name: windows
environment:
- VERSION: "11"
ALLOCATE: "Y"
RAM_SIZE: "half"
DISK_SIZE: "max"
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 5de96d5..9772d1c 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -14,8 +14,5 @@
"otherPortsAttributes": {
"onAutoForward": "silent"
},
- "hostRequirements": {
- "storage": "64gb"
- },
"dockerComposeFile": "codespaces.yml"
}
From 10449a3d2968ae07db4567bae5e2f4fe29689829 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sun, 19 Oct 2025 01:31:23 +0200
Subject: [PATCH 324/342] feat: Improve Github Codespaces configuration (#1506)
---
.../010 - Windows 11 Enterprise/devcontainer.json | 8 +++-----
.devcontainer/020 - Windows 11 LTSC/devcontainer.json | 8 +++-----
.devcontainer/030 - Windows 10 Pro/devcontainer.json | 8 +++-----
.../040 - Windows 10 Enterprise/devcontainer.json | 8 +++-----
.devcontainer/050 - Windows 10 LTSC/devcontainer.json | 8 +++-----
.../060 - Windows 8.1 Enterprise/devcontainer.json | 8 +++-----
.devcontainer/070 - Windows 7 Ultimate/devcontainer.json | 7 ++++---
.../080 - Windows Vista Ultimate/devcontainer.json | 7 ++++---
.../090 - Windows XP Professional/devcontainer.json | 7 ++++---
.../100 - Windows 2000 Professional/devcontainer.json | 7 ++++---
.devcontainer/110 - Windows Server 2025/devcontainer.json | 8 +++-----
.devcontainer/120 - Windows Server 2022/devcontainer.json | 8 +++-----
.devcontainer/130 - Windows Server 2019/devcontainer.json | 8 +++-----
.devcontainer/140 - Windows Server 2016/devcontainer.json | 8 +++-----
.../150 - Windows Server 2012 R2/devcontainer.json | 8 +++-----
.../160 - Windows Server 2008 R2/devcontainer.json | 7 ++++---
.devcontainer/170 - Windows Server 2003/devcontainer.json | 7 ++++---
.devcontainer/180 - Tiny11/devcontainer.json | 8 +++-----
.devcontainer/190 - Tiny11 Core/devcontainer.json | 8 +++-----
.devcontainer/200 - Tiny11 Nano/devcontainer.json | 8 +++-----
.devcontainer/210 - Tiny10/devcontainer.json | 8 +++-----
.devcontainer/devcontainer.json | 7 ++++---
22 files changed, 73 insertions(+), 96 deletions(-)
diff --git a/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json b/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
index 4e67f1a..0c80313 100644
--- a/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
+++ b/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/020 - Windows 11 LTSC/devcontainer.json b/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
index e93fbf1..07a560e 100644
--- a/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
+++ b/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/030 - Windows 10 Pro/devcontainer.json b/.devcontainer/030 - Windows 10 Pro/devcontainer.json
index 573f6ab..579209b 100644
--- a/.devcontainer/030 - Windows 10 Pro/devcontainer.json
+++ b/.devcontainer/030 - Windows 10 Pro/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json b/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
index b5ef076..891be73 100644
--- a/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
+++ b/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/050 - Windows 10 LTSC/devcontainer.json b/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
index 30ced2a..d18b867 100644
--- a/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
+++ b/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json b/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
index 41870d0..77debb3 100644
--- a/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
+++ b/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json b/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
index ffaf504..b6da3da 100644
--- a/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
+++ b/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
@@ -12,7 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "onAutoForward": "ignore"
+ },
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json b/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
index 2cdfe89..1b907fe 100644
--- a/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
+++ b/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
@@ -12,7 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "onAutoForward": "ignore"
+ },
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/090 - Windows XP Professional/devcontainer.json b/.devcontainer/090 - Windows XP Professional/devcontainer.json
index 1e375ff..560ad6b 100644
--- a/.devcontainer/090 - Windows XP Professional/devcontainer.json
+++ b/.devcontainer/090 - Windows XP Professional/devcontainer.json
@@ -12,7 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "onAutoForward": "ignore"
+ },
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/100 - Windows 2000 Professional/devcontainer.json b/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
index 9ee27cb..7faee4b 100644
--- a/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
+++ b/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
@@ -12,7 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "onAutoForward": "ignore"
+ },
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/110 - Windows Server 2025/devcontainer.json b/.devcontainer/110 - Windows Server 2025/devcontainer.json
index 2ef30e8..547c1ac 100644
--- a/.devcontainer/110 - Windows Server 2025/devcontainer.json
+++ b/.devcontainer/110 - Windows Server 2025/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/120 - Windows Server 2022/devcontainer.json b/.devcontainer/120 - Windows Server 2022/devcontainer.json
index 4994c5f..a490a66 100644
--- a/.devcontainer/120 - Windows Server 2022/devcontainer.json
+++ b/.devcontainer/120 - Windows Server 2022/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/130 - Windows Server 2019/devcontainer.json b/.devcontainer/130 - Windows Server 2019/devcontainer.json
index 333902b..fbcd4bf 100644
--- a/.devcontainer/130 - Windows Server 2019/devcontainer.json
+++ b/.devcontainer/130 - Windows Server 2019/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/140 - Windows Server 2016/devcontainer.json b/.devcontainer/140 - Windows Server 2016/devcontainer.json
index f611b12..eb48544 100644
--- a/.devcontainer/140 - Windows Server 2016/devcontainer.json
+++ b/.devcontainer/140 - Windows Server 2016/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json b/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
index d9d72f5..c2dd726 100644
--- a/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
+++ b/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json b/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
index cca5f42..2f5d724 100644
--- a/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
+++ b/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
@@ -12,7 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "onAutoForward": "ignore"
+ },
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/170 - Windows Server 2003/devcontainer.json b/.devcontainer/170 - Windows Server 2003/devcontainer.json
index 14eb337..f06440f 100644
--- a/.devcontainer/170 - Windows Server 2003/devcontainer.json
+++ b/.devcontainer/170 - Windows Server 2003/devcontainer.json
@@ -12,7 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "onAutoForward": "ignore"
+ },
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/180 - Tiny11/devcontainer.json b/.devcontainer/180 - Tiny11/devcontainer.json
index 0ed1384..cf91e35 100644
--- a/.devcontainer/180 - Tiny11/devcontainer.json
+++ b/.devcontainer/180 - Tiny11/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/190 - Tiny11 Core/devcontainer.json b/.devcontainer/190 - Tiny11 Core/devcontainer.json
index 1873cbc..969072d 100644
--- a/.devcontainer/190 - Tiny11 Core/devcontainer.json
+++ b/.devcontainer/190 - Tiny11 Core/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/200 - Tiny11 Nano/devcontainer.json b/.devcontainer/200 - Tiny11 Nano/devcontainer.json
index f05b707..cb35030 100644
--- a/.devcontainer/200 - Tiny11 Nano/devcontainer.json
+++ b/.devcontainer/200 - Tiny11 Nano/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/210 - Tiny10/devcontainer.json b/.devcontainer/210 - Tiny10/devcontainer.json
index 5039698..2111084 100644
--- a/.devcontainer/210 - Tiny10/devcontainer.json
+++ b/.devcontainer/210 - Tiny10/devcontainer.json
@@ -12,10 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
+ "onAutoForward": "ignore"
},
- "hostRequirements": {
- "storage": "64gb"
- },
- "dockerComposeFile": "../codespaces.yml"
+ "dockerComposeFile": "../codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 9772d1c..533b39e 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -12,7 +12,8 @@
}
},
"otherPortsAttributes": {
- "onAutoForward": "silent"
- },
- "dockerComposeFile": "codespaces.yml"
+ "onAutoForward": "ignore"
+ },
+ "dockerComposeFile": "codespaces.yml",
+ "initializeCommand": "docker system prune --all --force"
}
From c3ba25bfb7f658f5a93ac19095446fd2780fc7b4 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sun, 19 Oct 2025 10:50:46 +0200
Subject: [PATCH 325/342] feat: Improve Github Codespaces configuration (#1510)
---
.devcontainer/010 - Windows 11 Enterprise/devcontainer.json | 4 ++--
.devcontainer/020 - Windows 11 LTSC/devcontainer.json | 4 ++--
.devcontainer/030 - Windows 10 Pro/devcontainer.json | 4 ++--
.devcontainer/040 - Windows 10 Enterprise/devcontainer.json | 4 ++--
.devcontainer/050 - Windows 10 LTSC/devcontainer.json | 4 ++--
.../060 - Windows 8.1 Enterprise/devcontainer.json | 4 ++--
.devcontainer/070 - Windows 7 Ultimate/devcontainer.json | 4 ++--
.../080 - Windows Vista Ultimate/devcontainer.json | 4 ++--
.../090 - Windows XP Professional/devcontainer.json | 4 ++--
.../100 - Windows 2000 Professional/devcontainer.json | 4 ++--
.devcontainer/110 - Windows Server 2025/devcontainer.json | 4 ++--
.devcontainer/120 - Windows Server 2022/devcontainer.json | 4 ++--
.devcontainer/130 - Windows Server 2019/devcontainer.json | 4 ++--
.devcontainer/140 - Windows Server 2016/devcontainer.json | 4 ++--
.../150 - Windows Server 2012 R2/devcontainer.json | 4 ++--
.../160 - Windows Server 2008 R2/devcontainer.json | 4 ++--
.devcontainer/170 - Windows Server 2003/devcontainer.json | 4 ++--
.devcontainer/180 - Tiny11/devcontainer.json | 4 ++--
.devcontainer/190 - Tiny11 Core/devcontainer.json | 4 ++--
.devcontainer/200 - Tiny11 Nano/devcontainer.json | 4 ++--
.devcontainer/210 - Tiny10/devcontainer.json | 4 ++--
.devcontainer/codespaces.yml | 3 +--
.devcontainer/devcontainer.json | 6 +++---
23 files changed, 46 insertions(+), 47 deletions(-)
diff --git a/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json b/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
index 0c80313..a5ddea1 100644
--- a/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
+++ b/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "11e"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/020 - Windows 11 LTSC/devcontainer.json b/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
index 07a560e..eef73ca 100644
--- a/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
+++ b/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "11l"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/030 - Windows 10 Pro/devcontainer.json b/.devcontainer/030 - Windows 10 Pro/devcontainer.json
index 579209b..4a37735 100644
--- a/.devcontainer/030 - Windows 10 Pro/devcontainer.json
+++ b/.devcontainer/030 - Windows 10 Pro/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "10"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json b/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
index 891be73..14f1ce6 100644
--- a/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
+++ b/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "10e"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/050 - Windows 10 LTSC/devcontainer.json b/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
index d18b867..d5755e9 100644
--- a/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
+++ b/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "10l"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json b/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
index 77debb3..ec1ed4d 100644
--- a/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
+++ b/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "8e"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json b/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
index b6da3da..0ad77d6 100644
--- a/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
+++ b/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "7u"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json b/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
index 1b907fe..e8514f8 100644
--- a/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
+++ b/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "vu"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/090 - Windows XP Professional/devcontainer.json b/.devcontainer/090 - Windows XP Professional/devcontainer.json
index 560ad6b..43322dc 100644
--- a/.devcontainer/090 - Windows XP Professional/devcontainer.json
+++ b/.devcontainer/090 - Windows XP Professional/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "xp"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/100 - Windows 2000 Professional/devcontainer.json b/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
index 7faee4b..c730760 100644
--- a/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
+++ b/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "2k"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/110 - Windows Server 2025/devcontainer.json b/.devcontainer/110 - Windows Server 2025/devcontainer.json
index 547c1ac..73e5edd 100644
--- a/.devcontainer/110 - Windows Server 2025/devcontainer.json
+++ b/.devcontainer/110 - Windows Server 2025/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "2025"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/120 - Windows Server 2022/devcontainer.json b/.devcontainer/120 - Windows Server 2022/devcontainer.json
index a490a66..4586bf8 100644
--- a/.devcontainer/120 - Windows Server 2022/devcontainer.json
+++ b/.devcontainer/120 - Windows Server 2022/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "2022"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/130 - Windows Server 2019/devcontainer.json b/.devcontainer/130 - Windows Server 2019/devcontainer.json
index fbcd4bf..9bc29ff 100644
--- a/.devcontainer/130 - Windows Server 2019/devcontainer.json
+++ b/.devcontainer/130 - Windows Server 2019/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "2019"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/140 - Windows Server 2016/devcontainer.json b/.devcontainer/140 - Windows Server 2016/devcontainer.json
index eb48544..94629c4 100644
--- a/.devcontainer/140 - Windows Server 2016/devcontainer.json
+++ b/.devcontainer/140 - Windows Server 2016/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "2016"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json b/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
index c2dd726..bd12659 100644
--- a/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
+++ b/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "2012"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json b/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
index 2f5d724..0af33f4 100644
--- a/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
+++ b/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "2008"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/170 - Windows Server 2003/devcontainer.json b/.devcontainer/170 - Windows Server 2003/devcontainer.json
index f06440f..f02be87 100644
--- a/.devcontainer/170 - Windows Server 2003/devcontainer.json
+++ b/.devcontainer/170 - Windows Server 2003/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "2003"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/180 - Tiny11/devcontainer.json b/.devcontainer/180 - Tiny11/devcontainer.json
index cf91e35..1224be1 100644
--- a/.devcontainer/180 - Tiny11/devcontainer.json
+++ b/.devcontainer/180 - Tiny11/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "tiny11"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/190 - Tiny11 Core/devcontainer.json b/.devcontainer/190 - Tiny11 Core/devcontainer.json
index 969072d..f928c24 100644
--- a/.devcontainer/190 - Tiny11 Core/devcontainer.json
+++ b/.devcontainer/190 - Tiny11 Core/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "core11"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/200 - Tiny11 Nano/devcontainer.json b/.devcontainer/200 - Tiny11 Nano/devcontainer.json
index cb35030..e7afeae 100644
--- a/.devcontainer/200 - Tiny11 Nano/devcontainer.json
+++ b/.devcontainer/200 - Tiny11 Nano/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "nano11"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/210 - Tiny10/devcontainer.json b/.devcontainer/210 - Tiny10/devcontainer.json
index 2111084..4f39fe0 100644
--- a/.devcontainer/210 - Tiny10/devcontainer.json
+++ b/.devcontainer/210 - Tiny10/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "tiny10"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
},
"dockerComposeFile": "../codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
diff --git a/.devcontainer/codespaces.yml b/.devcontainer/codespaces.yml
index 02c57be..85e3f64 100644
--- a/.devcontainer/codespaces.yml
+++ b/.devcontainer/codespaces.yml
@@ -1,9 +1,8 @@
services:
windows:
- image: dockurr/windows
container_name: windows
+ image: ghcr.io/dockur/windows
environment:
- ALLOCATE: "Y"
RAM_SIZE: "half"
DISK_SIZE: "max"
CPU_CORES: "max"
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 533b39e..10cf271 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -4,16 +4,16 @@
"containerEnv": {
"VERSION": "11"
},
- "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
- "onAutoForward": "openBrowser"
+ "onAutoForward": "notify"
}
},
"otherPortsAttributes": {
"onAutoForward": "ignore"
- },
+ },
"dockerComposeFile": "codespaces.yml",
+ "workspaceFolder": "/workspaces/windows",
"initializeCommand": "docker system prune --all --force"
}
From 4e0a29605befce06cef110ae41141f2506f5d3c5 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sun, 19 Oct 2025 11:08:57 +0200
Subject: [PATCH 326/342] feat: Display extraction progress (#1511)
---
src/install.sh | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/install.sh b/src/install.sh
index 50cf7ea..a9cbb2f 100644
--- a/src/install.sh
+++ b/src/install.sh
@@ -460,11 +460,15 @@ extractImage() {
fi
rm -rf "$dir"
+ /run/progress.sh "$dir" "$size" "$msg ([P])..." &
if ! 7z x "$iso" -o"$dir" > /dev/null; then
+ fKill "progress.sh"
error "Failed to extract ISO file: $iso" && return 1
fi
+ fKill "progress.sh"
+
if [[ "${UNPACK:-}" != [Yy1]* ]]; then
LABEL=$(isoinfo -d -i "$iso" | sed -n 's/Volume id: //p')
@@ -1095,6 +1099,8 @@ buildImage() {
error "Not enough free space in $STORAGE, have $space_gb available but need at least $size_gb." && return 1
fi
+ /run/progress.sh "$out" "$size" "$msg ([P])..." &
+
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}" \
@@ -1115,6 +1121,8 @@ buildImage() {
fi
+ fKill "progress.sh"
+
if [ -n "$failed" ]; then
[ -s "$log" ] && echo "$(<"$log")"
error "Failed to build image!" && return 1
From 0caa4d76b8784a2b15fd9ffffed21f030779c55d Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sun, 19 Oct 2025 12:49:32 +0200
Subject: [PATCH 327/342] feat: Improve Github Codespaces configuration (#1512)
---
.devcontainer/010 - Windows 11 Enterprise/devcontainer.json | 3 ++-
.devcontainer/020 - Windows 11 LTSC/devcontainer.json | 3 ++-
.devcontainer/030 - Windows 10 Pro/devcontainer.json | 3 ++-
.devcontainer/040 - Windows 10 Enterprise/devcontainer.json | 3 ++-
.devcontainer/050 - Windows 10 LTSC/devcontainer.json | 3 ++-
.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json | 3 ++-
.devcontainer/070 - Windows 7 Ultimate/devcontainer.json | 3 ++-
.devcontainer/080 - Windows Vista Ultimate/devcontainer.json | 3 ++-
.devcontainer/090 - Windows XP Professional/devcontainer.json | 3 ++-
.../100 - Windows 2000 Professional/devcontainer.json | 3 ++-
.devcontainer/110 - Windows Server 2025/devcontainer.json | 3 ++-
.devcontainer/120 - Windows Server 2022/devcontainer.json | 3 ++-
.devcontainer/130 - Windows Server 2019/devcontainer.json | 3 ++-
.devcontainer/140 - Windows Server 2016/devcontainer.json | 3 ++-
.devcontainer/150 - Windows Server 2012 R2/devcontainer.json | 3 ++-
.devcontainer/160 - Windows Server 2008 R2/devcontainer.json | 3 ++-
.devcontainer/170 - Windows Server 2003/devcontainer.json | 3 ++-
.devcontainer/180 - Tiny11/devcontainer.json | 3 ++-
.devcontainer/190 - Tiny11 Core/devcontainer.json | 3 ++-
.devcontainer/200 - Tiny11 Nano/devcontainer.json | 3 ++-
.devcontainer/210 - Tiny10/devcontainer.json | 3 ++-
.devcontainer/devcontainer.json | 1 +
22 files changed, 43 insertions(+), 21 deletions(-)
diff --git a/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json b/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
index a5ddea1..cc0e5ae 100644
--- a/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
+++ b/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "11e"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/020 - Windows 11 LTSC/devcontainer.json b/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
index eef73ca..23e54ff 100644
--- a/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
+++ b/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "11l"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/030 - Windows 10 Pro/devcontainer.json b/.devcontainer/030 - Windows 10 Pro/devcontainer.json
index 4a37735..c5a647b 100644
--- a/.devcontainer/030 - Windows 10 Pro/devcontainer.json
+++ b/.devcontainer/030 - Windows 10 Pro/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "10"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json b/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
index 14f1ce6..1466e11 100644
--- a/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
+++ b/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "10e"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/050 - Windows 10 LTSC/devcontainer.json b/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
index d5755e9..dfc8f5c 100644
--- a/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
+++ b/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "10l"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json b/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
index ec1ed4d..e58f7ad 100644
--- a/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
+++ b/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "8e"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json b/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
index 0ad77d6..85878f0 100644
--- a/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
+++ b/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "7u"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json b/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
index e8514f8..b99c942 100644
--- a/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
+++ b/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "vu"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/090 - Windows XP Professional/devcontainer.json b/.devcontainer/090 - Windows XP Professional/devcontainer.json
index 43322dc..a2c51c4 100644
--- a/.devcontainer/090 - Windows XP Professional/devcontainer.json
+++ b/.devcontainer/090 - Windows XP Professional/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "xp"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/100 - Windows 2000 Professional/devcontainer.json b/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
index c730760..e5fab13 100644
--- a/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
+++ b/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "2k"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/110 - Windows Server 2025/devcontainer.json b/.devcontainer/110 - Windows Server 2025/devcontainer.json
index 73e5edd..96089cc 100644
--- a/.devcontainer/110 - Windows Server 2025/devcontainer.json
+++ b/.devcontainer/110 - Windows Server 2025/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "2025"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/120 - Windows Server 2022/devcontainer.json b/.devcontainer/120 - Windows Server 2022/devcontainer.json
index 4586bf8..9897a67 100644
--- a/.devcontainer/120 - Windows Server 2022/devcontainer.json
+++ b/.devcontainer/120 - Windows Server 2022/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "2022"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/130 - Windows Server 2019/devcontainer.json b/.devcontainer/130 - Windows Server 2019/devcontainer.json
index 9bc29ff..9903599 100644
--- a/.devcontainer/130 - Windows Server 2019/devcontainer.json
+++ b/.devcontainer/130 - Windows Server 2019/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "2019"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/140 - Windows Server 2016/devcontainer.json b/.devcontainer/140 - Windows Server 2016/devcontainer.json
index 94629c4..614b171 100644
--- a/.devcontainer/140 - Windows Server 2016/devcontainer.json
+++ b/.devcontainer/140 - Windows Server 2016/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "2016"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json b/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
index bd12659..158036c 100644
--- a/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
+++ b/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "2012"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json b/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
index 0af33f4..5dc1af6 100644
--- a/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
+++ b/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "2008"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/170 - Windows Server 2003/devcontainer.json b/.devcontainer/170 - Windows Server 2003/devcontainer.json
index f02be87..c47effb 100644
--- a/.devcontainer/170 - Windows Server 2003/devcontainer.json
+++ b/.devcontainer/170 - Windows Server 2003/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "2003"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/180 - Tiny11/devcontainer.json b/.devcontainer/180 - Tiny11/devcontainer.json
index 1224be1..225a746 100644
--- a/.devcontainer/180 - Tiny11/devcontainer.json
+++ b/.devcontainer/180 - Tiny11/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "tiny11"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/190 - Tiny11 Core/devcontainer.json b/.devcontainer/190 - Tiny11 Core/devcontainer.json
index f928c24..78da098 100644
--- a/.devcontainer/190 - Tiny11 Core/devcontainer.json
+++ b/.devcontainer/190 - Tiny11 Core/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "core11"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/200 - Tiny11 Nano/devcontainer.json b/.devcontainer/200 - Tiny11 Nano/devcontainer.json
index e7afeae..c7fdca9 100644
--- a/.devcontainer/200 - Tiny11 Nano/devcontainer.json
+++ b/.devcontainer/200 - Tiny11 Nano/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "nano11"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/210 - Tiny10/devcontainer.json b/.devcontainer/210 - Tiny10/devcontainer.json
index 4f39fe0..3df1b88 100644
--- a/.devcontainer/210 - Tiny10/devcontainer.json
+++ b/.devcontainer/210 - Tiny10/devcontainer.json
@@ -3,7 +3,8 @@
"service": "windows",
"containerEnv": {
"VERSION": "tiny10"
- },
+ },
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 10cf271..d7c98a8 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -4,6 +4,7 @@
"containerEnv": {
"VERSION": "11"
},
+ "forwardPorts": [8006],
"portsAttributes": {
"8006": {
"label": "Web",
From 54767605515a040d106d7f4eea83b78a3a9a9bbe Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sun, 19 Oct 2025 13:16:22 +0200
Subject: [PATCH 328/342] feat: Update Tiny11 version to 25H2 (#1513)
---
src/define.sh | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/define.sh b/src/define.sh
index 9198389..3db2069 100644
--- a/src/define.sh
+++ b/src/define.sh
@@ -1108,14 +1108,14 @@ getLink4() {
url="nano11_25h2/nano11%2025h2.iso"
;;
"core11" )
- size=2159738880
- sum="78f0f44444ff95b97125b43e560a72e0d6ce0a665cf9f5573bf268191e5510c1"
- url="tiny-11-core-x-64-beta-1/tiny11%20core%20x64%20beta%201.iso"
+ size=3176654848
+ sum="29c055fcfb7b089abd9e007e7abe4bb82c70a03aac9d65e56a38b87ab32d04d2"
+ url="tiny11_25H2/tiny11core_25H2_Oct25.iso"
;;
"tiny11" )
- size=3788177408
- sum="a028800a91addc35d8ae22dce7459b67330f7d69d2f11c70f53c0fdffa5b4280"
- url="tiny11-2311/tiny11%202311%20x64.iso"
+ size=5514559488
+ sum="92484f2b7f707e42383294402a9eabbadeaa5ede80ac633390ae7f3537e36275"
+ url="tiny11_25H2/tiny11_25H2_Oct25.iso"
;;
"tiny10" )
size=3839819776
@@ -1123,9 +1123,9 @@ getLink4() {
url="tiny-10-23-h2/tiny10%20x64%2023h2.iso"
;;
"win11x64" )
- size=5819484160
- sum="b56b911bf18a2ceaeb3904d87e7c770bdf92d3099599d61ac2497b91bf190b11"
- url="windows-11-24h2-x64/Windows%2011%2024H2%20x64.iso"
+ size=7736125440
+ sum="d141f6030fed50f75e2b03e1eb2e53646c4b21e5386047cb860af5223f102a32"
+ url="W11x64_26200.6584/26200.6584.250915-1905.25h2_ge_release_svc_refresh_CLIENT_CONSUMER_x64FRE_en-us.iso"
;;
"win11x64-enterprise" | "win11x64-enterprise-eval" )
size=6209064960
From 0e95680704f32a6f0e8739ae099235d25da11991 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sun, 19 Oct 2025 16:59:48 +0200
Subject: [PATCH 329/342] fix: Kill QEMU after 5 seconds when it hangs (#1515)
---
src/power.sh | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/power.sh b/src/power.sh
index 1c2c223..72b60fd 100644
--- a/src/power.sh
+++ b/src/power.sh
@@ -74,6 +74,7 @@ ready() {
finish() {
local pid
+ local cnt=0
local reason=$1
touch "$QEMU_END"
@@ -85,10 +86,20 @@ finish() {
{ kill -15 "$pid" || true; } 2>/dev/null
while isAlive "$pid"; do
+
sleep 1
+ cnt=$((cnt+1))
+
# Workaround for zombie pid
[ ! -s "$QEMU_PID" ] && break
+
+ if [ "$cnt" == "5" ]; then
+ error "QEMU did not terminate itself, forcefully killing process..."
+ { kill -9 "$pid" || true; } 2>/dev/null
+ fi
+
done
+
fi
if [ ! -f "$STORAGE/windows.boot" ] && [ -f "$BOOT" ]; then
From ac106067bd3dcc79d1534df9b966d0ef6e7dd39d Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sun, 19 Oct 2025 17:47:44 +0200
Subject: [PATCH 330/342] feat: Display ESD processing progress (#1514)
---
src/install.sh | 90 ++++++++++++++++++++++++++++++++++++--------------
1 file changed, 66 insertions(+), 24 deletions(-)
diff --git a/src/install.sh b/src/install.sh
index a9cbb2f..f9bd402 100644
--- a/src/install.sh
+++ b/src/install.sh
@@ -339,10 +339,12 @@ extractESD() {
local dir="$2"
local version="$3"
local desc="$4"
- local size size_gb space space_gb desc
+ local size size_gb sizes space space_gb
+ local desc total total1 total2 total3 total4
+ local imageIndex links links1 links2 links3 links4
- local msg="Extracting $desc bootdisk..."
- info "$msg" && html "$msg"
+ local msg="Extracting $desc bootdisk"
+ info "$msg..." && html "$msg..."
if [ "$(stat -c%s "$iso")" -lt 100000000 ]; then
error "Invalid ESD file: Size is smaller than 100 MB" && return 1
@@ -351,7 +353,7 @@ extractESD() {
rm -rf "$dir"
mkdir -p "$dir"
- size=16106127360
+ size=9606127360
size_gb=$(formatBytes "$size")
space=$(df --output=avail -B 1 "$dir" | tail -n 1)
space_gb=$(formatBytes "$space")
@@ -367,40 +369,68 @@ extractESD() {
error "Cannot read the image count in ESD file!" && return 1
fi
- wimlib-imagex apply "$iso" 1 "$dir" --quiet 2>/dev/null || {
+ sizes=$(wimlib-imagex info "$iso" | grep "Total Bytes:")
+ links=$(wimlib-imagex info "$iso" | grep "Hard Link Bytes:")
+
+ total1=$(awk "NR==1{ print; }" <<< "$sizes" | cut -d':' -f2 | sed 's/^ *//')
+ links1=$(awk "NR==1{ print; }" <<< "$links" | cut -d':' -f2 | sed 's/^ *//')
+ total=$(( total1 - links1 ))
+
+ total3=$(awk "NR==3{ print; }" <<< "$sizes" | cut -d':' -f2 | sed 's/^ *//')
+ links3=$(awk "NR==3{ print; }" <<< "$links" | cut -d':' -f2 | sed 's/^ *//')
+ total3=$(( total3 - links3 ))
+ total3=$(( total3 + 60000000 ))
+
+ /run/progress.sh "$dir" "$total" "$msg ([P])..." &
+
+ imageIndex="1"
+ wimlib-imagex apply "$iso" "$imageIndex" "$dir" --quiet 2>/dev/null || {
retVal=$?
- error "Extracting $desc bootdisk failed" && return $retVal
+ fKill "progress.sh"
+ error "Extracting $desc bootdisk failed ($retVal)" && return 1
}
+ fKill "progress.sh"
+
local bootWimFile="$dir/sources/boot.wim"
local installWimFile="$dir/sources/install.wim"
- local msg="Extracting $desc environment..."
- info "$msg" && html "$msg"
+ local msg="Extracting $desc environment"
+ info "$msg..." && html "$msg..."
- wimlib-imagex export "$iso" 2 "$bootWimFile" --compress=none --quiet || {
+ imageIndex="2"
+ /run/progress.sh "$bootWimFile" "$total3" "$msg ([P])..." &
+
+ wimlib-imagex export "$iso" "$imageIndex" "$bootWimFile" --compress=none --quiet || {
retVal=$?
- error "Adding WinPE failed" && return ${retVal}
+ fKill "progress.sh"
+ error "Adding WinPE failed ($retVal)" && return 1
}
- local msg="Extracting $desc setup..."
- info "$msg" && html "$msg"
+ local msg="Extracting $desc setup"
+ info "$msg..."
- wimlib-imagex export "$iso" 3 "$bootWimFile" --compress=none --boot --quiet || {
+ imageIndex="3"
+ /run/progress.sh "$bootWimFile" "$total3" "$msg ([P])..." &
+
+ wimlib-imagex export "$iso" "$imageIndex" "$bootWimFile" --compress=none --boot --quiet || {
retVal=$?
- error "Adding Windows Setup failed" && return ${retVal}
+ fKill "progress.sh"
+ error "Adding Windows Setup failed ($retVal)" && return 1
}
+ fKill "progress.sh"
+
if [[ "${PLATFORM,,}" == "x64" ]]; then
LABEL="CCCOMA_X64FRE_EN-US_DV9"
else
LABEL="CPBA_A64FRE_EN-US_DV9"
fi
- local msg="Extracting $desc image..."
- info "$msg" && html "$msg"
+ local msg="Extracting $desc image"
+ info "$msg..." && html "$msg..."
- local edition imageIndex imageEdition
+ local edition imageEdition
edition=$(getCatalog "$version" "name")
if [ -z "$edition" ]; then
@@ -408,15 +438,27 @@ extractESD() {
fi
for (( imageIndex=4; imageIndex<=esdImageCount; imageIndex++ )); do
- imageEdition=$(wimlib-imagex info "$iso" ${imageIndex} | grep '^Description:' | sed 's/Description:[ \t]*//')
+
+ imageEdition=$(wimlib-imagex info "$iso" "$imageIndex" | grep '^Description:' | sed 's/Description:[ \t]*//')
[[ "${imageEdition,,}" != "${edition,,}" ]] && continue
- wimlib-imagex export "$iso" ${imageIndex} "$installWimFile" --compress=LZMS --chunk-size 128K --quiet || {
+
+ total4=$(du -sb "$iso" | cut -f1)
+ total4=$(( total4 + 3000000 ))
+
+ /run/progress.sh "$installWimFile" "$total4" "$msg ([P])..." &
+
+ wimlib-imagex export "$iso" "$imageIndex" "$installWimFile" --compress=LZMS --chunk-size 128K --quiet || {
retVal=$?
- error "Addition of $imageIndex to the $desc image failed" && return $retVal
+ fKill "progress.sh"
+ error "Addition of $imageIndex to the $desc image failed ($retVal)" && return 1
}
+
+ fKill "progress.sh"
return 0
+
done
+ fKill "progress.sh"
error "Failed to find product '$edition' in install.wim!" && return 1
}
@@ -440,8 +482,8 @@ extractImage() {
return 1
fi
- local msg="Extracting $desc image..."
- info "$msg" && html "$msg"
+ local msg="Extracting $desc image"
+ info "$msg..." && html "$msg..."
rm -rf "$dir"
mkdir -p "$dir"
@@ -1081,8 +1123,8 @@ buildImage() {
desc=$(printVersion "$DETECTED" "ISO")
- local msg="Building $desc image..."
- info "$msg" && html "$msg"
+ local msg="Building $desc image"
+ info "$msg..." && html "$msg..."
[ -z "$LABEL" ] && LABEL="Windows"
From 4cb7e1074f2e5453b46b73f2a88ca5b142eeec40 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sun, 19 Oct 2025 17:57:18 +0200
Subject: [PATCH 331/342] fix: Kill QEMU after 5 seconds if it hangs (#1516)
---
src/power.sh | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/power.sh b/src/power.sh
index 72b60fd..8acb57b 100644
--- a/src/power.sh
+++ b/src/power.sh
@@ -82,22 +82,22 @@ finish() {
if [ -s "$QEMU_PID" ]; then
pid=$(<"$QEMU_PID")
- error "Forcefully terminating Windows, reason: $reason..."
+ echo && error "Forcefully terminating Windows, reason: $reason..."
{ kill -15 "$pid" || true; } 2>/dev/null
while isAlive "$pid"; do
sleep 1
cnt=$((cnt+1))
-
+
# Workaround for zombie pid
[ ! -s "$QEMU_PID" ] && break
-
+
if [ "$cnt" == "5" ]; then
- error "QEMU did not terminate itself, forcefully killing process..."
+ echo && error "QEMU did not terminate itself, forcefully killing process..."
{ kill -9 "$pid" || true; } 2>/dev/null
fi
-
+
done
fi
From b244fa544fbe3a8ae1af566b8afecbf279ed4497 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Sun, 19 Oct 2025 18:01:17 +0200
Subject: [PATCH 332/342] build: Update QEMU base image to v7.26 (#1517)
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 1f8a231..7fef6a8 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,7 +3,7 @@
ARG VERSION_ARG="latest"
FROM scratch AS build-amd64
-COPY --from=qemux/qemu:7.25 / /
+COPY --from=qemux/qemu:7.26 / /
ARG TARGETARCH
ARG DEBCONF_NOWARNINGS="yes"
From e3cf3ccf3d07ef3dfe90641010b942f2b0b7f95b Mon Sep 17 00:00:00 2001
From: Kroese
Date: Mon, 20 Oct 2025 12:29:03 +0200
Subject: [PATCH 333/342] docs: Update docker run command (#1519)
---
readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/readme.md b/readme.md
index 4256727..adbb6bf 100644
--- a/readme.md
+++ b/readme.md
@@ -53,7 +53,7 @@ services:
##### Via Docker CLI:
```bash
-docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 dockurr/windows
+docker run -it --rm --name windows -e "VERSION=11" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 docker.io/dockurr/windows
```
##### Via Kubernetes:
From 8790b4ec7c1baa03de11336c5716efce2f88eb0e Mon Sep 17 00:00:00 2001
From: Kroese
Date: Mon, 20 Oct 2025 13:59:27 +0200
Subject: [PATCH 334/342] fix: Remove SeaBIOS control characters (#1520)
---
src/entry.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/entry.sh b/src/entry.sh
index 2929503..71e939e 100644
--- a/src/entry.sh
+++ b/src/entry.sh
@@ -39,6 +39,8 @@ terminal
tail -fn +0 "$QEMU_LOG" --pid=$$ 2>/dev/null &
cat "$QEMU_TERM" 2> /dev/null | tee "$QEMU_PTY" | \
sed -u -e 's/\x1B\[[=0-9;]*[a-z]//gi' \
+-e 's/\x1B\x63//g' -e 's/\x1B\[[=?]7l//g' \
+-e '/^$/d' -e 's/\x44\x53\x73//g' \
-e 's/failed to load Boot/skipped Boot/g' \
-e 's/0): Not Found/0)/g' & wait $! || :
From fa606aec5379b97ee9187ef23b27f1c11f006fc9 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Mon, 20 Oct 2025 14:48:46 +0200
Subject: [PATCH 335/342] build: Update wsddn package to v1.22 (#1521)
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 7fef6a8..6dd3afd 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -19,7 +19,7 @@ RUN set -eu && \
cabextract \
libxml2-utils \
libarchive-tools && \
- wget "https://github.com/gershnik/wsdd-native/releases/download/v1.21/wsddn_1.21_${TARGETARCH}.deb" -O /tmp/wsddn.deb -q && \
+ wget "https://github.com/gershnik/wsdd-native/releases/download/v1.22/wsddn_1.22_${TARGETARCH}.deb" -O /tmp/wsddn.deb -q && \
dpkg -i /tmp/wsddn.deb && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
From 9236127a865707de886c878aeb7f13fa204f21cb Mon Sep 17 00:00:00 2001
From: Kroese
Date: Mon, 20 Oct 2025 14:50:37 +0200
Subject: [PATCH 336/342] fix: Add SELinux warning for shared folder (#1522)
---
src/samba.sh | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)
diff --git a/src/samba.sh b/src/samba.sh
index d70cb1a..45228f9 100644
--- a/src/samba.sh
+++ b/src/samba.sh
@@ -46,10 +46,14 @@ addShare() {
local cfg="$5"
local owner=""
- mkdir -p "$dir" || return 1
+ if ! mkdir -p "$dir"; then
+ error "Failed to create directory $dir." && return 1
+ fi
if ! ls -A "$dir" >/dev/null 2>&1; then
- error "Failed to access directory $dir" && return 1
+ msg="Failed to access directory $dir."
+ msg+=" If SELinux is active, you need to add the \":Z\" flag to the bind mount."
+ error "$msg" && return 1
fi
if [ -z "$(ls -A "$dir")" ]; then
@@ -136,26 +140,21 @@ share="/shared"
[ ! -d "$share" ] && [ -d "$STORAGE/data" ] && share="$STORAGE/data"
[ ! -d "$share" ] && share="$tmp"
-m1="Failed to add shared folder"
-m2="Please check its permissions."
-
-if ! addShare "$share" "/shared" "Data" "Shared" "$SAMBA_CONFIG"; then
- error "$m1 '$share'. $m2" && return 0
-fi
+! addShare "$share" "/shared" "Data" "Shared" "$SAMBA_CONFIG" && return 0
if [ -d "/shared2" ]; then
- addShare "/shared2" "/shared2" "Data2" "Shared" "$SAMBA_CONFIG" || error "$m1 '/shared2'. $m2"
+ addShare "/shared2" "/shared2" "Data2" "Shared" "$SAMBA_CONFIG" || :
else
if [ -d "/data2" ]; then
- addShare "/data2" "/shared2" "Data2" "Shared" "$SAMBA_CONFIG" || error "$m1 '/data2'. $m2."
+ addShare "/data2" "/shared2" "Data2" "Shared" "$SAMBA_CONFIG" || :
fi
fi
if [ -d "/shared3" ]; then
- addShare "/shared3" "/shared3" "Data3" "Shared" "$SAMBA_CONFIG" || error "$m1 '/shared3'. $m2"
+ addShare "/shared3" "/shared3" "Data3" "Shared" "$SAMBA_CONFIG" || :
else
if [ -d "/data3" ]; then
- addShare "/data3" "/shared3" "Data3" "Shared" "$SAMBA_CONFIG" || error "$m1 '/data3'. $m2"
+ addShare "/data3" "/shared3" "Data3" "Shared" "$SAMBA_CONFIG" || :
fi
fi
From a0bcd719bed4b71228213a00d7b8690e3b44bbd4 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Tue, 21 Oct 2025 22:46:06 +0200
Subject: [PATCH 337/342] build: Add review workflow for shell formatting
(#1527)
---
.github/workflows/review.yml | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 .github/workflows/review.yml
diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml
new file mode 100644
index 0000000..e18ca8c
--- /dev/null
+++ b/.github/workflows/review.yml
@@ -0,0 +1,19 @@
+on:
+ pull_request:
+
+name: "Review"
+
+jobs:
+ review:
+ name: review
+ runs-on: ubuntu-latest
+ steps:
+ -
+ name: Checkout
+ uses: actions/checkout@v5
+ -
+ name: Review
+ uses: reviewdog/action-shfmt@v1
+ with:
+ shfmt_flags: "-i 2 -ci -bn"
+ github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
From f661df3abc0b6bebe97f03919336f1763109308a Mon Sep 17 00:00:00 2001
From: Kroese
Date: Tue, 21 Oct 2025 23:19:54 +0200
Subject: [PATCH 338/342] build: Update QEMU base image to v7.27 (#1528)
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 6dd3afd..bf6dab2 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,7 +3,7 @@
ARG VERSION_ARG="latest"
FROM scratch AS build-amd64
-COPY --from=qemux/qemu:7.26 / /
+COPY --from=qemux/qemu:7.27 / /
ARG TARGETARCH
ARG DEBCONF_NOWARNINGS="yes"
From c1c44c4da760d8e9c686db90c6841f9da7b3c4fd Mon Sep 17 00:00:00 2001
From: Kroese
Date: Wed, 22 Oct 2025 01:23:25 +0200
Subject: [PATCH 339/342] build: Add code quality checks (#1529)
---
.github/workflows/review.yml | 49 +++++++++++++++++++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml
index e18ca8c..51f8503 100644
--- a/.github/workflows/review.yml
+++ b/.github/workflows/review.yml
@@ -3,6 +3,11 @@ on:
name: "Review"
+permissions:
+ contents: read
+ pull-requests: write
+ checks: write
+
jobs:
review:
name: review
@@ -12,8 +17,50 @@ jobs:
name: Checkout
uses: actions/checkout@v5
-
- name: Review
+ name: Spelling
+ uses: reviewdog/action-misspell@v1
+ with:
+ locale: "US"
+ level: warning
+ pattern: |
+ *.md
+ *.sh
+ reporter: github-pr-review
+ github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
+ -
+ name: Hadolint
+ uses: reviewdog/action-hadolint@v1
+ with:
+ level: warning
+ reporter: github-pr-review
+ hadolint_ignore: DL3006 DL3008
+ github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
+ -
+ name: YamlLint
+ uses: reviewdog/action-yamllint@v1
+ with:
+ level: warning
+ reporter: github-pr-review
+ github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
+ -
+ name: ActionLint
+ uses: reviewdog/action-actionlint@v1
+ with:
+ level: warning
+ reporter: github-pr-review
+ github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
+ -
+ name: Shellformat
uses: reviewdog/action-shfmt@v1
with:
+ level: warning
shfmt_flags: "-i 2 -ci -bn"
github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
+ -
+ name: Shellcheck
+ uses: reviewdog/action-shellcheck@v1
+ with:
+ level: warning
+ reporter: github-pr-review
+ shellcheck_flags: -x -e SC1091 -e SC2001 -e SC2002 -e SC2034 -e SC2064 -e SC2153 -e SC2317 -e SC2028
+ github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
From 122d1ff98ed91a0813c8b31637289f7f5e89d05d Mon Sep 17 00:00:00 2001
From: Kroese
Date: Wed, 22 Oct 2025 10:06:26 +0200
Subject: [PATCH 340/342] fix: Inherit owner from parent folder (#1526)
---
src/install.sh | 84 ++++++++++++++++++++++++++++++++++++++++----------
src/mido.sh | 5 ++-
src/power.sh | 4 ++-
3 files changed, 74 insertions(+), 19 deletions(-)
diff --git a/src/install.sh b/src/install.sh
index f9bd402..89d1795 100644
--- a/src/install.sh
+++ b/src/install.sh
@@ -22,7 +22,11 @@ backup () {
fi
- mkdir -p "$root"
+ if ! makeDir "$root"; then
+ error "Failed to create directory \"$root\" !"
+ return 1
+ fi
+
local folder="$name"
local dir="$root/$folder"
@@ -34,7 +38,11 @@ backup () {
done
rm -rf "$dir"
- mkdir -p "$dir"
+
+ if ! makeDir "$dir"; then
+ error "Failed to create directory \"$dir\" !"
+ return 1
+ fi
[ -f "$iso" ] && mv -f "$iso" "$dir/"
find "$STORAGE" -maxdepth 1 -type f -iname 'data.*' -not -iname '*.iso' -exec mv -n {} "$dir/" \;
@@ -156,7 +164,9 @@ startInstall() {
! backup "" && error "Backup failed!"
fi
- mkdir -p "$TMP"
+ if ! makeDir "$TMP"; then
+ error "Failed to create directory \"$TMP\" !"
+ fi
if [ -z "$CUSTOM" ]; then
@@ -178,6 +188,20 @@ startInstall() {
return 0
}
+writeFile() {
+
+ local txt="$1"
+ local path="$2"
+
+ echo "$txt" >"$path"
+
+ if ! setOwner "$path"; then
+ error "Failed to set the owner for \"$path\" !"
+ fi
+
+ return 0
+}
+
finishInstall() {
local iso="$1"
@@ -188,6 +212,10 @@ finishInstall() {
error "Failed to find ISO file: $iso" && return 1
fi
+ if [[ "$iso" == "$STORAGE/"* ]]; then
+ ! setOwner "$iso" && error "Failed to set the owner for \"$iso\" !"
+ fi
+
if [[ "$aborted" != [Yy1]* ]]; then
# Mark ISO as prepared via magic byte
byte="16" && [[ "$MANUAL" == [Yy1]* ]] && byte="17"
@@ -196,56 +224,68 @@ finishInstall() {
fi
fi
- cp -f /run/version "$STORAGE/windows.ver"
+ local file="$STORAGE/windows.ver"
+ cp -f /run/version "$file"
+ ! setOwner "$file" && error "Failed to set the owner for \"$file\" !"
if [[ "$iso" == "$STORAGE/"* ]]; then
if [[ "$aborted" != [Yy1]* ]] || [ -z "$CUSTOM" ]; then
base=$(basename "$iso")
- echo "$base" > "$STORAGE/windows.base"
+ file="$STORAGE/windows.base"
+ writeFile "$base" "$file"
fi
fi
if [[ "${PLATFORM,,}" == "x64" ]]; then
if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then
- echo "$BOOT_MODE" > "$STORAGE/windows.mode"
+ file="$STORAGE/windows.mode"
+ writeFile "$BOOT_MODE" "$file"
if [[ "${MACHINE,,}" != "q35" ]]; then
- echo "$MACHINE" > "$STORAGE/windows.old"
+ file="$STORAGE/windows.old"
+ writeFile "$MACHINE" "$file"
fi
else
# Enable secure boot + TPM on manual installs as Win11 requires
if [[ "$MANUAL" == [Yy1]* || "$aborted" == [Yy1]* ]]; then
if [[ "${DETECTED,,}" == "win11"* ]]; then
BOOT_MODE="windows_secure"
- echo "$BOOT_MODE" > "$STORAGE/windows.mode"
+ file="$STORAGE/windows.mode"
+ writeFile "$BOOT_MODE" "$file"
fi
fi
# Enable secure boot on multi-socket systems to workaround freeze
if [ -n "$SOCKETS" ] && [[ "$SOCKETS" != "1" ]]; then
BOOT_MODE="windows_secure"
- echo "$BOOT_MODE" > "$STORAGE/windows.mode"
+ file="$STORAGE/windows.mode"
+ writeFile "$BOOT_MODE" "$file"
fi
fi
fi
if [ -n "${ARGS:-}" ]; then
ARGUMENTS="$ARGS ${ARGUMENTS:-}"
- echo "$ARGS" > "$STORAGE/windows.args"
+ file="$STORAGE/windows.args"
+ writeFile "$ARGS" "$file"
fi
if [ -n "${VGA:-}" ] && [[ "${VGA:-}" != "virtio"* ]]; then
- echo "$VGA" > "$STORAGE/windows.vga"
+ file="$STORAGE/windows.vga"
+ writeFile "$VGA" "$file"
fi
if [ -n "${USB:-}" ] && [[ "${USB:-}" != "qemu-xhci"* ]]; then
- echo "$USB" > "$STORAGE/windows.usb"
+ file="$STORAGE/windows.usb"
+ writeFile "$USB" "$file"
fi
if [ -n "${DISK_TYPE:-}" ] && [[ "${DISK_TYPE:-}" != "scsi" ]]; then
- echo "$DISK_TYPE" > "$STORAGE/windows.type"
+ file="$STORAGE/windows.type"
+ writeFile "$DISK_TYPE" "$file"
fi
if [ -n "${ADAPTER:-}" ] && [[ "${ADAPTER:-}" != "virtio-net-pci" ]]; then
- echo "$ADAPTER" > "$STORAGE/windows.net"
+ file="$STORAGE/windows.net"
+ writeFile "$ADAPTER" "$file"
fi
rm -rf "$TMP"
@@ -351,7 +391,10 @@ extractESD() {
fi
rm -rf "$dir"
- mkdir -p "$dir"
+
+ if ! makeDir "$dir"; then
+ error "Failed to create directory \"$dir\" !" && return 1
+ fi
size=9606127360
size_gb=$(formatBytes "$size")
@@ -407,6 +450,8 @@ extractESD() {
error "Adding WinPE failed ($retVal)" && return 1
}
+ fKill "progress.sh"
+
local msg="Extracting $desc setup"
info "$msg..."
@@ -486,14 +531,17 @@ extractImage() {
info "$msg..." && html "$msg..."
rm -rf "$dir"
- mkdir -p "$dir"
+
+ if ! makeDir "$dir"; then
+ error "Failed to create directory \"$dir\" !" && return 1
+ fi
size=$(stat -c%s "$iso")
size_gb=$(formatBytes "$size")
space=$(df --output=avail -B 1 "$dir" | tail -n 1)
space_gb=$(formatBytes "$space")
- if ((size<100000000)); then
+ if (( size < 100000000 )); then
error "Invalid ISO file: Size is smaller than 100 MB" && return 1
fi
@@ -1177,6 +1225,8 @@ buildImage() {
[[ "$error" != "$hide" ]] && echo "$error"
mv -f "$out" "$BOOT" || return 1
+ ! setOwner "$BOOT" && error "Failed to set the owner for \"$BOOT\" !"
+
return 0
}
diff --git a/src/mido.sh b/src/mido.sh
index cc5b251..369fc17 100644
--- a/src/mido.sh
+++ b/src/mido.sh
@@ -487,8 +487,11 @@ getESD() {
info "$msg" && html "$msg"
rm -rf "$dir"
- mkdir -p "$dir"
+ if ! makeDir "$dir"; then
+ error "Failed to create directory \"$dir\" !" && return 1
+ fi
+
local xFile="products.xml"
local eFile="esd_edition.xml"
local fFile="products_filter.xml"
diff --git a/src/power.sh b/src/power.sh
index 8acb57b..98a6f73 100644
--- a/src/power.sh
+++ b/src/power.sh
@@ -105,7 +105,9 @@ finish() {
if [ ! -f "$STORAGE/windows.boot" ] && [ -f "$BOOT" ]; then
# Remove CD-ROM ISO after install
if ready; then
- touch "$STORAGE/windows.boot"
+ local file="$STORAGE/windows.boot"
+ touch "$file"
+ ! setOwner "$file" && error "Failed to set the owner for \"$file\" !"
if [[ "$REMOVE" != [Nn]* ]]; then
rm -f "$BOOT" 2>/dev/null || true
fi
From 544501107af0d4c4ede89ffb2e108ccbfd5f8028 Mon Sep 17 00:00:00 2001
From: Kroese
Date: Wed, 22 Oct 2025 12:19:39 +0200
Subject: [PATCH 341/342] feat: Check if shared folder is writeable (#1531)
---
src/samba.sh | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/samba.sh b/src/samba.sh
index 45228f9..7cd3210 100644
--- a/src/samba.sh
+++ b/src/samba.sh
@@ -46,16 +46,23 @@ addShare() {
local cfg="$5"
local owner=""
- if ! mkdir -p "$dir"; then
- error "Failed to create directory $dir." && return 1
+ if [ ! -d "$dir" ]; then
+ if ! mkdir -p "$dir"; then
+ error "Failed to create shared folder ($dir)." && return 1
+ fi
fi
if ! ls -A "$dir" >/dev/null 2>&1; then
- msg="Failed to access directory $dir."
+ msg="No permission to access shared folder ($dir)."
msg+=" If SELinux is active, you need to add the \":Z\" flag to the bind mount."
error "$msg" && return 1
fi
+ if [ ! -w "$dir" ]; then
+ msg="shared folder ($dir) is not writeable!"
+ warn "$msg"
+ fi
+
if [ -z "$(ls -A "$dir")" ]; then
if ! chmod 2777 "$dir"; then
error "Failed to set permissions for directory $dir" && return 1
From 11a19f6a9d88857be72ccf0fa6215daeef5c4f4f Mon Sep 17 00:00:00 2001
From: Kroese
Date: Fri, 24 Oct 2025 04:33:47 +0200
Subject: [PATCH 342/342] fix: Remove unnecessary operation (#1534)
---
src/install.sh | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/install.sh b/src/install.sh
index 89d1795..7be2996 100644
--- a/src/install.sh
+++ b/src/install.sh
@@ -135,7 +135,6 @@ startInstall() {
if [[ "${VERSION,,}" == "http"* ]]; then
file=$(basename "${VERSION%%\?*}")
- file="${file//+/ }"
printf -v file '%b' "${file//%/\\x}"
file="${file//[!A-Za-z0-9._-]/_}"