
Bruk av virtuelle maskiner på Linux i Hyper-V er rett ut av esken en litt mindre komfortabel opplevelse enn med gjesteprogrammer Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.
Hyper-V selv gir - 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 в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (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.
Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер allerede forhåndsinstallert, så med andre distribusjoner er det mindre og mindre klart - for eksempel forfatteren получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.
Installere integrasjonstjenester
Alt er mer eller mindre enkelt her, vi trenger bare å installere pakken hyperv fra fellesskapsdepot:
% sudo pacman -S hypervAktiver VSS-tjenester, utveksling og filer:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneXRDP-installasjon
oppbevaringssted на GitHub предоставляет скрипты, автоматизирующие процесс установки и настройки XRDP, для Arch Linux и Ubuntu. Установим Git, если он еще не установлен, вместе с компилятором и другим софтом для ручных сборок, после чего склонируем репозиторий:
% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/archNår dette skrives, den siste utgivelsen av XRDP, som er installert av skriptet makepkg.shforeslått i depotet er 0.9.11, vsock://-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 , men forfatteren gjorde hele denne prosedyren på et rent system):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitLa oss installere selve XRDP først. La oss åpne filen PKGBUILD hvilken som helst tekstredigerer.
La oss redigere byggeparameterne. PKGBUILD for å bygge XRDP fra Git inkluderer ikke vsock-støtte i bygget, så la oss 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 en lapp arch-config.diff, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту instfiles/xrdp.sh, som i skrivende stund fra XRDP-distribusjonen, så oppdateringen 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 @@
- # Description: starts 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 -0600Bygg 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.shSkriptet 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_nodelayLegg til i fil ~/.xinitrc starte ditt foretrukne vindusbehandler/skrivebordsmiljø, som vil bli utført når X-serveren startes:
% echo "exec i3" > ~/.xinitrcLa oss slå av den virtuelle maskinen. Aktiver vsock-transport for VM ved å kjøre følgende kommando i PowerShell som administrator:
PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocketLa oss slå på den virtuelle maskinen igjen.
Подключение
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å . Lyden fungerer heller ikke, men forfatteren trengte det ikke. For å fange hurtigtaster som Alt + Tab, må du utvide vmconnect til fullskjerm.
Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini port 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.
Brukte kilder:
- Feilrapporter på GitHub: ,
Kilde: www.habr.com
