Aktivera förbättrat sessionsläge för Arch Linux-gäster i Hyper-V

Aktivera förbättrat sessionsläge för Arch Linux-gäster i Hyper-V

Använda virtuella maskiner på Linux i Hyper-V är direkt ur lådan en något mindre bekväm upplevelse än med gäst Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.

Hyper-V själv tillhandahåller flera integrationstjänster - så gäster kan använda skuggkopieringstjänsten (VSS) för värden, gäster kan skicka en avstängningssignal, gäster kan synkronisera systemtiden med virtualiseringsvärden, filer kan utbytas med den virtuella maskinen från värden (Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (vmconnect.exe) Enhanced Session Mode är tillgängligt, som fungerar via RDP-protokollet och låter dig vidarebefordra diskenheter och skrivare till den virtuella maskinen, samt använda det delade urklippet.

Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер xrdp redan förinstallerat, sedan med andra distributioner är det mindre och mindre tydligt - till exempel författaren den här posten получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.

Installera integrationstjänster

Allt är mer eller mindre enkelt här, vi behöver bara installera paketet hyperv från community-repository:

% sudo pacman -S hyperv

Aktivera VSS-tjänster, utbyte metadata och filer:

% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done

XRDP-installation

förvaret linux-vm-verktyg на GitHub предоставляет скрипты, автоматизирующие процесс установки и настройки XRDP, для Arch Linux и Ubuntu. Установим Git, если он еще не установлен, вместе с компилятором и другим софтом для ручных сборок, после чего склонируем репозиторий:

% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/arch

När detta skrivs, den senaste versionen av XRDP, som installeras av skriptet makepkg.shföreslagen i förvaret är 0.9.11, där parsningen är bruten vsock://-adresser, så du måste installera XRDP från Git och Xorg-drivrutinen för det från AUR manuellt. Patchen för XRDP som erbjuds i AUR är också något föråldrad, så du måste redigera PKGBUILD och patchen manuellt.

Vi klonar arkiven med PKGBUILDs från AUR (vanligtvis är denna procedur, tillsammans med monteringen, automatiserad av program som Jippie, men författaren gjorde hela denna procedur på ett rent system):

% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.git

Låt oss installera själva XRDP först. Låt oss öppna filen PKGBUILD vilken textredigerare som helst.

Låt oss redigera byggparametrarna. PKGBUILD för att bygga XRDP från Git inkluderar inte vsock-stöd i bygget, så låt oss aktivera det själva:

 build() {
   cd $pkgname
   ./configure --prefix=/usr 
               --sysconfdir=/etc 
               --localstatedir=/var 
               --sbindir=/usr/bin 
               --with-systemdsystemdunitdir=/usr/lib/systemd/system 
               --enable-jpeg 
               --enable-tjpeg 
               --enable-fuse 
               --enable-opus 
               --enable-rfxcodec 
               --enable-mp3lame 
-              --enable-pixman
+              --enable-pixman 
+              --enable-vsock
   make V=0
 }

I en lapp arch-config.diff, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту instfiles/xrdp.sh, som i skrivande stund togs bort från XRDP-distributionen, så patchen måste redigeras manuellt:

  [Install]
  WantedBy=multi-user.target
-diff -up src/xrdp-devel-git/instfiles/xrdp.sh.orig src/xrdp-devel-git/instfiles/xrdp.sh
---- src/xrdp-devel-git/instfiles/xrdp.sh.orig  2017-08-30 00:27:28.000000000 -0600
-+++ src/xrdp-devel-git/instfiles/xrdp.sh   2017-08-30 00:28:00.000000000 -0600
-@@ -17,7 +17,7 @@
- # Description: starts xrdp
- ### END INIT INFO
- 
--SBINDIR=/usr/local/sbin
-+SBINDIR=/usr/bin
- LOG=/dev/null
- CFGDIR=/etc/xrdp
- 
 diff -up src/xrdp-devel-git/sesman/startwm.sh.orig src/xrdp-devel-git/sesman/startwm.sh
 --- src/xrdp-devel-git/sesman/startwm.sh.orig  2017-08-30 00:27:30.000000000 -0600

Bygg och installera paketet med kommandot % makepkg --skipchecksums -si (nyckel --skipchecksums behövs för att inaktivera kontrollsummaverifiering av källfiler, eftersom vi redigerade dem manuellt).

Låt oss gå till katalogen xorgxrdp-devel-git, varefter vi helt enkelt bygger paketet med kommandot % makepkg -si.

Låt oss gå till katalogen linux-vm-tools/arch och kör skriptet install-config.sh, som ställer in XRDP, PolicyKit och PAM-inställningar:

% sudo ./install-config.sh

Skriptet installerar äldre inställning use_vsock, som ignoreras sedan version 0.9.11, så låt oss redigera konfigurationsfilen /etc/xrdp/xrdp.ini manuellt:

 ;   port=vsock://<cid>:<port>
-port=3389
+port=vsock://-1:3389

 ; 'port' above should be connected to with vsock instead of tcp
 ; use this only with number alone in port above
 ; prefer use vsock://<cid>:<port> above
-use_vsock=true
+;use_vsock=true

 ; regulate if the listening socket use socket option tcp_nodelay

Lägg till i fil ~/.xinitrc starta din föredragna fönsterhanterare/skrivbordsmiljö, som kommer att köras när X-servern startas:

% echo "exec i3" > ~/.xinitrc

Låt oss stänga av den virtuella maskinen. Aktivera vsock-transporten för den virtuella datorn genom att köra följande kommando i PowerShell som administratör:

PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocket

Låt oss slå på den virtuella maskinen igen.

Подключение

Så snart XRDP-tjänsten startar efter att systemet startar kommer vmconnect-applikationen att avgöra detta och menyalternativet blir tillgängligt. Visa -> Förbättrad session. När du väljer det här objektet kommer vi att uppmanas att ställa in skärmupplösningen och på fliken Lokala resurser i dialogrutan som öppnas kan du välja de enheter som vidarebefordras i RDP-sessionen.

Aktivera förbättrat sessionsläge för Arch Linux-gäster i Hyper-V
Aktivera förbättrat sessionsläge för Arch Linux-gäster i Hyper-V

Låt oss ansluta. Vi kommer att se XRDP-inloggningsfönstret:

Aktivera förbättrat sessionsläge för Arch Linux-gäster i Hyper-V

Ange ditt användarnamn och lösenord.

Använd

Vinsten från dessa manipulationer är märkbar: RDP-sessionen fungerar mycket mer responsiv än när man arbetar med en virtuell skärm utan Enhanced Session. Diskarna som vidarebefordras inuti den virtuella datorn via RDP är tillgängliga i katalogen ${HOME}/shared-drives:

Aktivera förbättrat sessionsläge för Arch Linux-gäster i Hyper-V

Urklippet fungerar bra. Du kan inte kasta in skrivare, detta stöds inte bara inte, utan också bryter diskvidarebefordran. Ljudet fungerar inte heller, men författaren behövde det inte. För att fånga kortkommandon som Alt + Tab måste du expandera vmconnect till helskärm.

Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini porttcp://:3389. Om den virtuella maskinen är ansluten till Default Switch och tar emot nätverksinställningar via DHCP, kan du ansluta till den från värden på название_машины.mshome.net. Du kan bara logga in på TTY från vmconnect-applikationen genom att stänga av förbättrat läge.

Använda källor:

  1. Hyper-V Arch Wiki
  2. Buggrapporter på GitHub: 1, 2

Källa: will.com

Köp pålitlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster