Vi aktiverer Enhanced Session Mode for Arch Linux-gæster i Hyper-V

Vi aktiverer Enhanced Session Mode for Arch Linux-gæster i Hyper-V

Brug af virtuelle maskiner på Linux i Hyper-V er fra starten en smule mindre behagelig end med Windows-gæstemaskiner. Årsagen hertil er, at Hyper-V oprindeligt ikke blev designet til desktop-brug; man kan ikke bare installere pakken med gæsteudvidelser og få funktionelt grafisk acceleration, delte udklipsholder, delte mapper og andre glæder i livet, som man gør i VirtualBox.

Hyper-V tilbyder selv flere integrationsservices — således kan gæster benytte sig af værtsens Volume Shadow Copy Service (VSS), gæster kan modtage et slukkesignal, gæster kan synkronisere systemtiden med virtualiseringsværten, og fra værten er det muligt at udveksle filer med den virtuelle maskine (Copy-VMFile i PowerShell). For nogle gæsteoperativsystemer, herunder selvfølgelig Windows, er der i applikationen Virtual Machine Connection (vmconnect.exe) tilgængelig Enhanced Session Mode, der fungerer over RDP-protokollen og muliggør at videresende lagringsenheder og printere til den virtuelle maskine samt bruge en delt udklipsholder.

Enhanced Session Mode fungerer fra starten i Windows i Hyper-V straks efter installation. For gæster på Linux skal der installeres en RDP-server, der understøtter vsock (et specielt virtuelt netværksadresseområde i Linux, der er beregnet til kommunikation med hypervisoren). Hvis der til Ubuntu i applikationen VMCreate, der følger med Hyper-V på desktop-udgaver af Windows, findes en særlig forberedt skabelon for den virtuelle maskine, hvori en fungerende RDP-server med vsock XRDP allerede er forudinstalleret, så er det mindre entydigt med andre distributioner — således fik forfatteren af dette indlæg til at aktivere ESM i Fedora. Her aktiverer vi Enhanced Session Mode for den virtuelle maskine med Arch Linux.

Installation af integrationsservices

Her er alt mere eller mindre enkelt, vi skal blot installere pakken hyperv fra community-repositoriet:

% sudo pacman -S hyperv

Vi aktiverer VSS, metadataudveksling og filudveksling: % for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done

Installation af XRDP

linux-vm-tools

Repositoryet på GitHub tilbyder scripts, der automatiserer installations- og konfigurationsprocessen for XRDP til Arch Linux og Ubuntu. Vi installerer Git, hvis det ikke allerede er installeret, sammen med en compiler og anden software til manuelle builds, hvorefter vi kloner repositoryet: % sudo pacman -S git base-devel % git clone https://github.com/microsoft/linux-vm-tools.git % cd linux-vm-tools/arch

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

På tidspunktet for skrivningen af denne artikel er den nyeste version af XRDP, der installeres med scriptet makepkg.sh, som er tilgængeligt i repositoriet, version 0.9.11, hvor parsingen vsock://-adresser er brudt, så du bliver nødt til at installere XRDP fra Git og Xorg-driveren til det manuelt fra AUR. Patchen til XRDP, der tilbydes i AUR, er også en smule forældet, så du skal redigere PKGBUILD og patchen manuelt.

Vi kloner repositorierne med PKGBUILD-filerne fra AUR (normalt automatiserer programmer som yay, denne proces sammen med bygningen):

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

Vi installerer først XRDP. Vi åbner filen PKGBUILD med en hvilken som helst teksteditor.

Vi redigerer byggeparametrene. PKGBUILD til at bygge XRDP fra Git inkluderer ikke støtte til vsock under bygningen, så vi skal 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 patchen arch-config.diff, der justerer enheder og opstartsscripts for XRDP til stierne til filerne, der bruges i Arch Linux, findes der også et patch til scriptet instfiles/xrdp.sh, som på tidspunktet for skrivningen af denne artikel var blevet fjernet fra XRDP-pakken, 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 @@
- # Beskrivelse: starter 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

Lad os bygge og installere pakken med kommandoen % makepkg --skipchecksums -si (nøglen --skipchecksums er nødvendig for at deaktivere kontrolsumskontrollen af kildefilerne, da vi redigerede dem manuelt).

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

Lad os gå til mappen linux-vm-tools/arch og kører scriptet install-config.sh, som installerer indstillingerne for XRDP, PolicyKit og PAM:

% sudo ./install-config.sh

Scriptet installerer den forældede indstilling use_vsock, som ignoreres fra version 0.9.11, så vi skal redigere konfigurationsfilen /etc/xrdp/xrdp.ini manuelt:

 ;   port=vsock://:
-port=3389
+port=vsock://-1:3389

 ; 'port' oven skal forbindes med vsock i stedet for tcp
 ; brug kun dette med nummer alene i port ovenfor
 ; foretræk at bruge vsock://: ovenfor
-use_vsock=true
+;use_vsock=true

 ; regulér om den lyttende socket bruger socket-option tcp_nodelay

Vi tilføjer følgende kode til filen ~/.xinitrc start dit foretrukne vindueshåndterings- / desktop-miljø, som vil blive kørt ved start af X-serveren:

% echo "exec i3" > ~/.xinitrc

Sluk den virtuelle maskine. Aktiver vsock transport til den virtuelle maskine ved at udføre følgende kommando i PowerShell som administrator:

PS Admin > Set-VM -VMName NAVN_PÅ_MASKINE -EnhancedSessionTransportType HvSocket

Tænd den virtuelle maskine igen.

Forbindelse

Når systemet er startet, vil XRDP-tjenesten starte, og vmconnect-applikationen vil registrere dette, hvorefter indstillingen Vis -> Forbedret session. Når denne indstilling vælges, vil vi blive bedt om at indstille skærmopløsningen, og under fanen Lokale ressourcer i den fremkomne dialogboks kan vi vælge de enheder, der videresendes ind i RDP-sessionen.

Vi aktiverer Enhanced Session Mode for Arch Linux-gæster i Hyper-V
Vi aktiverer Enhanced Session Mode for Arch Linux-gæster i Hyper-V

Lad os oprette forbindelse. Vi vil se XRDP-loginvinduet:

Vi aktiverer Enhanced Session Mode for Arch Linux-gæster i Hyper-V

Indtast dit brugernavn og password.

Brugen af

Fordelen ved disse manipulationer er mærkbar: RDP-sessionen fungerer meget mere responsivt end ved brug af en virtuel skærm uden Forbedret session. De diske, der er videresendt til VM'en gennem RDP, er tilgængelige i mappen ${HOME}/shared-drives:

Vi aktiverer Enhanced Session Mode for Arch Linux-gæster i Hyper-V

Udklipsholderen fungerer fint. Videresendelse af printere er ikke muligt, da det hverken understøttes eller ødelægger videresendelsen af diske. Lyd fungerer heller ikke, men det har forfatteren ikke haft brug for. For at tastaturkombinationer som Alt+Tab kan opfanges, skal vmconnect køre i fuld skærm.

Hvis der af en eller anden grund er ønske om at bruge Windows' indbyggede RDP-klient i stedet for vmconnect-applikationen, eller for eksempel at oprette forbindelse til denne maskine fra en anden maskine, skal du ændre i filen /etc/xrdp/xrdp.ini port og få en fungerende kommando. tcp://:3389. Hvis den virtuelle maskine er tilsluttet til Default Switch og modtager netværksindstillinger via DHCP, kan den tilgås fra værten på adressen navn_på_maskine.mshome.net. Du kan kun logge ind på TTY fra vmconnect-applikationen, når Forbedret tilstand er slået fra.

Anvendte kilder:

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

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster