#!/bin/bash | |
# | |
# This script is for Ubuntu 19.10 to download and install XRDP+XORGXRDP via | |
# source. | |
# | |
# Modified from https://github.com/microsoft/linux-vm-tools/blob/master/ubuntu/18.04/install.sh | |
# by Satoshi Mimura (@mimura1133, http://mimumimu.net/) | |
# | |
############################################################################### | |
# Use HWE kernel packages | |
# | |
HWE="" | |
#HWE="-hwe-18.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/use_vsock=false/use_vsock=true/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 | |
cat >> /etc/modprobe.d/blacklist_vmw_vsock_vmci_transport.conf <<EOF | |
blacklist vmw_vsock_vmci_transport | |
EOF | |
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 <<EOF | |
[Allow Colord all Users] | |
Identity=unix-user:* | |
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile | |
ResultAny=no | |
ResultInactive=no | |
ResultActive=yes | |
EOF | |
# reconfigure the service | |
systemctl daemon-reload | |
systemctl start xrdp | |
# | |
# End XRDP | |
############################################################################### | |
############################################################################### | |
# GDM (added code) | |
# | |
# Stop to use wayland. | |
sed -i_orig -e 's/#WaylandEnable=false/WaylandEnable=false/g' /etc/gdm3/custom.conf | |
# | |
# End GDM | |
############################################################################### | |
echo "Install is complete." | |
echo "Reboot your machine to begin using XRDP." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment