From 5bf54a4158233561a074e5a4f61203a1e7c7defe Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 10 Jun 2024 19:38:32 +0200 Subject: [PATCH] feat: Make resolution configurable (#582) --- src/define.sh | 54 +++++++++++++++++++++++++++++++++++++++----------- src/install.sh | 21 +++++++++++++++++--- src/samba.sh | 4 ++-- 3 files changed, 62 insertions(+), 17 deletions(-) diff --git a/src/define.sh b/src/define.sh index 051d79f..3c3121d 100644 --- a/src/define.sh +++ b/src/define.sh @@ -1,6 +1,8 @@ #!/usr/bin/env bash set -Eeuo pipefail +: "${XRES:=""}" +: "${YRES:=""}" : "${VERIFY:=""}" : "${REGION:=""}" : "${MANUAL:=""}" @@ -2073,6 +2075,12 @@ prepareInstall() { fi fi + [ -z "$YRES" ] && YRES="720" + [ -z "$XRES" ] && XRES="1280" + + XHEX=$(printf '%x\n' "$XRES") + YHEX=$(printf '%x\n' "$YRES") + local username="Docker" local password="*" @@ -2118,13 +2126,14 @@ prepareInstall() { echo " OrgName=\"Windows for Docker\"" echo " ProductKey=$key" echo "" - echo "[LicenseFilePrintData]" - echo " AutoMode=PerServer" - echo " AutoUsers=5" - echo "" echo "[Identification]" echo " JoinWorkgroup = WORKGROUP" echo "" + echo "[Display]" + echo " BitsPerPel=32" + echo " XResolution=$XRES" + echo " YResolution=$YRES" + echo "" echo "[Networking]" echo " InstallDefaultComponents=Yes" echo "" @@ -2140,6 +2149,17 @@ prepareInstall() { echo "" } | unix2dos > "$target/WINNT.SIF" + if [[ "$driver" == "2k3" ]]; then + { echo "[Components]" + echo " TerminalServer=On" + echo "" + echo "[LicenseFilePrintData]" + echo " AutoMode=PerServer" + echo " AutoUsers=5" + echo "" + } | unix2dos >> "$target/WINNT.SIF" + fi + { echo "Windows Registry Editor Version 5.00" echo "" echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security]" @@ -2157,18 +2177,12 @@ prepareInstall() { echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]" echo "\"LimitBlankPasswordUse\"=dword:00000000" echo "" - echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\srvWiz]" - echo "@=dword:00000000" - echo "" echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Tour]" echo "\"RunCount\"=dword:00000000" echo "" echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]" echo "\"HideFileExt\"=dword:00000000" echo "" - echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ServerOOBE\SecurityOOBE]" - echo "\"DontLaunchSecurityOOBE\"=dword:00000000" - echo "" echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]" echo "\"DefaultUserName\"=\"$username\"" echo "\"DefaultDomainName\"=\"Dockur\"" @@ -2178,15 +2192,31 @@ prepareInstall() { echo "" echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video\{23A77BF7-ED96-40EC-AF06-9B1F4867732A}\0000]" echo "\"DefaultSettings.BitsPerPel\"=dword:00000020" - echo "\"DefaultSettings.XResolution\"=dword:00000780" - echo "\"DefaultSettings.YResolution\"=dword:00000438" + echo "\"DefaultSettings.XResolution\"=dword:00000$XHEX" + echo "\"DefaultSettings.YResolution\"=dword:00000$YHEX" + echo "" + echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Control\VIDEO\{23A77BF7-ED96-40EC-AF06-9B1F4867732A}\0000]" + echo "\"DefaultSettings.BitsPerPel\"=dword:00000020" + echo "\"DefaultSettings.XResolution\"=dword:00000$XHEX" + echo "\"DefaultSettings.YResolution\"=dword:00000$YHEX" echo "" echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]" echo "\"ScreenSaver\"=\"reg add \\\"HKCU\\\\Control Panel\\\\Desktop\\\" /f /v \\\"SCRNSAVE.EXE\\\" /t REG_SZ /d \\\"off\\\"\"" echo "\"ScreenSaverOff\"=\"reg add \\\"HKCU\\\\Control Panel\\\\Desktop\\\" /f /v \\\"ScreenSaveActive\\\" /t REG_SZ /d \\\"0\\\"\"" echo "$oem" + echo "" } | unix2dos > "$dir/\$OEM\$/install.reg" + if [[ "$driver" == "2k3" ]]; then + { echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\srvWiz]" + echo "@=dword:00000000" + echo "" + echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ServerOOBE\SecurityOOBE]" + echo "\"DontLaunchSecurityOOBE\"=dword:00000000" + echo "" + } | unix2dos >> "$dir/\$OEM\$/install.reg" + fi + { echo "Set WshShell = WScript.CreateObject(\"WScript.Shell\")" echo "Set WshNetwork = WScript.CreateObject(\"WScript.Network\")" echo "Set oMachine = GetObject(\"WinNT://\" & WshNetwork.ComputerName)" diff --git a/src/install.sh b/src/install.sh index 0aada6e..b8cd8cf 100644 --- a/src/install.sh +++ b/src/install.sh @@ -119,10 +119,11 @@ finishInstall() { fi rm -f "$STORAGE/windows.old" - rm -f "$STORAGE/windows.type" + rm -f "$STORAGE/windows.vga" rm -f "$STORAGE/windows.base" rm -f "$STORAGE/windows.boot" rm -f "$STORAGE/windows.mode" + rm -f "$STORAGE/windows.type" cp -f /run/version "$STORAGE/windows.ver" @@ -155,6 +156,10 @@ finishInstall() { fi fi + if [ -n "${VGA:-}" ] && [[ "${VGA:-}" != "virtio" ]] && [[ "${VGA:-}" != "ramfb" ]]; then + echo "$VGA" > "$STORAGE/windows.vga" + fi + if [ -n "${DISK_TYPE:-}" ] && [[ "${DISK_TYPE:-}" != "scsi" ]]; then echo "$DISK_TYPE" > "$STORAGE/windows.type" fi @@ -613,6 +618,12 @@ updateXML() { local language="$2" local culture region user admin pass keyboard + [ -z "$YRES" ] && YRES="720" + [ -z "$XRES" ] && XRES="1280" + + sed -i "s/1080<\/VerticalResolution>/$YRES<\/VerticalResolution>/g" "$asset" + sed -i "s/1920<\/HorizontalResolution>/$XRES<\/HorizontalResolution>/g" "$asset" + culture=$(getLanguage "$language" "culture") if [ -n "$culture" ] && [[ "${culture,,}" != "en-us" ]]; then @@ -967,10 +978,14 @@ bootWindows() { rm -rf "$TMP" - [[ "${PLATFORM,,}" == "arm64" ]] && VGA="virtio-gpu" + if [ -s "$STORAGE/windows.vga" ] && [ -f "$STORAGE/windows.vga" ]; then + [ -z "${VGA:-}" ] && VGA=$(<"$STORAGE/windows.vga") + else + [ -z "${VGA:-}" ] && [[ "${PLATFORM,,}" == "arm64" ]] && VGA="virtio-gpu" + fi if [ -s "$STORAGE/windows.type" ] && [ -f "$STORAGE/windows.type" ]; then - DISK_TYPE=$(<"$STORAGE/windows.type") + [ -z "${DISK_TYPE:-}" ] && DISK_TYPE=$(<"$STORAGE/windows.type") fi if [ -s "$STORAGE/windows.mode" ] && [ -f "$STORAGE/windows.mode" ]; then diff --git a/src/samba.sh b/src/samba.sh index 10dd37c..71f9bcf 100644 --- a/src/samba.sh +++ b/src/samba.sh @@ -3,8 +3,8 @@ set -Eeuo pipefail : "${SAMBA:="Y"}" -[[ "$SAMBA" != [Yy1]* ]] && return 0 -[[ "$NETWORK" != [Yy1]* ]] && return 0 +[[ "$SAMBA" == [Nn]* ]] && return 0 +[[ "$NETWORK" == [Nn]* ]] && return 0 hostname="host.lan" interface="dockerbridge"