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

Att använda virtuella Linux-maskiner i Hyper-V ur lådan är något mindre bekvämt än med gäst-Windows-maskiner. Anledningen till detta är att Hyper-V ursprungligen inte var avsedd för skrivbordsanvändning; du kan inte bara gå vidare och installera gästtilläggspaketet och få fungerande grafikacceleration, urklipp, delade kataloger och andra glädjeämnen i livet, som det händer i 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 i PowerShell). För vissa gästoperativsystem, inklusive, naturligtvis, Windows, i applikationen 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.

Förbättrat sessionsläge fungerar direkt efter installationen på Windows i Hyper-V. Med gäster på Linux måste du installera en RDP-server som stöder vsock (ett speciellt virtuellt nätverksadressutrymme i Linux utformat för att kommunicera med hypervisorn). Om för Ubuntu har VMCreate-applikationen som följer med Hyper-V på skrivbordsversioner av Windows en speciell förberedd virtuell maskinmall där en RDP-server körs med vsock xrdp redan förinstallerat, sedan med andra distributioner är det mindre och mindre tydligt - till exempel författaren den här posten det visade sig aktivera ESM i Fedora. Här aktiverar vi också Enhanced Session Mode för Arch Linux virtuella maskin.

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 på GitHub tillhandahåller skript som automatiserar processen att installera och konfigurera XRDP för Arch Linux och Ubuntu. Installera Git, om det inte redan är installerat, tillsammans med kompilatorn och annan programvara för manuella konstruktioner, och klona sedan förvaret:

% 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, som redigerar enheter och XRDP-startskript under sökvägarna till filer som används i Arch Linux, innehåller bland annat en patch till skriptet 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. utsikt -> 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.

Om det av någon anledning finns en önskan att använda den inbyggda RDP-klienten i Windows istället för vmconnect-applikationen eller till exempel ansluta till den här maskinen från en annan dator, måste du ändra filen /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

Lägg en kommentar