
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 — 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 allerede er forhåndsinstallert, så er det mer usikkert med andre distribusjoner — for eksempel fikk forfatteren 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 hypervVi aktiverer VSS-tjenester, datadeling % for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done
Installasjon av XRDPlinux-vm-tools
Depo % 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/archVed skrivelsen av denne artikkelen er den nyeste versjonen av XRDP, som installeres med skriptet makepkg.sh, tilgjengelig i depotet, 0.9.11, 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 , 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.gitVi 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 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 -0600Vi 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.shSkriptet 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_nodelayLa 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" > ~/ .xinitrcSteng 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 HvSocketStart 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.


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

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:

Utklippstavlen fungerer som den skal. Videresending av skrivere til innholdet er ikke mulig, det støttes ikke bare, men . 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:
- Feilrapporter på GitHub: ,
Kilde: habr.com
