bootstrap.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!/bin/bash
  2. set -e
  3. trap "echo TRAPed signal" HUP INT QUIT KILL TERM
  4. echo "user:$VNCPASS" | sudo chpasswd
  5. # Install NVIDIA drivers, including X graphic drivers by omitting --x-{prefix,module-path,library-path,sysconfig-path}
  6. export DRIVER_VERSION=$(head -n1 </proc/driver/nvidia/version | awk '{ print $8 }')
  7. BASE_URL=https://us.download.nvidia.com/XFree86/Linux-x86_64
  8. cd /tmp
  9. curl -fSsl -O $BASE_URL/$DRIVER_VERSION/NVIDIA-Linux-x86_64-$DRIVER_VERSION.run
  10. sudo sh NVIDIA-Linux-x86_64-$DRIVER_VERSION.run -x
  11. cd NVIDIA-Linux-x86_64-$DRIVER_VERSION
  12. sudo ./nvidia-installer --silent \
  13. --no-kernel-module \
  14. --install-compat32-libs \
  15. --no-nouveau-check \
  16. --no-nvidia-modprobe \
  17. --no-rpms \
  18. --no-backup \
  19. --no-check-for-alternate-installs \
  20. --no-libglx-indirect \
  21. --no-install-libglvnd
  22. sudo rm -rf /tmp/NVIDIA*
  23. cd ~
  24. sudo sed -i "s/allowed_users=console/allowed_users=anybody/;$ a needs_root_rights=yes" /etc/X11/Xwrapper.config
  25. if ! sudo nvidia-smi --id="$(echo "$NVIDIA_VISIBLE_DEVICES" | cut -d ',' -f1)" -q | grep -q "Tesla"; then
  26. DISPLAYSTRING="--use-display-device=None"
  27. fi
  28. HEX_ID=$(sudo nvidia-smi --query-gpu=pci.bus_id --id="$(echo "$NVIDIA_VISIBLE_DEVICES" | cut -d ',' -f1)" --format=csv | sed -n 2p)
  29. IFS=":." ARR_ID=($HEX_ID)
  30. unset IFS
  31. BUS_ID=PCI:$((16#${ARR_ID[1]})):$((16#${ARR_ID[2]})):$((16#${ARR_ID[3]}))
  32. sudo nvidia-xconfig --virtual="${SIZEW}x${SIZEH}" --depth="$CDEPTH" --allow-empty-initial-configuration --enable-all-gpus --no-use-edid-dpi --busid="$BUS_ID" --only-one-x-screen "$DISPLAYSTRING"
  33. if [ "x$SHARED" == "xTRUE" ]; then
  34. export SHARESTRING="-shared"
  35. fi
  36. shopt -s extglob
  37. for TTY in /dev/tty+([0-9]); do
  38. if [ -w "$TTY" ]; then
  39. Xorg tty"$(echo "$TTY" | grep -Eo '[0-9]+$')" :0 &
  40. break
  41. fi
  42. done
  43. sleep 1
  44. x11vnc -display :0 -passwd "$VNCPASS" -forever -xkb -rfbport 5900 "$SHARESTRING" &
  45. sleep 1
  46. /opt/noVNC/utils/launch.sh --vnc localhost:5900 --listen 5901 &
  47. sleep 1
  48. export DISPLAY=:0
  49. UUID_CUT=$(sudo nvidia-smi --query-gpu=uuid --id="$(echo "$NVIDIA_VISIBLE_DEVICES" | cut -d ',' -f1)" --format=csv | sed -n 2p | cut -c 5-)
  50. if vulkaninfo | grep "$UUID_CUT" | grep -q ^; then
  51. VK=0
  52. while true; do
  53. if ENABLE_DEVICE_CHOOSER_LAYER=1 VULKAN_DEVICE_INDEX=$VK vulkaninfo | grep "$UUID_CUT" | grep -q ^; then
  54. export ENABLE_DEVICE_CHOOSER_LAYER=1
  55. export VULKAN_DEVICE_INDEX="$VK"
  56. break
  57. fi
  58. VK=$((VK + 1))
  59. done
  60. else
  61. echo "Vulkan not available for the current GPU."
  62. fi
  63. mate-session &
  64. sleep 1
  65. pulseaudio --start
  66. echo "Session Running. Press [Return] to exit."
  67. read