Compare commits

...

7 Commits

Author SHA1 Message Date
renovate[bot] 3735a26629 chore(deps): update hadolint/hadolint-action action to v3.5.0 2026-08-25 01:35:50 +00:00
Kroese cf3772768e feat: Reduce XP and 2003 recovery menu timeout (#2187) 2026-08-25 03:35:29 +02:00
Kroese 874c5d5fa3 fix: Exclude bundled QEMU binary from base image (#2185) 2026-08-24 06:52:38 +02:00
Kroese 3c50cdd981 build: Copy udfread binary from Docker image (#2184) 2026-08-24 06:29:52 +02:00
Kroese ed83980b1d feat: Support GPU acceleration via Helios (#2183) 2026-08-24 04:36:41 +02:00
renovate[bot] 91b7e8a9c1 build: Update QEMU base image to v7.49 (#2181) 2026-08-23 21:01:11 +02:00
Kroese 4e57031200 docs: Environment variables (#2180) 2026-08-23 20:56:42 +02:00
4 changed files with 41 additions and 10 deletions
+1 -1
View File
@@ -26,7 +26,7 @@ jobs:
-e SC2317 -e SC2317
- -
name: Lint Dockerfile name: Lint Dockerfile
uses: hadolint/hadolint-action@v3.4.0 uses: hadolint/hadolint-action@v3.5.0
with: with:
dockerfile: Dockerfile dockerfile: Dockerfile
ignore: DL3006,DL3008,DL3067 ignore: DL3006,DL3008,DL3067
+4 -7
View File
@@ -1,13 +1,12 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1.19
ARG VERSION_ARG="latest" ARG VERSION_ARG="latest"
FROM scratch AS build-amd64 FROM scratch AS build-amd64
COPY --from=qemux/qemu:7.48 / / COPY --from=qemux/qemu:7.49 --exclude=usr/bin/qemu-system-x86_64 / /
ARG TARGETARCH ARG TARGETARCH
ARG VERSION_UDF="1.2.0"
ARG VERSION_WSDD="1.27" ARG VERSION_WSDD="1.27"
ARG VERSION_VIRTIO="1.9.60" ARG VERSION_VIRTIO="1.9.60"
ARG VERSION_BLINTER="1.0.112" ARG VERSION_BLINTER="1.0.112"
@@ -39,16 +38,14 @@ RUN <<EOF
wget "https://github.com/gershnik/wsdd-native/releases/download/v${VERSION_WSDD}/wsddn_${VERSION_WSDD}_${TARGETARCH}.deb" -O /tmp/wsddn.deb -q --timeout=10 wget "https://github.com/gershnik/wsdd-native/releases/download/v${VERSION_WSDD}/wsddn_${VERSION_WSDD}_${TARGETARCH}.deb" -O /tmp/wsddn.deb -q --timeout=10
dpkg -i /tmp/wsddn.deb dpkg -i /tmp/wsddn.deb
# Install UDFread package
wget "https://github.com/qemus/udfread/releases/download/v${VERSION_UDF}/udfread_${VERSION_UDF}_${TARGETARCH}.deb" -O /tmp/udfread.deb -q --timeout=10
dpkg -i /tmp/udfread.deb
apt-get clean apt-get clean
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
EOF EOF
COPY --chmod=755 ./src /run/ COPY --chmod=755 ./src /run/
COPY --chmod=755 ./assets /run/assets COPY --chmod=755 ./assets /run/assets
COPY --from=qemux/udfread:1.2.0 /udfread /usr/bin/
COPY --from=qemux/qemu-helios:1.0.0 /usr/bin/qemu-system-x86_64 /usr/bin/
ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v${VERSION_VIRTIO}-0/virtio-win-${VERSION_VIRTIO}.tar.xz /var/drivers.txz ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v${VERSION_VIRTIO}-0/virtio-win-${VERSION_VIRTIO}.tar.xz /var/drivers.txz
+3 -2
View File
@@ -33,6 +33,7 @@ An empty default means the variable is unset and its value is determined automat
| `VMX` | `N` | Exposes Intel VMX virtualization extensions to the guest. | | `VMX` | `N` | Exposes Intel VMX virtualization extensions to the guest. |
| `HV` | `Y` | Enables Hyper-V enlightenments for Windows guests. | | `HV` | `Y` | Enables Hyper-V enlightenments for Windows guests. |
| `RAM_SIZE` | `4G` | Amount of RAM assigned to Windows, such as `8G`, `half`, or `max`. | | `RAM_SIZE` | `4G` | Amount of RAM assigned to Windows, such as `8G`, `half`, or `max`. |
| `RAM_BACKEND` | | Guest RAM backing mechanism, set `memfd` for memfd-backed memory. |
| `RAM_CHECK` | `Y` | Checks whether enough host memory is available before starting Windows. | | `RAM_CHECK` | `Y` | Checks whether enough host memory is available before starting Windows. |
## 💾 Storage ## 💾 Storage
@@ -113,8 +114,8 @@ An empty default means the variable is unset and its value is determined automat
| `PCI_BUS` | `pcie.0` | Overrides the PCI bus used for attached devices. | | `PCI_BUS` | `pcie.0` | Overrides the PCI bus used for attached devices. |
| `RNG` | `Y` | Adds the Virtio RNG device to the machine. | | `RNG` | `Y` | Adds the Virtio RNG device to the machine. |
| `UUID` | | UUID assigned to Windows. | | `UUID` | | UUID assigned to Windows. |
| `HPET` | `off` | HPET timer setting. | | `HPET` | `N` | HPET timer setting. |
| `VMPORT` | `off` | VMware port setting. | | `VMPORT` | `N` | VMware port setting. |
| `MOUSE` | `usb-tablet` | Pointing device used by the machine. | | `MOUSE` | `usb-tablet` | Pointing device used by the machine. |
| `SOUND` | `intel-hda` | Audio device used when `AUDIO=Y`. | | `SOUND` | `intel-hda` | Audio device used when `AUDIO=Y`. |
| `SM_BIOS` | | Additional arguments passed to QEMUs `-smbios` option. | | `SM_BIOS` | | Additional arguments passed to QEMUs `-smbios` option. |
+33
View File
@@ -1077,6 +1077,39 @@ writeVBS() {
} | unix2dos > "$dir/\$OEM\$/install.vbs" || return 1 } | unix2dos > "$dir/\$OEM\$/install.vbs" || return 1
if [[ "$driver" == "xp" || "$driver" == "2k3" ]]; then if [[ "$driver" == "xp" || "$driver" == "2k3" ]]; then
# Windows XP and Server 2003 store the automatic recovery menu timeout
# in byte 0x09 of bootstat.dat. Patch only that byte and leave the boot
# success/shutdown state in the rest of the file untouched.
{
printf '%s\n' \
'On Error Resume Next' \
'BootStatPath = WshShell.ExpandEnvironmentStrings("%SystemRoot%\bootstat.dat")' \
'Set BootStatStream = WScript.CreateObject("ADODB.Stream")' \
'Set BootStatXML = WScript.CreateObject("Msxml2.DOMDocument.3.0")' \
'Set BootStatByte = BootStatXML.CreateElement("byte")' \
'BootStatByte.DataType = "bin.base64"' \
'BootStatByte.Text = "Aw=="' \
'If IsObject(BootStatStream) And IsObject(BootStatByte) Then' \
' BootStatStream.Type = 1' \
' BootStatStream.Open' \
' Err.Clear' \
' BootStatStream.LoadFromFile BootStatPath' \
' If Err.Number = 0 Then' \
' If BootStatStream.Size > 9 Then' \
' BootStatStream.Position = 9' \
' BootStatStream.Write BootStatByte.NodeTypedValue' \
' BootStatStream.SaveToFile BootStatPath, 2' \
' End If' \
' End If' \
' BootStatStream.Close' \
'End If' \
'Set BootStatByte = Nothing' \
'Set BootStatXML = Nothing' \
'Set BootStatStream = Nothing' \
'On Error GoTo 0' \
''
} | unix2dos >> "$dir/\$OEM\$/install.vbs" || return 1
mkdir -p "$(dirname "$power")" || return 1 mkdir -p "$(dirname "$power")" || return 1
{ {