
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 — 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 allerede er forudinstalleret, så er det mindre entydigt med andre distributioner — således fik forfatteren 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 hypervVi aktiverer VSS, metadataudveksling % for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done
Installation af XRDPlinux-vm-tools
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/archPå 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, 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 , denne proces sammen med bygningen):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitVi 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 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 -0600Lad 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.shScriptet 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_nodelayVi 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" > ~/.xinitrcSluk 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 HvSocketTæ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.


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

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:

Udklipsholderen fungerer fint. Videresendelse af printere er ikke muligt, da det hverken understøttes eller . 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:
- Fejlrapporter på GitHub: ,
Kilde: habr.com
