From b6ca62da340602d301cabfe159d4bd5d489fff72 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 9 Oct 2023 01:42:01 +0200 Subject: [PATCH 1/3] feat: GPU passthrough support --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index d43346e..f07e024 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,6 +29,7 @@ RUN apt-get update && apt-get -y upgrade && \ ca-certificates \ netcat-openbsd \ qemu-system-x86 \ + xserver-xorg-video-intel \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* From 868c7d1661f5ca21a8c252f6593d7479aa615790 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 9 Oct 2023 01:54:25 +0200 Subject: [PATCH 2/3] feat: GPU passthrough support --- run/run.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/run/run.sh b/run/run.sh index 40276cc..adc664c 100755 --- a/run/run.sh +++ b/run/run.sh @@ -4,6 +4,7 @@ set -Eeuo pipefail # Docker environment variables : ${URL:=''} # URL of the PAT file +: ${GPU:='N'} # Enable GPU passthrough : ${DEBUG:='N'} # Enable debug mode : ${ALLOCATE:='Y'} # Preallocate diskspace : ${ARGUMENTS:=''} # Extra QEMU parameters @@ -81,6 +82,11 @@ EXTRA_OPTS="-device virtio-balloon-pci,id=balloon0,bus=pcie.0,addr=0x4" EXTRA_OPTS="$EXTRA_OPTS -object rng-random,id=objrng0,filename=/dev/urandom" EXTRA_OPTS="$EXTRA_OPTS -device virtio-rng-pci,rng=objrng0,id=rng0,bus=pcie.0,addr=0x1c" +if [[ "${GPU}" == [Yy1]* ]]; then + DEF_OPTS="-nodefaults -boot strict=on -display egl-headless,rendernode=/dev/dri/renderD128" + DEF_OPTS="${DEF_OPTS} -device virtio-vga,id=video0,max_outputs=1,bus=pcie.0,addr=0x1" +fi + ARGS="${DEF_OPTS} ${CPU_OPTS} ${RAM_OPTS} ${MAC_OPTS} ${MON_OPTS} ${SERIAL_OPTS} ${NET_OPTS} ${DISK_OPTS} ${EXTRA_OPTS} ${ARGUMENTS}" ARGS=$(echo "$ARGS" | sed 's/\t/ /g' | tr -s ' ') From 0d2a222af030142733c9cce72a1df097aef46459 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 9 Oct 2023 02:00:03 +0200 Subject: [PATCH 3/3] docs: GPU passthrough support --- readme.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/readme.md b/readme.md index 7f0d499..5fbe00f 100644 --- a/readme.md +++ b/readme.md @@ -170,6 +170,17 @@ docker run -it --rm -p 5000:5000 --device=/dev/kvm --cap-add NET_ADMIN --stop-ti With this method, you are able to switch between different versions while keeping your file data. + * ### How do I passthrough my GPU? + + To enable this feature, add the following lines to your compose file: + + ```yaml + environment: + GPU: "Y" + devices: + - /dev/dri + ``` + * ### What are the differences compared to the standard DSM? There are only two minor differences: the Virtual Machine Manager package is not provided, and Surveillance Station doesn't include any free licenses.