diff --git a/scripts/build/build_node/Platform/Linux/install-ubuntu-gpu.sh b/scripts/build/build_node/Platform/Linux/install-ubuntu-gpu.sh new file mode 100755 index 0000000000..033d32369c --- /dev/null +++ b/scripts/build/build_node/Platform/Linux/install-ubuntu-gpu.sh @@ -0,0 +1,94 @@ +#!/bin/bash + +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# + +# This script must be run as root +if [[ $EUID -ne 0 ]] +then + echo "This script must be run as root (sudo)" + exit 1 +fi + +# Install latest updates to AWS drivers and GCC (to build display driver) +# +echo Updating OS and tools +apt-get update -y +apt-get upgrade -y linux-aws +apt-get install -y gcc make linux-headers-$(uname -r) + +# Install Desktop environment with tools. Nice is only compatible with Gnome +# +echo Installing desktop environment and tools +apt-get install ubuntu-desktop mesa-utils vulkan-tools awscli unzip -y + +# Setup X desktop manager (Wayland needs to be turned off for GDM3) +# +if [ "`cat /etc/issue | grep 18.04`" != "" ] ; then + apt-get install lightdm -y +else + apt-get install gdm3 -y + sed -i 's/#WaylandEnable=false/WaylandEnable=false/g' /etc/gdm3/custom.conf + systemctl restart gdm3 +fi + +# Set desktop environment to start by default +# +systemctl get-default +systemctl set-default graphical.target +systemctl isolate graphical.target + +# Prepare for the nVidia driver by disabling nouveau +# +cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf +blacklist vga16fb +blacklist nouveau +blacklist rivafb +blacklist nvidiafb +blacklist rivatv +EOF + +# Blocking nouveau from activating during grub startup +# +echo 'GRUB_CMDLINE_LINUX="rdblacklist=nouveau"' >> /etc/default/grub +update-grub + +# Copy drivers to local, then install +# +aws s3 cp --recursive s3://nvidia-gaming/linux/latest/ /tmp +cd /tmp +unzip NVIDIA-Linux-x86_64* \ +&& rm NVIDIA-Linux-x86_64* \ +&& chmod +x Linux/NVIDIA-Linux-x86_64*.run \ +&& Linux/NVIDIA-Linux-x86_64*.run --accept-license \ + --no-questions \ + --no-backup \ + --ui=none \ + --install-libglvnd \ +&& nvidia-xconfig --preserve-busid --enable-all-gpus \ +&& rm -rf /tmp/Linux + +# Download and configure licenses (needed for VMs and multiuser) +# +cat << EOF | sudo tee -a /etc/nvidia/gridd.conf +vGamingMarketplace=2 +EOF +curl -o /etc/nvidia/GridSwCert.txt "https://nvidia-gaming.s3.amazonaws.com/GridSwCert-Archive/GridSwCertLinux_2021_10_2.cert" + +# Optimize settings if headless +# +if [ ! $DISPLAY ] ; then + echo Headless instance found. Disabling HardDPMS + if [ ! $(grep '"HardDPMS" "false"' /etc/X11/xorg.conf) ]; then + sed -i '/BusID */ a\ + Option "HardDPMS" "false"' /etc/X11/xorg.conf + fi +fi + +echo Install complete! +read -t 10 -p "Rebooting in 10 seconds. Press enter to reboot this instance now or CTRL+c to cancel" +reboot now + diff --git a/scripts/build/build_node/Platform/Linux/install-ubuntu-nicedcv.sh b/scripts/build/build_node/Platform/Linux/install-ubuntu-nicedcv.sh new file mode 100755 index 0000000000..d566c94c21 --- /dev/null +++ b/scripts/build/build_node/Platform/Linux/install-ubuntu-nicedcv.sh @@ -0,0 +1,78 @@ +#!/bin/bash + +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# + +# This script must be run as root +if [[ $EUID -ne 0 ]] +then + echo "This script must be run as root (sudo)" + exit 1 +fi + +# Download Nice DCV +# +echo Downloading Nice-DCV +mkdir /tmp/nice-dcv +cd /tmp/nice-dcv +curl -sSL https://d1uj6qtbmh3dt5.cloudfront.net/NICE-GPG-KEY | gpg --import - + +if [ "`cat /etc/issue | grep 18.04`" != "" ] ; then + dcv_server=`curl --silent --output - https://download.nice-dcv.com/ | \ +grep href | egrep "$dcv_version" | egrep "ubuntu1804" | grep Server | \ +sed -e 's/.*http/http/' -e 's/tgz.*/tgz/' | head -1` +else + dcv_server=`curl --silent --output - https://download.nice-dcv.com/ | \ +grep href | egrep "$dcv_version" | egrep "ubuntu2004" | grep Server | \ +sed -e 's/.*http/http/' -e 's/tgz.*/tgz/' | head -1` +fi + +# Install Nice DCV +# +echo Installing DCV from $dcv_server +wget $dcv_server \ +&& tar zxvf nice-dcv-*ubun*.tgz +cd nice-dcv-*64 +apt install -y ./nice-*amd64.ubuntu*.deb \ +&& usermod -aG video dcv \ +&& rm -rf /tmp/nice-dcv + +# Setup multiuser environment for DCV +# +systemctl isolate multi-user.target +sleep 1 +dcvgladmin enable +systemctl isolate graphical.target + +# Check if DCV localuser for X has been setup correctly +# +if [ $(DISPLAY=:0 XAUTHORITY=$(ps aux | grep "X.*\-auth" | grep -v grep | sed -n 's/.*-auth \([^ ]\+\).*/\1/p') xhost | grep "SI:localuser:dcv$") ]; then + echo DCV localuser validated +else + echo [ERROR] DCV localuser not found. Output should be: SI:localuser:dcv. Exiting with 1 + exit 1 +fi + +# Configure DCV for auto start sessions and performance +# +sed -i "s/#create-session = true/create-session = true/g" /etc/dcv/dcv.conf +sed -i "s/#owner=\"session-owner\"/owner=\"$LOGNAME\"/g" /etc/dcv/dcv.conf +sed -i "s/#target-fps=30/target-fps=0/g" /etc/dcv/dcv.conf + +# Enable and start the DCV server +# +systemctl enable dcvserver +systemctl start dcvserver + +# Output the DCV installation diagnostics +# +dcvgldiag + +# Start a DCV session to login +# +IP_ADDR=$(curl http://checkip.amazonaws.com) +echo Starting DCV desktop session for $LOGNAME. Session can be accessed at https://$IP_ADDR:8443 +dcv create-session --type=console --owner $LOGNAME desktop