Last active
June 30, 2020 10:18
-
-
Save maxprehl/67a1546e73b2c463872d1132de3fa17d to your computer and use it in GitHub Desktop.
Bash script for Pop_OS! client in Hyper-V Windows Host, downloads and configures Xrdp for a Hyper-V Enhanced Session.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# This script is for Pop!_OS 20.04 to download and install XRDP+XORGXRDP via | |
# source. | |
# | |
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 | |
apt install -y linux-cloud-tools-virtual | |
# 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=true/use_vsock=false/g' /etc/xrdp/xrdp.ini | |
# use virtual port. | |
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 pop session properly | |
if [ ! -e /etc/xrdp/startpop.sh ]; then | |
cat >> /etc/xrdp/startpop.sh << EOF | |
#!/bin/sh | |
export GNOME_SHELL_SESSION_MODE=pop | |
export XDG_CURRENT_DESKTOP=pop:GNOME | |
exec /etc/xrdp/startwm.sh | |
EOF | |
chmod a+x /etc/xrdp/startpop.sh | |
fi | |
# use the script to setup the pop session | |
sed -i_orig -e 's/startwm/startpop/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 | |
############################################################################### | |
echo "Install is nearly complete. Do the following:\n" | |
echo "1. Shut down this VM" | |
echo "2. On the host Windows system, edit and run the following command from an Administrator Powershell prompt:" | |
echo " $ Set-VM -VMName <Your-VM-Name-Here> -EnhancedSessionTransportType HvSocket" | |
echo "3. Then restart the virtual machine to begin using XRDP." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
How to use
1. Download and execute the script:
2. Shut down the VM.
3. On the host Windows system, edit and run the following command from an
Administrator
Powershell prompt:4. Restart the VM
You should be greeted with the Hyper-V enhanced session display size prompt, followed by the blue xrdp login screen.
(If not, try running the script again and rebooting once more.)
5. Use the same username and password from the VM system.
Extra Resources:
Microsoft linux-vm-tools repo.
Hinara Ubuntu 20.04 install script.
Hayden Barnes Twitter thread.
Jamie Phillips Pop 19.04 Blog Post
Francesco Tonini Ubuntu 20.04 Blog Post