mirror of
https://github.com/dockur/windows.git
synced 2026-01-22 19:03:04 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9e3ffa413 | ||
|
|
77a8e4d26e | ||
|
|
9fd266a09d | ||
|
|
d570eca629 | ||
|
|
7b31f538ba | ||
|
|
6bf854fc12 | ||
|
|
6f604dca8e | ||
|
|
663a6b5da0 | ||
|
|
839900f495 | ||
|
|
e2be4f6d0c | ||
|
|
5d734616aa | ||
|
|
972240061e | ||
|
|
0c8943f541 |
@@ -1,7 +1,7 @@
|
|||||||
ARG VERSION_ARG="latest"
|
ARG VERSION_ARG="latest"
|
||||||
FROM scratch AS build-amd64
|
FROM scratch AS build-amd64
|
||||||
|
|
||||||
COPY --from=qemux/qemu:7.02 / /
|
COPY --from=qemux/qemu:7.05 / /
|
||||||
|
|
||||||
ARG DEBCONF_NOWARNINGS="yes"
|
ARG DEBCONF_NOWARNINGS="yes"
|
||||||
ARG DEBIAN_FRONTEND="noninteractive"
|
ARG DEBIAN_FRONTEND="noninteractive"
|
||||||
|
|||||||
@@ -159,6 +159,11 @@
|
|||||||
<Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path>
|
<Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path>
|
||||||
<Description>Set Network Location to Home</Description>
|
<Description>Set Network Location to Home</Description>
|
||||||
</RunSynchronousCommand>
|
</RunSynchronousCommand>
|
||||||
|
<RunSynchronousCommand wcm:action="add">
|
||||||
|
<Order>2</Order>
|
||||||
|
<Path>dism.exe /online /Disable-Feature /FeatureName:Microsoft-Hyper-V /NoRestart</Path>
|
||||||
|
<Description>Disable Hyper-V role</Description>
|
||||||
|
</RunSynchronousCommand>
|
||||||
</RunSynchronous>
|
</RunSynchronous>
|
||||||
</component>
|
</component>
|
||||||
<component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
|
<component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
|
||||||
|
|||||||
28
readme.md
28
readme.md
@@ -66,17 +66,6 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
|
|||||||
|
|
||||||
[`Click here to launch this container in the cloud!`](https://github.com/codespaces/new?skip_quickstart=true&machine=basicLinux32gb&repo=743140652&ref=master&devcontainer_path=.devcontainer.json)
|
[`Click here to launch this container in the cloud!`](https://github.com/codespaces/new?skip_quickstart=true&machine=basicLinux32gb&repo=743140652&ref=master&devcontainer_path=.devcontainer.json)
|
||||||
|
|
||||||
## Compatibility ⚙️
|
|
||||||
|
|
||||||
| **Product** | **Platform** | |
|
|
||||||
|---|---|---|
|
|
||||||
| Docker Engine | Linux| ✅ |
|
|
||||||
| Docker Desktop | Linux | ❌ |
|
|
||||||
| Docker Desktop | macOS | ❌ |
|
|
||||||
| Docker Desktop | Windows 11 | ✅ |
|
|
||||||
| Docker Desktop | Windows 10 | ❌ |
|
|
||||||
| Github Codespaces | Cloud | ✅ |
|
|
||||||
|
|
||||||
## FAQ 💬
|
## FAQ 💬
|
||||||
|
|
||||||
### How do I use it?
|
### How do I use it?
|
||||||
@@ -374,9 +363,16 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
|
|||||||
|
|
||||||
### How do I verify if my system supports KVM?
|
### How do I verify if my system supports KVM?
|
||||||
|
|
||||||
Only Linux and Windows 11 support KVM virtualization, macOS and Windows 10 do not unfortunately.
|
First check if your software is compatible using this chart:
|
||||||
|
|
||||||
You can run the following commands in Linux to check your system:
|
| **Product** | **Linux** | **Win11** | **Win10** | **macOS** |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Docker CLI | ✅ | ✅ | ❌ | ❌ |
|
||||||
|
| Docker Desktop | ❌ | ✅ | ❌ | ❌ |
|
||||||
|
| Podman CLI | ✅ | ✅ | ❌ | ❌ |
|
||||||
|
| Podman Desktop | ✅ | ✅ | ❌ | ❌ |
|
||||||
|
|
||||||
|
After that you can run the following commands in Linux to check your system:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt install cpu-checker
|
sudo apt install cpu-checker
|
||||||
@@ -391,11 +387,7 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
|
|||||||
|
|
||||||
- you are not using a cloud provider, as most of them do not allow nested virtualization for their VPS's.
|
- you are not using a cloud provider, as most of them do not allow nested virtualization for their VPS's.
|
||||||
|
|
||||||
If you do not receive any error from `kvm-ok` but the container still complains about KVM, please check whether:
|
If you did not receive any error from `kvm-ok` but the container still complains about a missing KVM device, it could help to add `privileged: true` to your compose file (or `sudo` to your `docker` command) to rule out any permission issue.
|
||||||
|
|
||||||
- you are not using "Docker Desktop for Linux" as it does not support KVM, instead make use of Docker Engine directly.
|
|
||||||
|
|
||||||
- it could help to add `privileged: true` to your compose file (or `sudo` to your `docker run` command), to rule out any permission issue.
|
|
||||||
|
|
||||||
### How do I run macOS in a container?
|
### How do I run macOS in a container?
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ set -Eeuo pipefail
|
|||||||
: "${PASSWORD:=""}"
|
: "${PASSWORD:=""}"
|
||||||
|
|
||||||
MIRRORS=3
|
MIRRORS=3
|
||||||
PLATFORM="x64"
|
|
||||||
|
|
||||||
parseVersion() {
|
parseVersion() {
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
|
|
||||||
: "${APP:="Windows"}"
|
: "${APP:="Windows"}"
|
||||||
|
: "${PLATFORM:="x64"}"
|
||||||
: "${BOOT_MODE:="windows"}"
|
: "${BOOT_MODE:="windows"}"
|
||||||
: "${SUPPORT:="https://github.com/dockur/windows"}"
|
: "${SUPPORT:="https://github.com/dockur/windows"}"
|
||||||
|
|
||||||
@@ -32,8 +33,10 @@ info "Booting ${APP}${BOOT_DESC} using QEMU v$version..."
|
|||||||
terminal
|
terminal
|
||||||
( sleep 30; boot ) &
|
( sleep 30; boot ) &
|
||||||
tail -fn +0 "$QEMU_LOG" 2>/dev/null &
|
tail -fn +0 "$QEMU_LOG" 2>/dev/null &
|
||||||
cat "$QEMU_TERM" 2> /dev/null | tee "$QEMU_PTY" &
|
cat "$QEMU_TERM" 2> /dev/null | tee "$QEMU_PTY" | \
|
||||||
wait $! || :
|
sed -u -e 's/\x1B\[[=0-9;]*[a-z]//gi' \
|
||||||
|
-e 's/failed to load Boot/skipped Boot/g' \
|
||||||
|
-e 's/0): Not Found/0)/g' & wait $! || :
|
||||||
|
|
||||||
sleep 1 & wait $!
|
sleep 1 & wait $!
|
||||||
[ ! -f "$QEMU_END" ] && finish 0
|
[ ! -f "$QEMU_END" ] && finish 0
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ skipInstall() {
|
|||||||
|
|
||||||
if [ -f "$previous" ]; then
|
if [ -f "$previous" ]; then
|
||||||
previous=$(<"$previous")
|
previous=$(<"$previous")
|
||||||
|
previous="${previous//[![:print:]]/}"
|
||||||
if [ -n "$previous" ]; then
|
if [ -n "$previous" ]; then
|
||||||
previous="$STORAGE/$previous"
|
previous="$STORAGE/$previous"
|
||||||
if [[ "${previous,,}" != "${iso,,}" ]]; then
|
if [[ "${previous,,}" != "${iso,,}" ]]; then
|
||||||
@@ -581,6 +582,10 @@ detectImage() {
|
|||||||
info "Detected: $desc"
|
info "Detected: $desc"
|
||||||
setXML "" && return 0
|
setXML "" && return 0
|
||||||
|
|
||||||
|
if [[ "$DETECTED" == "win81x86"* ]] || [[ "$DETECTED" == "win10x86"* ]]; then
|
||||||
|
error "The 32-bit version of $desc is not supported!" && return 1
|
||||||
|
fi
|
||||||
|
|
||||||
msg="the answer file for $desc was not found ($DETECTED.xml)"
|
msg="the answer file for $desc was not found ($DETECTED.xml)"
|
||||||
local fallback="/run/assets/${DETECTED%%-*}.xml"
|
local fallback="/run/assets/${DETECTED%%-*}.xml"
|
||||||
|
|
||||||
@@ -726,7 +731,11 @@ addDriver() {
|
|||||||
|
|
||||||
if [ -z "$folder" ]; then
|
if [ -z "$folder" ]; then
|
||||||
desc=$(printVersion "$id" "$id")
|
desc=$(printVersion "$id" "$id")
|
||||||
warn "no \"$driver\" driver available for \"$desc\" !" && return 0
|
if [[ "${id,,}" != *"x86"* ]]; then
|
||||||
|
warn "no \"$driver\" driver available for \"$desc\" !" && return 0
|
||||||
|
else
|
||||||
|
warn "no \"$driver\" driver available for the 32-bit version of \"$desc\" !" && return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ ! -d "$path/$driver/$folder" ] && return 0
|
[ ! -d "$path/$driver/$folder" ] && return 0
|
||||||
@@ -1006,19 +1015,27 @@ bootWindows() {
|
|||||||
|
|
||||||
if [ -f "$STORAGE/windows.args" ]; then
|
if [ -f "$STORAGE/windows.args" ]; then
|
||||||
ARGS=$(<"$STORAGE/windows.args")
|
ARGS=$(<"$STORAGE/windows.args")
|
||||||
|
ARGS="${ARGS//[![:print:]]/}"
|
||||||
ARGUMENTS="$ARGS ${ARGUMENTS:-}"
|
ARGUMENTS="$ARGS ${ARGUMENTS:-}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -s "$STORAGE/windows.type" ] && [ -f "$STORAGE/windows.type" ]; then
|
if [ -s "$STORAGE/windows.type" ] && [ -f "$STORAGE/windows.type" ]; then
|
||||||
[ -z "${DISK_TYPE:-}" ] && DISK_TYPE=$(<"$STORAGE/windows.type")
|
if [ -z "${DISK_TYPE:-}" ]; then
|
||||||
|
DISK_TYPE=$(<"$STORAGE/windows.type")
|
||||||
|
DISK_TYPE="${DISK_TYPE//[![:print:]]/}"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -s "$STORAGE/windows.mode" ] && [ -f "$STORAGE/windows.mode" ]; then
|
if [ -s "$STORAGE/windows.mode" ] && [ -f "$STORAGE/windows.mode" ]; then
|
||||||
BOOT_MODE=$(<"$STORAGE/windows.mode")
|
BOOT_MODE=$(<"$STORAGE/windows.mode")
|
||||||
|
BOOT_MODE="${BOOT_MODE//[![:print:]]/}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -s "$STORAGE/windows.old" ] && [ -f "$STORAGE/windows.old" ]; then
|
if [ -s "$STORAGE/windows.old" ] && [ -f "$STORAGE/windows.old" ]; then
|
||||||
[[ "${PLATFORM,,}" == "x64" ]] && MACHINE=$(<"$STORAGE/windows.old")
|
if [[ "${PLATFORM,,}" == "x64" ]]; then
|
||||||
|
MACHINE=$(<"$STORAGE/windows.old")
|
||||||
|
MACHINE="${MACHINE//[![:print:]]/}"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ download_windows() {
|
|||||||
|
|
||||||
# uuidgen: For MacOS (installed by default) and other systems (e.g. with no /proc) that don't have a kernel interface for generating random UUIDs
|
# uuidgen: For MacOS (installed by default) and other systems (e.g. with no /proc) that don't have a kernel interface for generating random UUIDs
|
||||||
session_id=$(cat /proc/sys/kernel/random/uuid 2> /dev/null || uuidgen --random)
|
session_id=$(cat /proc/sys/kernel/random/uuid 2> /dev/null || uuidgen --random)
|
||||||
|
session_id="${session_id//[![:print:]]/}"
|
||||||
|
|
||||||
# Get product edition ID for latest release of given Windows version
|
# Get product edition ID for latest release of given Windows version
|
||||||
# Product edition ID: This specifies both the Windows release (e.g. 22H2) and edition ("multi-edition" is default, either Home/Pro/Edu/etc., we select "Pro" in the answer files) in one number
|
# Product edition ID: This specifies both the Windows release (e.g. 22H2) and edition ("multi-edition" is default, either Home/Pro/Edu/etc., we select "Pro" in the answer files) in one number
|
||||||
|
|||||||
Reference in New Issue
Block a user