Aktiverer Enhanced Session Mode for Arch Linux-gjester i Hyper-V

Aktiverer Enhanced Session Mode for Arch Linux-gjester i Hyper-V

Bruken av virtuelle maskiner på Linux i Hyper-V er i utgangspunktet litt mindre komfortabelt enn med gjeste Windows-maskiner. Årsaken til dette er at Hyper-V opprinnelig ikke var ment for skrivebordsbruk; man kan ikke bare installere gjesteverktøypakken og få fungerende grafikkakselerasjon, utklippstavle, delte mapper og andre livsgoder, slik som i VirtualBox.

Hyper-V tilbyr flere integrasjonstjenester — så gjestene kan benytte seg av vertens Volume Shadow Copy Service (VSS), man kan sende slukningssignal til gjestene, gjestene kan synkronisere systemtiden med virtualiseringsverten, og det er mulig å overføre filer fra verten til den virtuelle maskinen (Copy-VMFile i PowerShell). For noen gjesteoperativsystemer, inkludert Windows, er det tilgjengelig Enhanced Session Mode i Virtual Machine Connection-applikasjonen (vmconnect.exe). Den kjører over RDP-protokollen og lar deg koble til diskstasjoner og skrivere i den virtuelle maskinen, samt bruke en delt utklippstavle.

Enhanced Session Mode fungerer som standard i Windows i Hyper-V rett etter installasjonen. Med Linux-gjester må man installere en RDP-server som støtter vsock (et spesiallaget virtuelt nettverksadresseområde i Linux for kommunikasjon med hypervisoren). Dersom for Ubuntu er det en spesiallaget mal for virtuelle maskiner i VMCreate-applikasjonen som følger med Hyper-V på skrivebordsversjoner av Windows, der en fungerende RDP-server med vsock XRDP allerede er forhåndsinstallert, så er det mer usikkert med andre distribusjoner — for eksempel fikk forfatteren denne posten til å aktivere ESM i Fedora. Her aktiverer vi Enhanced Session Mode for den virtuelle maskinen med Arch Linux.

Installasjon av integrasjonstjenester

Her er alt mer eller mindre enkelt, vi trenger bare å installere pakken hyperv fra fellesskapsrepoet:

% sudo pacman -S hyperv

Vi aktiverer VSS-tjenester, datadeling og filoverføring: % for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done

Installasjon av XRDP

linux-vm-tools

Depo på GitHub tilbyr skripter som automatiserer installasjons- og konfigurasjonsprosessen for XRDP, for Arch Linux og Ubuntu. Vi installerer Git, hvis det ikke allerede er installert, sammen med kompilatoren og annen programvare for manuelle bygg, deretter kloner vi depotet: % 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

Ved skrivelsen av denne artikkelen er den nyeste versjonen av XRDP, som installeres med skriptet makepkg.sh, tilgjengelig i depotet, 0.9.11, hvori parsing av vsock://-adresser er ødelagt, så vi må installere XRDP fra Git og Xorg-driveren manuelt fra AUR. Lappen til XRDP som tilbys i AUR er også litt utdatert, så vi må redigere PKGBUILD-filen og lappen manuelt.

Vi kloner depotene med PKGBUILD-er fra AUR (vanligvis automatiseres denne prosedyren sammen med byggingen av programmer som yay, men forfatteren fulgte prosessen på et rent system):

% 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 åpner filen PKGBUILD med en teksteditor.

Vi redigerer byggparametrene. PKGBUILD for å bygge XRDP fra Git inkluderer ikke støtte for vsock under byggingen, så vi aktiverer 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 lappen arch-config.diff, som endrer enheter og oppstartsskripter for XRDP til filstiene som brukes i Arch Linux, inneholder også en lapp til skriptet instfiles/xrdp.sh, som ved skrivelsen av denne artikkelen ble fjernet fra XRDP-distribusjonen, så lappen må 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
- ### SLUTT 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

Vi bygger og installerer pakken med kommandoen % makepkg --skipchecksums -si (nøkkelen --skipchecksums er nødvendig for å deaktivere kontrollsummesjekken av kildene, siden vi redigerte dem manuelt).

Vi går til katalogen xorgxrdp-devel-git, hvoretter vi enkelt bygger pakken med kommandoen % makepkg -si.

Vi går til katalogen linux-vm-tools/arch og kjører skriptet install-config.sh, som installerer innstillingene for XRDP, PolicyKit og PAM:

% sudo ./install-config.sh

Skriptet installerer den utdaterte innstillingen use_vsock, som blir ignorert fra versjon 0.9.11, så vi redigerer konfigurasjonsfilen /etc/xrdp/xrdp.ini manuelt:

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

 ; 'port' oven bør tilkobles med vsock i stedet for tcp
 ; bruk dette kun med tall alene i port ovenfor
 ; foretrekker å bruke vsock://: ovenfor
-use_vsock=true
+;use_vsock=true

 ; reguler om den lytte sokkelen bruker socket-alternativet tcp_nodelay

La oss legge til følgende kode i filen ~/ .xinitrc kjør din foretrukne vindusbehandler / skrivebordsmiljø, som skal kjøres ved oppstart av X-serveren:

% echo "exec i3" > ~/ .xinitrc

Steng ned den virtuelle maskinen. Aktiver vsock-transport for den virtuelle maskinen ved å kjøre følgende kommando i PowerShell som administrator:

PS Admin > Set-VM -VMName MASKIN_NAVN -EnhancedSessionTransportType HvSocket

Start den virtuelle maskinen igjen.

Tilkobling

Når systemet er startet, vil XRDP-tjenesten starte opp, og applikasjonen vmconnect vil oppdage dette og en ny oppføring vil bli tilgjengelig i menyen Vis -> Forbedret Økt. Når dette alternativet er valgt, vil vi bli bedt om å sette skjermoppløsningen, og på fanen Lokale Resurser i den åpne dialogen, kan vi velge enheter som er videresendt inn i RDP-økten.

Aktiverer Enhanced Session Mode for Arch Linux-gjester i Hyper-V
Aktiverer Enhanced Session Mode for Arch Linux-gjester i Hyper-V

Vi kobler oss til. Vi ser XRDP-påloggingsvinduet:

Aktiverer Enhanced Session Mode for Arch Linux-gjester i Hyper-V

Vi skriver inn vårt brukernavn og passord.

Bruken

Fordelen med disse manipuleringene er merkbar: RDP-økten fungerer mye mer responsivt enn ved å bruke en virtuell skjerm uten Forbedret Økt. De disker som er videresendt inn i VM via RDP er tilgjengelige i katalogen ${HOME}/shared-drives:

Aktiverer Enhanced Session Mode for Arch Linux-gjester i Hyper-V

Utklippstavlen fungerer som den skal. Videresending av skrivere til innholdet er ikke mulig, det støttes ikke bare, men ødelegger videresending av diskene. Lyd fungerer heller ikke, men dette var ikke nødvendig for forfatteren. For å fange tastekombinasjoner som Alt+Tab, må vmconnect være i fullskjermmodus.

Hvis det av en eller annen grunn er ønskelig å bruke Windows RDP-klienten i stedet for applikasjonen vmconnect, eller for eksempel koble til denne maskinen fra en annen maskin, må du endre i filen /etc/xrdp/xrdp.ini port En funksjon har blitt tcp://:3389. Hvis den virtuelle maskinen er koblet til Default Switch og får nettverksinnstillinger via DHCP, kan du koble til den fra verten via adressen maskin_navn.mshome.net. Du kan bare gå inn i TTY fra applikasjonen vmconnect, etter å ha slått av Forbedret Modus.

Brukte kilder:

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

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster