bootstrap.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/bash
  2. set -e
  3. trap "echo TRAPed signal" HUP INT QUIT KILL TERM
  4. echo "user:$VNCPASS" | sudo chpasswd
  5. # NVIDIA driver version inside the container from Dockerfile must be equal to the host
  6. HEX_ID=$(sudo nvidia-smi --query-gpu=pci.bus_id --id="$(echo "$NVIDIA_VISIBLE_DEVICES" | cut -d ',' -f1)" --format=csv | sed -n 2p)
  7. IFS=":." ARR_ID=("$HEX_ID")
  8. unset IFS
  9. BUS_ID=PCI:$((16#${ARR_ID[1]})):$((16#${ARR_ID[2]})):$((16#${ARR_ID[3]}))
  10. # Leave out --use-display-device=None if GPU is headless such as Tesla and download links of such GPU drivers in Dockerfile should also be changed
  11. sudo nvidia-xconfig --virtual="${SIZEW}x$SIZEH" --allow-empty-initial-configuration --enable-all-gpus --no-use-edid-dpi --busid="$BUS_ID" --use-display-device=None
  12. if [ "x$SHARED" == "xTRUE" ]; then
  13. export SHARESTRING="-shared"
  14. fi
  15. shopt -s extglob
  16. for TTY in /dev/tty+([0-9]); do
  17. if [ -w "$TTY" ]; then
  18. /usr/bin/X tty"$(echo "$TTY" | grep -Eo '[0-9]+$')" :0 &
  19. break
  20. fi
  21. done
  22. sleep 1
  23. x11vnc -display :0 -passwd "$VNCPASS" -forever -xkb -rfbport 5900 "$SHARESTRING" &
  24. sleep 1
  25. /opt/noVNC/utils/launch.sh --vnc localhost:5900 --listen 5901 &
  26. sleep 1
  27. export DISPLAY=:0
  28. if vulkaninfo | grep "$(echo "$NVIDIA_VISIBLE_DEVICES" | cut -d ',' -f1 | cut -c 5-)" | grep -q ^; then
  29. VK=0
  30. while true; do
  31. if ENABLE_DEVICE_CHOOSER_LAYER=1 VULKAN_DEVICE_INDEX=$VK vulkaninfo | grep "$(echo "$NVIDIA_VISIBLE_DEVICES" | cut -d ',' -f1 | cut -c 5-)" | grep -q ^; then
  32. export ENABLE_DEVICE_CHOOSER_LAYER=1
  33. export VULKAN_DEVICE_INDEX="$VK"
  34. break
  35. fi
  36. VK=$((VK + 1))
  37. done
  38. else
  39. echo "Vulkan not available for current GPU."
  40. fi
  41. mate-session &
  42. sleep 1
  43. pulseaudio --start
  44. echo "Session Running. Press [Return] to exit."
  45. read