Aktiver Enhanced Session Mode for Arch Linux-gjester i Hyper-V
Å bruke virtuelle Linux-maskiner i Hyper-V ut av boksen er noe mindre behagelig enn med gjeste-Windows-maskiner. Grunnen til dette er at Hyper-V opprinnelig ikke var ment for skrivebordsbruk; du kan ikke bare gå videre og installere gjestetilleggspakken og få brukbar grafikkakselerasjon, utklippstavle, delte kataloger og andre gleder i livet, slik det skjer i VirtualBox.
Hyper-V selv gir flere integrasjonstjenester - så gjester kan bruke skyggekopitjenesten (VSS) til verten, gjester kan sende et avslutningssignal, gjester kan synkronisere systemtiden med virtualiseringsverten, filer kan utveksles med den virtuelle maskinen fra verten (Copy-VMFile i PowerShell). For noen gjesteoperativsystemer, inkludert, selvfølgelig, Windows, i Virtual Machine Connection-applikasjonen (vmconnect.exe) Enhanced Session Mode er tilgjengelig, som fungerer via RDP-protokollen og lar deg videresende diskenheter og skrivere til den virtuelle maskinen, samt bruke den delte utklippstavlen.
Forbedret øktmodus fungerer rett etter installasjonen på Windows i Hyper-V. Med gjester på Linux må du installere en RDP-server som støtter vsock (et spesielt virtuelt nettverksadresserom i Linux designet for å kommunisere med hypervisoren). Hvis for Ubuntu, har VMCreate-applikasjonen som følger med Hyper-V på desktop-utgaver av Windows en spesiell forberedt virtuell maskinmal der en RDP-server kjører med vsock XRDP allerede forhåndsinstallert, så med andre distribusjoner er det mindre og mindre klart - for eksempel forfatteren denne posten det viste seg å aktivere ESM i Fedora. Her aktiverer vi også Enhanced Session Mode for den virtuelle Arch Linux-maskinen.
Installere integrasjonstjenester
Alt er mer eller mindre enkelt her, vi trenger bare å installere pakken hyperv fra fellesskapsdepot:
% sudo pacman -S hyperv
Aktiver VSS-tjenester, utveksling metadata og filer:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done
XRDP-installasjon
oppbevaringssted linux-vm-verktøy på GitHub gir skript som automatiserer prosessen med å installere og konfigurere XRDP for Arch Linux og Ubuntu. Installer Git, hvis det ikke allerede er installert, sammen med kompilatoren og annen programvare for manuelle bygg, og klon deretter depotet:
Når dette skrives, den siste utgivelsen av XRDP, som er installert av skriptet makepkg.shforeslått i depotet er 0.9.11, der parsing er bruttvsock://-adresser, så du må installere XRDP fra Git og Xorg-driveren for det fra AUR manuelt. Patchen for XRDP som tilbys i AUR er også litt utdatert, så du må redigere PKGBUILD og patchen manuelt.
Vi kloner depotene med PKGBUILD-er fra AUR (vanligvis er denne prosedyren, sammen med sammenstillingen, automatisert av programmer som Jippi, men forfatteren gjorde hele denne prosedyren på et rent system):
I en lapp arch-config.diff, som redigerer enheter og XRDP-oppstartsskript under banene til filer som brukes i Arch Linux, inneholder blant annet en oppdatering til skriptet instfiles/xrdp.sh, som i skrivende stund var fjernet fra XRDP-distribusjonen, så oppdateringen må redigeres manuelt:
Bygg og installer pakken med kommandoen % makepkg --skipchecksums -si (nøkkel --skipchecksums er nødvendig for å deaktivere kontrollsumverifisering av kildefiler, siden vi redigerte dem manuelt).
La oss gå til katalogen xorgxrdp-devel-git, hvoretter vi ganske enkelt bygger pakken med kommandoen % makepkg -si.
La oss gå til katalogen linux-vm-tools/arch og kjør skriptet install-config.sh, som setter XRDP, PolicyKit og PAM-innstillinger:
% sudo ./install-config.sh
Skriptet installerer eldre innstilling use_vsock, som er ignorert siden versjon 0.9.11, så la oss redigere konfigurasjonsfilen /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
Legg til i fil ~/.xinitrc starte ditt foretrukne vindusbehandler/skrivebordsmiljø, som vil bli utført når X-serveren startes:
% echo "exec i3" > ~/.xinitrc
La oss slå av den virtuelle maskinen. Aktiver vsock-transport for VM ved å kjøre følgende kommando i PowerShell som administrator:
Så snart XRDP-tjenesten starter etter at systemet starter, vil vmconnect-applikasjonen bestemme dette og menyelementet blir tilgjengelig. Se -> Forbedret økt. Når du velger dette elementet, vil vi bli bedt om å angi skjermoppløsningen, og på fanen Lokale ressurser i dialogboksen som åpnes, kan du velge enhetene som er videresendt i RDP-økten.
La oss koble til. Vi vil se XRDP-påloggingsvinduet:
Skriv inn brukernavn og passord.
Bruk
Fortjenesten fra disse manipulasjonene er merkbar: RDP-økten fungerer mye mer responsiv enn når du arbeider med en virtuell skjerm uten Enhanced Session. Diskene som videresendes inne i VM via RDP er tilgjengelige i katalogen ${HOME}/shared-drives:
Utklippstavlen fungerer fint. Du kan ikke kaste skrivere inni, dette er ikke bare støttet, men også bryter diskvideresending. Lyden fungerer heller ikke, men forfatteren trengte det ikke. For å fange hurtigtaster som Alt + Tab, må du utvide vmconnect til fullskjerm.
Hvis det av en eller annen grunn er et ønske om å bruke RDP-klienten innebygd i Windows i stedet for vmconnect-applikasjonen eller for eksempel koble til denne maskinen fra en annen maskin, må du endre filen /etc/xrdp/xrdp.iniport på tcp://:3389. Hvis den virtuelle maskinen er koblet til standardsvitsjen og mottar nettverksinnstillinger via DHCP, kan du koble til den fra verten på название_машины.mshome.net. Du kan bare logge på TTY fra vmconnect-applikasjonen ved å slå av forbedret modus.