Enhanced Session
Правим сохраненные настройки подключения к сессии VM
Если мы сохранили настройки коннекта к какой-то VM, а теперь нам необходимо их изменить - сделать это можно из PowerShell следующим образом:
VMConnect.exe HYPERV_SERVER HYPERV_VM /edit
Настройка Enhanced Session для Ubuntu 22.04
Обновляем apt
apt update && apt upgrade -y
Устанавливаем hv_kvp драйвер HYPER-V
apt install -y linux-tools-virtual${HWE} apt install -y linux-cloud-tools-virtual${HWE}
Устанавливаем xRDP
apt install -y xrdp
Настраиваем автостарт xRDP
systemctl stop xrdp systemctl stop xrdp-sesman
Правим конфиги xRDP следующим образом:
sed -i_orig -e 's/port=3389/port=vsock:\/\/-1:3389/g' /etc/xrdp/xrdp.ini sed -i_orig -e 's/security_layer=negotiate/security_layer=rdp/g' /etc/xrdp/xrdp.ini sed -i_orig -e 's/crypt_level=high/crypt_level=none/g' /etc/xrdp/xrdp.ini sed -i_orig -e 's/bitmap_compression=true/bitmap_compression=false/g' /etc/xrdp/xrdp.ini
Пилим скрипт для настрройки сессии
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
Устанавливаем скрипт
sed -i_orig -e 's/startwm/startubuntu/g' /etc/xrdp/sesman.ini
Делаем ренейм дисков в общие
sed -i -e 's/FuseMountName=thinclient_drives/FuseMountName=shared-drives/g' /etc/xrdp/sesman.ini sed -i_orig -e 's/allowed_users=console/allowed_users=anybody/g' /etc/X11/Xwrapper.config
Настраиваем запуск vmw, если необходимо
echo "blacklist vmw_vsock_vmci_transport" > /etc/modprobe.d/blacklist-vmw_vsock_vmci_transport.conf
Настраиваем запуск hv_sock
echo "hv_sock" > /etc/modules-load.d/hv_sock.conf
Настраиваем политику для xRDP сессий.
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 systemctl daemon-reload systemctl start xrdp
После данных действий необходимо выключить нашу VM.
Дальнейшие действия выполняем на хост-системе с HYPER-V.
Проверям, включена ли поддержка Enhanced session в принципе - на уровне политики HYPER-V.
Get-VMHost | select Name, EnableEnhancedSessionMode
Если нет - включаем
Set-VMHost -EnableEnhancedSessionMode $true
Переключаем нашу VM с VMBus на HVSocket
Set-VM -VMName AdronsPrimaryWorkstation -EnhancedSessionTransportType HvSocket
Теперь Enhanced session должна заработать.
Внимание, если при подключении через Enhanced session мы вводим данные на экране Xorg, но никакого успешного логина (или ошибки) нет - вероятно в Ubuntu УЖЕ залогинен пользователь, под которым мы пытаемся войти. Для работы сессии необходимо РАЗЛОГИНИТЬСЯ сначала, а потом снова зайти через Enhanced session и Xorg.