diff --git a/ubuntu/20.04/install.sh b/ubuntu/20.04/install.sh new file mode 100644 index 0000000..51a4b32 --- /dev/null +++ b/ubuntu/20.04/install.sh @@ -0,0 +1,106 @@ +#!/bin/bash + +# +# This script is for Ubuntu 20.04 Focal Fossa to download and install XRDP+XORGXRDP via +# source. +# +# Major thanks to: http://c-nergy.be/blog/?p=11336 for the tips. +# + +############################################################################### +# Use HWE kernel packages +# +HWE="" +#HWE="-hwe-20.04" + +############################################################################### +# Update our machine to the latest code if we need to. +# + +if [ "$(id -u)" -ne 0 ]; then + echo 'This script must be run with root privileges' >&2 + exit 1 +fi + +apt update && apt upgrade -y + +if [ -f /var/run/reboot-required ]; then + echo "A reboot is required in order to proceed with the install." >&2 + echo "Please reboot and re-run this script to finish the install." >&2 + exit 1 +fi + +############################################################################### +# XRDP +# + +# Install hv_kvp utils +apt install -y linux-tools-virtual${HWE} +apt install -y linux-cloud-tools-virtual${HWE} + +# Install the xrdp service so we have the auto start behavior +apt install -y xrdp + +systemctl stop xrdp +systemctl stop xrdp-sesman + +# Configure the installed XRDP ini files. +# use vsock transport. +sed -i_orig -e 's/port=3389/port=vsock:\/\/-1:3389/g' /etc/xrdp/xrdp.ini +# use rdp security. +sed -i_orig -e 's/security_layer=negotiate/security_layer=rdp/g' /etc/xrdp/xrdp.ini +# remove encryption validation. +sed -i_orig -e 's/crypt_level=high/crypt_level=none/g' /etc/xrdp/xrdp.ini +# disable bitmap compression since its local its much faster +sed -i_orig -e 's/bitmap_compression=true/bitmap_compression=false/g' /etc/xrdp/xrdp.ini + +# Add script to setup the ubuntu session properly +if [ ! -e /etc/xrdp/startubuntu.sh ]; then +cat >> /etc/xrdp/startubuntu.sh << EOF +#!/bin/sh +export GNOME_SHELL_SESSION_MODE=ubuntu +export XDG_CURRENT_DESKTOP=ubuntu:GNOME +exec /etc/xrdp/startwm.sh +EOF +chmod a+x /etc/xrdp/startubuntu.sh +fi + +# use the script to setup the ubuntu session +sed -i_orig -e 's/startwm/startubuntu/g' /etc/xrdp/sesman.ini + +# rename the redirected drives to 'shared-drives' +sed -i -e 's/FuseMountName=thinclient_drives/FuseMountName=shared-drives/g' /etc/xrdp/sesman.ini + +# Changed the allowed_users +sed -i_orig -e 's/allowed_users=console/allowed_users=anybody/g' /etc/X11/Xwrapper.config + +# Blacklist the vmw module +if [ ! -e /etc/modprobe.d/blacklist-vmw_vsock_vmci_transport.conf ]; then + echo "blacklist vmw_vsock_vmci_transport" > /etc/modprobe.d/blacklist-vmw_vsock_vmci_transport.conf +fi + +#Ensure hv_sock gets loaded +if [ ! -e /etc/modules-load.d/hv_sock.conf ]; then + echo "hv_sock" > /etc/modules-load.d/hv_sock.conf +fi + +# Configure the policy xrdp session +cat > /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla <&2 + exit 1 +fi + +apt update && apt upgrade -y + +if [ -f /var/run/reboot-required ]; then + echo "A reboot is required in order to proceed with the install." >&2 + echo "Please reboot and re-run this script to finish the install." >&2 + exit 1 +fi + +############################################################################### +# XRDP +# + +# Install hv_kvp utils +apt install -y linux-tools-virtual${HWE} +apt install -y linux-cloud-tools-virtual${HWE} + +# Install the xrdp service so we have the auto start behavior +apt install -y xrdp + +systemctl stop xrdp +systemctl stop xrdp-sesman + +# Configure the installed XRDP ini files. +# use vsock transport. +sed -i_orig -e 's/port=3389/port=vsock:\/\/-1:3389/g' /etc/xrdp/xrdp.ini +# use rdp security. +sed -i_orig -e 's/security_layer=negotiate/security_layer=rdp/g' /etc/xrdp/xrdp.ini +# remove encryption validation. +sed -i_orig -e 's/crypt_level=high/crypt_level=none/g' /etc/xrdp/xrdp.ini +# disable bitmap compression since its local its much faster +sed -i_orig -e 's/bitmap_compression=true/bitmap_compression=false/g' /etc/xrdp/xrdp.ini + +# Add script to setup the ubuntu session properly +if [ ! -e /etc/xrdp/startubuntu.sh ]; then +cat >> /etc/xrdp/startubuntu.sh << EOF +#!/bin/sh +export GNOME_SHELL_SESSION_MODE=ubuntu +export XDG_CURRENT_DESKTOP=ubuntu:GNOME +exec /etc/xrdp/startwm.sh +EOF +chmod a+x /etc/xrdp/startubuntu.sh +fi + +# use the script to setup the ubuntu session +sed -i_orig -e 's/startwm/startubuntu/g' /etc/xrdp/sesman.ini + +# rename the redirected drives to 'shared-drives' +sed -i -e 's/FuseMountName=thinclient_drives/FuseMountName=shared-drives/g' /etc/xrdp/sesman.ini + +# Changed the allowed_users +sed -i_orig -e 's/allowed_users=console/allowed_users=anybody/g' /etc/X11/Xwrapper.config + +# Blacklist the vmw module +if [ ! -e /etc/modprobe.d/blacklist-vmw_vsock_vmci_transport.conf ]; then + echo "blacklist vmw_vsock_vmci_transport" > /etc/modprobe.d/blacklist-vmw_vsock_vmci_transport.conf +fi + +#Ensure hv_sock gets loaded +if [ ! -e /etc/modules-load.d/hv_sock.conf ]; then + echo "hv_sock" > /etc/modules-load.d/hv_sock.conf +fi + +# Configure the policy xrdp session +cat > /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla <