Aktiver forbedret sessionstilstand for Arch Linux-gæster i Hyper-V

Aktiver forbedret sessionstilstand for Arch Linux-gæster i Hyper-V

At bruge virtuelle Linux-maskiner i Hyper-V ud af boksen er noget mindre behageligt end med gæste-Windows-maskiner. Grunden til dette er, at Hyper-V ikke oprindeligt var beregnet til desktopbrug; du kan ikke bare gå videre og installere gæstetilføjelsespakken og få brugbar grafikacceleration, udklipsholder, delte mapper og andre glæder i livet, som det sker i VirtualBox.

Hyper-V selv giver flere integrationstjenester - så gæster kan bruge værtens skyggekopitjeneste (VSS), gæster kan sende et nedlukningssignal, gæster kan synkronisere systemtiden med virtualiseringsværten, filer kan udveksles med den virtuelle maskine fra værten (Copy-VMFile i PowerShell). For nogle gæsteoperativsystemer, herunder selvfølgelig Windows, i Virtual Machine Connection-applikationen (vmconnect.exe) Enhanced Session Mode er tilgængelig, som fungerer via RDP-protokollen og giver dig mulighed for at videresende diskenheder og printere til den virtuelle maskine, samt bruge det delte udklipsholder.

Forbedret sessionstilstand fungerer lige efter installationen på Windows i Hyper-V. Med gæster på Linux skal du installere en RDP-server, der understøtter vsock (et særligt virtuelt netværksadresserum i Linux designet til at kommunikere med hypervisoren). Hvis det er til Ubuntu, har VMCreate-applikationen, der følger med Hyper-V på desktop-udgaver af Windows, en speciel forberedt virtuel maskine-skabelon, hvor en RDP-server kører med vsock XRDP allerede forudinstalleret, så med andre distributioner er det mindre og mindre klart - for eksempel forfatteren dette indlæg det viste sig at aktivere ESM i Fedora. Her aktiverer vi også Enhanced Session Mode for Arch Linux virtuelle maskine.

Installation af integrationstjenester

Alt er mere eller mindre enkelt her, vi skal bare installere pakken hyperv fra community repository:

% sudo pacman -S hyperv

Aktiver VSS-tjenester, udveksling metadata og filer:

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

XRDP installation

depot linux-vm-værktøjer på GitHub giver scripts, der automatiserer processen med at installere og konfigurere XRDP til Arch Linux og Ubuntu. Installer Git, hvis det ikke allerede er installeret, sammen med compileren og anden software til manuelle builds, og klon derefter depotet:

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

På tidspunktet for dette skrivende, den seneste udgivelse af XRDP, som er installeret af scriptet makepkg.shforeslået i depotet er 0.9.11, hvor parsing er brudt vsock://-adresser, så du skal installere XRDP fra Git og Xorg-driveren til det fra AUR manuelt. Patchen til XRDP, der tilbydes i AUR, er også lidt forældet, så du bliver nødt til at redigere PKGBUILD og patchen manuelt.

Vi kloner lagrene med PKGBUILD'er fra AUR'en (normalt er denne procedure sammen med samlingen automatiseret af programmer som f.eks. yay, men forfatteren udførte hele denne procedure på et rent system):

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

Lad os installere XRDP selv først. Lad os åbne filen PKGBUILD enhver teksteditor.

Lad os redigere byggeparametrene. PKGBUILD til at bygge XRDP fra Git inkluderer ikke vsock-understøttelse i build, så lad os aktivere det selv:

 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 et plaster arch-config.diff, som redigerer enheder og XRDP-startscripts under stierne til filer, der bruges i Arch Linux, indeholder blandt andet en patch til scriptet instfiles/xrdp.sh, som i skrivende stund blev fjernet fra XRDP-distributionen, så patchen skal redigeres manuelt:

  [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

Byg og installer pakken med kommandoen % makepkg --skipchecksums -si (nøgle --skipchecksums er nødvendig for at deaktivere kontrolsumverifikation af kildefiler, da vi har redigeret dem manuelt).

Lad os gå til biblioteket xorgxrdp-devel-git, hvorefter vi blot bygger pakken med kommandoen % makepkg -si.

Lad os gå til biblioteket linux-vm-tools/arch og kør scriptet install-config.sh, som indstiller XRDP, PolicyKit og PAM-indstillinger:

% sudo ./install-config.sh

Script installerer ældre indstillinger use_vsock, som er ignoreret siden version 0.9.11, så lad os redigere konfigurationsfilen /etc/xrdp/xrdp.ini manuelt:

 ;   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

Tilføj til fil ~/.xinitrc lancering af dit foretrukne vindueshåndterings-/skrivebordsmiljø, som vil blive udført, når X-serveren startes:

% echo "exec i3" > ~/.xinitrc

Lad os slukke den virtuelle maskine. Aktiver vsock-transporten for VM'en ved at køre følgende kommando i PowerShell som administrator:

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

Lad os tænde den virtuelle maskine igen.

Подключение

Så snart XRDP-tjenesten starter, efter at systemet er startet, vil vmconnect-applikationen bestemme dette, og menupunktet bliver tilgængeligt. Specifikation -> Forbedret session. Når du vælger dette punkt, bliver vi bedt om at indstille skærmopløsningen og på fanen Lokale ressourcer i dialogboksen, der åbnes, kan du vælge de enheder, der videresendes i RDP-sessionen.

Aktiver forbedret sessionstilstand for Arch Linux-gæster i Hyper-V
Aktiver forbedret sessionstilstand for Arch Linux-gæster i Hyper-V

Lad os forbinde. Vi vil se XRDP-loginvinduet:

Aktiver forbedret sessionstilstand for Arch Linux-gæster i Hyper-V

Indtast dit brugernavn og adgangskode.

Brug

Fortjenesten fra disse manipulationer er mærkbar: RDP-sessionen fungerer meget mere responsivt, end når du arbejder med en virtuel skærm uden Enhanced Session. Diske videresendt inde i VM'en via RDP er tilgængelige i biblioteket ${HOME}/shared-drives:

Aktiver forbedret sessionstilstand for Arch Linux-gæster i Hyper-V

Udklipsholderen fungerer fint. Du kan ikke smide printere inde, dette er ikke kun ikke understøttet, men også afbryder diskvideresendelse. Lyden virker heller ikke, men det havde forfatteren ikke brug for. For at fange tastaturgenveje som Alt + Tab, skal du udvide vmconnect til fuld skærm.

Hvis der af en eller anden grund er et ønske om at bruge RDP-klienten indbygget i Windows i stedet for vmconnect-applikationen eller for eksempel oprette forbindelse til denne maskine fra en anden maskine, så skal du ændre filen /etc/xrdp/xrdp.ini porttcp://:3389. Hvis den virtuelle maskine er forbundet til standardswitchen og modtager netværksindstillinger via DHCP, kan du oprette forbindelse til den fra værten på название_машины.mshome.net. Du kan kun logge ind på TTY fra vmconnect-applikationen ved at slå Udvidet tilstand fra.

Brugte kilder:

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

Kilde: www.habr.com

Tilføj en kommentar