bootstrap.sh 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #!/bin/bash
  2. set -e
  3. trap "echo TRAPed signal" HUP INT QUIT KILL TERM
  4. sudo chown -R user:user /home/user /opt/tomcat
  5. echo "user:$PASSWD" | sudo chpasswd
  6. sudo ln -snf "/usr/share/zoneinfo/$TZ" /etc/localtime && echo "$TZ" | sudo tee /etc/timezone > /dev/null
  7. export PATH="${PATH}:/opt/tomcat/bin"
  8. sudo ln -snf /dev/ptmx /dev/tty7
  9. sudo /etc/init.d/ssh start
  10. sudo /etc/init.d/dbus start
  11. pulseaudio --start
  12. # Install NVIDIA drivers, including X graphic drivers by omitting --x-{prefix,module-path,library-path,sysconfig-path}
  13. if ! command -v nvidia-xconfig &> /dev/null; then
  14. export DRIVER_VERSION=$(head -n1 </proc/driver/nvidia/version | awk '{print $8}')
  15. BASE_URL=https://download.nvidia.com/XFree86/Linux-x86_64
  16. cd /tmp
  17. curl -fsSL -O $BASE_URL/$DRIVER_VERSION/NVIDIA-Linux-x86_64-$DRIVER_VERSION.run
  18. sudo sh NVIDIA-Linux-x86_64-$DRIVER_VERSION.run -x
  19. cd NVIDIA-Linux-x86_64-$DRIVER_VERSION
  20. sudo ./nvidia-installer --silent \
  21. --no-kernel-module \
  22. --install-compat32-libs \
  23. --no-nouveau-check \
  24. --no-nvidia-modprobe \
  25. --no-rpms \
  26. --no-backup \
  27. --no-check-for-alternate-installs \
  28. --no-libglx-indirect \
  29. --no-install-libglvnd
  30. sudo rm -rf /tmp/NVIDIA*
  31. cd ~
  32. fi
  33. if grep -Fxq "allowed_users=console" /etc/X11/Xwrapper.config; then
  34. sudo sed -i "s/allowed_users=console/allowed_users=anybody/;$ a needs_root_rights=yes" /etc/X11/Xwrapper.config
  35. fi
  36. if [ -f "/etc/X11/xorg.conf" ]; then
  37. sudo rm /etc/X11/xorg.conf
  38. fi
  39. if [ "$NVIDIA_VISIBLE_DEVICES" == "all" ]; then
  40. export GPU_SELECT=$(sudo nvidia-smi --query-gpu=uuid --format=csv | sed -n 2p)
  41. elif [ -z "$NVIDIA_VISIBLE_DEVICES" ]; then
  42. export GPU_SELECT=$(sudo nvidia-smi --query-gpu=uuid --format=csv | sed -n 2p)
  43. else
  44. export GPU_SELECT=$(sudo nvidia-smi --id=$(echo "$NVIDIA_VISIBLE_DEVICES" | cut -d ',' -f1) --query-gpu=uuid --format=csv | sed -n 2p)
  45. if [ -z "$GPU_SELECT" ]; then
  46. export GPU_SELECT=$(sudo nvidia-smi --query-gpu=uuid --format=csv | sed -n 2p)
  47. fi
  48. fi
  49. if [ -z "$GPU_SELECT" ]; then
  50. echo "No NVIDIA GPUs detected. Exiting."
  51. exit 1
  52. fi
  53. HEX_ID=$(sudo nvidia-smi --query-gpu=pci.bus_id --id="$GPU_SELECT" --format=csv | sed -n 2p)
  54. IFS=":." ARR_ID=($HEX_ID)
  55. unset IFS
  56. BUS_ID=PCI:$((16#${ARR_ID[1]})):$((16#${ARR_ID[2]})):$((16#${ARR_ID[3]}))
  57. export MODELINE=$(cvt -r ${SIZEW} ${SIZEH} | sed -n 2p)
  58. sudo nvidia-xconfig --virtual="${SIZEW}x${SIZEH}" --depth="$CDEPTH" --mode=$(echo $MODELINE | awk '{print $2}' | tr -d '"') --allow-empty-initial-configuration --no-probe-all-gpus --busid="$BUS_ID" --only-one-x-screen --connected-monitor="$VIDEO_PORT"
  59. sudo sed -i '/Driver\s\+"nvidia"/a\ Option "ModeValidation" "NoMaxPClkCheck, NoEdidMaxPClkCheck, NoMaxSizeCheck, NoHorizSyncCheck, NoVertRefreshCheck, NoVirtualSizeCheck, NoExtendedGpuCapabilitiesCheck, NoTotalSizeCheck, NoDualLinkDVICheck, NoDisplayPortBandwidthCheck, AllowNon3DVisionModes, AllowNonHDMI3DModes, AllowNonEdidModes, NoEdidHDMI2Check, AllowDpInterlaced"\n Option "DPI" "96 x 96"' /etc/X11/xorg.conf
  60. sudo sed -i '/Section\s\+"Monitor"/a\ '"$MODELINE" /etc/X11/xorg.conf
  61. Xorg vt7 -novtswitch -sharevts +extension "MIT-SHM" :0 &
  62. if [ "x$SHARED" == "xTRUE" ]; then
  63. export SHARESTRING="-shared"
  64. fi
  65. sudo x11vnc -display ":0" -passwd "$PASSWD" -forever -repeat -xkb -xrandr "resize" -rfbport 5900 "$SHARESTRING" &
  66. mkdir -p ~/.guacamole
  67. echo "<user-mapping>
  68. <authorize username=\"user\" password=\"$PASSWD\">
  69. <connection name=\"VNC\">
  70. <protocol>vnc</protocol>
  71. <param name=\"hostname\">localhost</param>
  72. <param name=\"port\">5900</param>
  73. <param name=\"autoretry\">10</param>
  74. <param name=\"password\">$PASSWD</param>
  75. <param name=\"enable-sftp\">true</param>
  76. <param name=\"sftp-hostname\">localhost</param>
  77. <param name=\"sftp-username\">user</param>
  78. <param name=\"sftp-password\">$PASSWD</param>
  79. <param name=\"sftp-directory\">/home/user</param>
  80. <param name=\"enable-audio\">true</param>
  81. <param name=\"audio-servername\">localhost</param>
  82. </connection>
  83. <connection name=\"SSH\">
  84. <protocol>ssh</protocol>
  85. <param name=\"hostname\">localhost</param>
  86. <param name=\"username\">user</param>
  87. <param name=\"password\">$PASSWD</param>
  88. <param name=\"enable-sftp\">true</param>
  89. </connection>
  90. </authorize>
  91. </user-mapping>
  92. " > ~/.guacamole/user-mapping.xml
  93. chmod 0600 ~/.guacamole/user-mapping.xml
  94. /opt/tomcat/bin/catalina.sh run &
  95. guacd -f &
  96. export DISPLAY=:0
  97. mate-session &
  98. echo "Session Running. Press [Return] to exit."
  99. read