You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
3.3 KiB

  1. #!/usr/bin/env bash
  2. ## originally copied from https://gist.github.com/Nexarian/0eb26a3284b21b55b6e1e8653ed88ec9/8faa8b0909b82a8c611cbbfe7663b4b66fa80373 (2023-01-17)
  3. set -e
  4. cd ~
  5. sudo -v
  6. # Make sure system is in a good, updated, clean, state.
  7. sudo apt-get -y update
  8. sudo apt-get -y dist-upgrade
  9. sudo apt-get -y autoremove
  10. # Install CUDA (Shamelessly copied from Nvidia's website):
  11. wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
  12. sudo dpkg -i cuda-keyring_1.0-1_all.deb
  13. sudo apt-get update
  14. sudo apt-get -y install cuda
  15. sudo usermod $USER -a -G video
  16. sudo usermod $USER -a -G tty
  17. sudo usermod $USER -a -G render
  18. # XRDP Build Pre-reqs Part 1
  19. sudo apt-get -y install git autoconf libtool pkg-config gcc g++ make \
  20. libssl-dev libpam0g-dev libjpeg-dev libx11-dev libxfixes-dev libxrandr-dev \
  21. flex bison libxml2-dev intltool xsltproc xutils-dev python3-libxml2 g++ \
  22. xutils libfuse-dev libmp3lame-dev nasm libpixman-1-dev xserver-xorg-dev \
  23. libjson-c-dev libsndfile1-dev libspeex-dev libspeexdsp-dev libpulse-dev \
  24. libpulse0 autopoint \*turbojpeg\* libfdk-aac-dev libopus-dev libgbm-dev \
  25. libx264\* libx264-dev
  26. #XRDP Build Pre-reqs Part 2 (For some reason apt needs this to be separate)
  27. sudo apt-get -y install libepoxy-dev
  28. #System Pre-reqs
  29. sudo apt-get -y install xorg xserver-xorg-legacy dbus-x11
  30. sudo apt-get -y remove dbus-user-session
  31. sudo tee /etc/X11/Xwrapper.config > /dev/null << EOL
  32. # Xwrapper.config (Debian X Window System server wrapper configuration file)
  33. #
  34. # This file was generated by the post-installation script of the
  35. # xserver-xorg-legacy package using values from the debconf database.
  36. #
  37. # See the Xwrapper.config(5) manual page for more information.
  38. #
  39. # This file is automatically updated on upgrades of the xserver-xorg-legacy
  40. # package *only* if it has not been modified since the last upgrade of that
  41. # package.
  42. #
  43. # If you have edited this file but would like it to be automatically updated
  44. # again, run the following command as root:
  45. # dpkg-reconfigure xserver-xorg-legacy
  46. needs_root_rights=no
  47. allowed_users=anybody
  48. EOL
  49. BUILD_DIR=$(mktemp -d)
  50. echo "Building xrdp..."
  51. git clone https://github.com/Nexarian/xrdp.git --branch mainline_merge "$BUILD_DIR/xrdp"
  52. cd "$BUILD_DIR/xrdp"
  53. ./bootstrap
  54. ./configure --enable-fuse --enable-rfxcodec --enable-pixman --enable-mp3lame \
  55. --enable-sound --enable-opus --enable-fdkaac --enable-x264 --enable-nvenc
  56. make -j $(nproc) clean all
  57. sudo make install
  58. echo "Building xorgxrdp..."
  59. git clone https://github.com/Nexarian/xorgxrdp.git --branch mainline_merge "$BUILD_DIR/xorgxrdp"
  60. cd "$BUILD_DIR/xorgxrdp"
  61. ./bootstrap
  62. ./configure --with-simd --enable-lrandr
  63. make -j $(nproc) clean all
  64. sudo make install
  65. echo "Configuring Nvidia..."
  66. BUS_ID=$(nvidia-smi --query-gpu=pci.bus --format=csv | sed -n '2 p' | xargs -I{} printf "%d\n" {})
  67. # Alternative method to get the BUS ID that doesn't work on some systems (Such as a laptop with an Intel iGPU and an Nvidia Discrete GPU).
  68. # BUS_ID=$(lspci | grep -e 'VGA.*NVIDIA' | cut -d: -f1 | xargs -I{} printf "%d\n" 0x{} | sed -n 1p)
  69. # nvidia-xconfig --query-gpu-info
  70. sudo sed -i -E 's/(BusID "PCI:)[[:digit:]]+(:0:0")/\1'$BUS_ID'\2/' /etc/X11/xrdp/xorg_nvidia.conf
  71. echo "Starting the server..."
  72. sudo systemctl enable xrdp
  73. sudo service xrdp start