Loading Dockerfile +1 −1 Original line number Diff line number Diff line FROM scratch COPY --from=qemux/qemu-docker:4.25 / / COPY --from=qemux/qemu-docker:4.26 / / ARG DEBCONF_NOWARNINGS "yes" ARG DEBIAN_FRONTEND "noninteractive" Loading readme.md +1 −1 Original line number Diff line number Diff line Loading @@ -164,7 +164,7 @@ docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --cap-add NET_ - /home/user/example.iso:/storage/custom.iso ``` Replace the example path `/home/user/example.iso` with the filename of the desired ISO file. Replace the example path `/home/user/example.iso` with the filename of the desired ISO file. The value of `VERSION` will be ignored in this case. * ### How do I customize the installation? Loading src/install.sh +26 −15 Original line number Diff line number Diff line Loading @@ -275,15 +275,19 @@ finishInstall() { fi fi rm -f "$STORAGE/windows.ver" rm -f "$STORAGE/windows.old" rm -f "$STORAGE/windows.boot" rm -f "$STORAGE/windows.mode" cp /run/version "$STORAGE/windows.ver" if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then if [[ "${MACHINE,,}" != "q35" ]]; then echo "$MACHINE" > "$STORAGE/windows.old" else rm -f "$STORAGE/windows.old" fi echo "$BOOT_MODE" > "$STORAGE/windows.mode" else # Enable secure boot + TPM on manual installs as Win11 requires if [[ "$MANUAL" == [Yy1]* ]] || [[ "$aborted" == [Yy1]* ]]; then if [[ "${DETECTED,,}" == "win11"* ]]; then Loading @@ -291,6 +295,7 @@ finishInstall() { echo "$BOOT_MODE" > "$STORAGE/windows.mode" fi fi fi rm -rf "$TMP" return 0 Loading Loading @@ -1151,16 +1156,22 @@ buildImage() { bootWindows() { if [ -f "$STORAGE/windows.old" ]; then if [ -s "$STORAGE/windows.mode" ] && [ -f "$STORAGE/windows.mode" ]; then BOOT_MODE=$(<"$STORAGE/windows.mode") if [ -s "$STORAGE/windows.old" ] && [ -f "$STORAGE/windows.old" ]; then MACHINE=$(<"$STORAGE/windows.old") [ -z "$MACHINE" ] && MACHINE="q35" BOOT_MODE="windows_legacy" fi rm -rf "$TMP" return 0 fi if [ -s "$STORAGE/windows.mode" ] && [ -f "$STORAGE/windows.mode" ]; then BOOT_MODE=$(<"$STORAGE/windows.mode") # Migrations if [ -f "$STORAGE/windows.old" ]; then MACHINE=$(<"$STORAGE/windows.old") [ -z "$MACHINE" ] && MACHINE="q35" BOOT_MODE="windows_legacy" echo "$BOOT_MODE" > "$STORAGE/windows.mode" rm -rf "$TMP" return 0 fi Loading src/power.sh +1 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ ready() { [ -f "$STORAGE/windows.boot" ] && return 0 [ ! -s "$QEMU_PTY" ] && return 1 if [ -f "$STORAGE/windows.old" ]; then if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then local last local bios="Booting from Hard" last=$(grep "^Booting.*" "$QEMU_PTY" | tail -1) Loading src/samba.sh +18 −14 Original line number Diff line number Diff line Loading @@ -3,22 +3,27 @@ set -Eeuo pipefail : "${SAMBA:="Y"}" [[ "$DHCP" == [Yy1]* ]] && return 0 [[ "$SAMBA" != [Yy1]* ]] && return 0 [[ "$NETWORK" != [Yy1]* ]] && return 0 SHARE="$STORAGE/shared" hostname="host.lan" interface="dockerbridge" if [[ "$DHCP" == [Yy1]* ]]; then hostname="$IP" interface="$VM_NET_DEV" fi mkdir -p "$SHARE" chmod -R 777 "$SHARE" share="$STORAGE/shared" SAMBA="/etc/samba/smb.conf" mkdir -p "$share" [ -z "$(ls -A "$share")" ] && chmod -R 777 "$share" { echo "[global]" echo " server string = Dockur" echo " netbios name = dockur" echo " netbios name = $hostname" echo " workgroup = WORKGROUP" echo " interfaces = dockerbridge" echo " interfaces = $interface" echo " bind interfaces only = yes" echo " security = user" echo " guest account = nobody" Loading @@ -32,14 +37,14 @@ SAMBA="/etc/samba/smb.conf" echo " disable spoolss = yes" echo "" echo "[Data]" echo " path = $SHARE" echo " path = $share" echo " comment = Shared" echo " writable = yes" echo " guest ok = yes" echo " guest only = yes" echo " force user = root" echo " force group = root" } > "$SAMBA" } > "/etc/samba/smb.conf" { echo "--------------------------------------------------------" echo " $APP for Docker v$(</run/version)..." Loading @@ -59,7 +64,7 @@ SAMBA="/etc/samba/smb.conf" echo "" echo "Replace the example path /home/user/example with the desired storage folder." echo "" } | unix2dos > "$SHARE/readme.txt" } | unix2dos > "$share/readme.txt" ! smbd && smbd --debug-stdout Loading @@ -67,17 +72,16 @@ isXP="N" if [ -f "$STORAGE/windows.old" ]; then MT=$(<"$STORAGE/windows.old") if [[ "${MT,,}" == "pc-q35-2"* ]]; then isXP="Y" fi [[ "${MT,,}" == "pc-q35-2"* ]] && isXP="Y" fi if [[ "$isXP" == [Yy1]* ]]; then [[ "$DHCP" == [Yy1]* ]] && return 0 # Enable NetBIOS on Windows XP ! nmbd && nmbd --debug-stdout else # Enable Web Service Discovery wsdd -i dockerbridge -p -n "host.lan" & wsdd -i "$interface" -p -n "$hostname" & fi return 0 Loading
Dockerfile +1 −1 Original line number Diff line number Diff line FROM scratch COPY --from=qemux/qemu-docker:4.25 / / COPY --from=qemux/qemu-docker:4.26 / / ARG DEBCONF_NOWARNINGS "yes" ARG DEBIAN_FRONTEND "noninteractive" Loading
readme.md +1 −1 Original line number Diff line number Diff line Loading @@ -164,7 +164,7 @@ docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --cap-add NET_ - /home/user/example.iso:/storage/custom.iso ``` Replace the example path `/home/user/example.iso` with the filename of the desired ISO file. Replace the example path `/home/user/example.iso` with the filename of the desired ISO file. The value of `VERSION` will be ignored in this case. * ### How do I customize the installation? Loading
src/install.sh +26 −15 Original line number Diff line number Diff line Loading @@ -275,15 +275,19 @@ finishInstall() { fi fi rm -f "$STORAGE/windows.ver" rm -f "$STORAGE/windows.old" rm -f "$STORAGE/windows.boot" rm -f "$STORAGE/windows.mode" cp /run/version "$STORAGE/windows.ver" if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then if [[ "${MACHINE,,}" != "q35" ]]; then echo "$MACHINE" > "$STORAGE/windows.old" else rm -f "$STORAGE/windows.old" fi echo "$BOOT_MODE" > "$STORAGE/windows.mode" else # Enable secure boot + TPM on manual installs as Win11 requires if [[ "$MANUAL" == [Yy1]* ]] || [[ "$aborted" == [Yy1]* ]]; then if [[ "${DETECTED,,}" == "win11"* ]]; then Loading @@ -291,6 +295,7 @@ finishInstall() { echo "$BOOT_MODE" > "$STORAGE/windows.mode" fi fi fi rm -rf "$TMP" return 0 Loading Loading @@ -1151,16 +1156,22 @@ buildImage() { bootWindows() { if [ -f "$STORAGE/windows.old" ]; then if [ -s "$STORAGE/windows.mode" ] && [ -f "$STORAGE/windows.mode" ]; then BOOT_MODE=$(<"$STORAGE/windows.mode") if [ -s "$STORAGE/windows.old" ] && [ -f "$STORAGE/windows.old" ]; then MACHINE=$(<"$STORAGE/windows.old") [ -z "$MACHINE" ] && MACHINE="q35" BOOT_MODE="windows_legacy" fi rm -rf "$TMP" return 0 fi if [ -s "$STORAGE/windows.mode" ] && [ -f "$STORAGE/windows.mode" ]; then BOOT_MODE=$(<"$STORAGE/windows.mode") # Migrations if [ -f "$STORAGE/windows.old" ]; then MACHINE=$(<"$STORAGE/windows.old") [ -z "$MACHINE" ] && MACHINE="q35" BOOT_MODE="windows_legacy" echo "$BOOT_MODE" > "$STORAGE/windows.mode" rm -rf "$TMP" return 0 fi Loading
src/power.sh +1 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ ready() { [ -f "$STORAGE/windows.boot" ] && return 0 [ ! -s "$QEMU_PTY" ] && return 1 if [ -f "$STORAGE/windows.old" ]; then if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then local last local bios="Booting from Hard" last=$(grep "^Booting.*" "$QEMU_PTY" | tail -1) Loading
src/samba.sh +18 −14 Original line number Diff line number Diff line Loading @@ -3,22 +3,27 @@ set -Eeuo pipefail : "${SAMBA:="Y"}" [[ "$DHCP" == [Yy1]* ]] && return 0 [[ "$SAMBA" != [Yy1]* ]] && return 0 [[ "$NETWORK" != [Yy1]* ]] && return 0 SHARE="$STORAGE/shared" hostname="host.lan" interface="dockerbridge" if [[ "$DHCP" == [Yy1]* ]]; then hostname="$IP" interface="$VM_NET_DEV" fi mkdir -p "$SHARE" chmod -R 777 "$SHARE" share="$STORAGE/shared" SAMBA="/etc/samba/smb.conf" mkdir -p "$share" [ -z "$(ls -A "$share")" ] && chmod -R 777 "$share" { echo "[global]" echo " server string = Dockur" echo " netbios name = dockur" echo " netbios name = $hostname" echo " workgroup = WORKGROUP" echo " interfaces = dockerbridge" echo " interfaces = $interface" echo " bind interfaces only = yes" echo " security = user" echo " guest account = nobody" Loading @@ -32,14 +37,14 @@ SAMBA="/etc/samba/smb.conf" echo " disable spoolss = yes" echo "" echo "[Data]" echo " path = $SHARE" echo " path = $share" echo " comment = Shared" echo " writable = yes" echo " guest ok = yes" echo " guest only = yes" echo " force user = root" echo " force group = root" } > "$SAMBA" } > "/etc/samba/smb.conf" { echo "--------------------------------------------------------" echo " $APP for Docker v$(</run/version)..." Loading @@ -59,7 +64,7 @@ SAMBA="/etc/samba/smb.conf" echo "" echo "Replace the example path /home/user/example with the desired storage folder." echo "" } | unix2dos > "$SHARE/readme.txt" } | unix2dos > "$share/readme.txt" ! smbd && smbd --debug-stdout Loading @@ -67,17 +72,16 @@ isXP="N" if [ -f "$STORAGE/windows.old" ]; then MT=$(<"$STORAGE/windows.old") if [[ "${MT,,}" == "pc-q35-2"* ]]; then isXP="Y" fi [[ "${MT,,}" == "pc-q35-2"* ]] && isXP="Y" fi if [[ "$isXP" == [Yy1]* ]]; then [[ "$DHCP" == [Yy1]* ]] && return 0 # Enable NetBIOS on Windows XP ! nmbd && nmbd --debug-stdout else # Enable Web Service Discovery wsdd -i dockerbridge -p -n "host.lan" & wsdd -i "$interface" -p -n "$hostname" & fi return 0