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:
% 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:
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 brutenvsock://-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):
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:
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:
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.
Låt oss ansluta. Vi kommer att se XRDP-inloggningsfönstret:
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:
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.iniport på tcp://: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.