
Använda virtuella maskiner på Linux i Hyper-V är direkt ur lådan en något mindre bekväm upplevelse än med gäst Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.
Hyper-V själv tillhandahåller - så gäster kan använda skuggkopieringstjänsten (VSS) för värden, gäster kan skicka en avstängningssignal, gäster kan synkronisera systemtiden med virtualiseringsvärden, filer kan utbytas med den virtuella maskinen från värden (Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (vmconnect.exe) Enhanced Session Mode är tillgängligt, som fungerar via RDP-protokollet och låter dig vidarebefordra diskenheter och skrivare till den virtuella maskinen, samt använda det delade urklippet.
Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер redan förinstallerat, sedan med andra distributioner är det mindre och mindre tydligt - till exempel författaren получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.
Installera integrationstjänster
Allt är mer eller mindre enkelt här, vi behöver bara installera paketet hyperv från community-repository:
% sudo pacman -S hypervAktivera VSS-tjänster, utbyte och filer:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneXRDP-installation
förvaret на 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 detta skrivs, den senaste versionen av XRDP, som installeras av skriptet makepkg.shföreslagen i förvaret är 0.9.11, vsock://-adresser, så du måste installera XRDP från Git och Xorg-drivrutinen för det från AUR manuellt. Patchen för XRDP som erbjuds i AUR är också något föråldrad, så du måste redigera PKGBUILD och patchen manuellt.
Vi klonar arkiven med PKGBUILDs från AUR (vanligtvis är denna procedur, tillsammans med monteringen, automatiserad av program som , men författaren gjorde hela denna procedur på ett rent system):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitLåt oss installera själva XRDP först. Låt oss öppna filen PKGBUILD vilken textredigerare som helst.
Låt oss redigera byggparametrarna. PKGBUILD för att bygga XRDP från Git inkluderar inte vsock-stöd i bygget, så låt oss aktivera det själva:
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 skrivande stund från XRDP-distributionen, så patchen måste redigeras manuellt:
[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 och installera paketet med kommandot % makepkg --skipchecksums -si (nyckel --skipchecksums behövs för att inaktivera kontrollsummaverifiering av källfiler, eftersom vi redigerade dem manuellt).
Låt oss gå till katalogen xorgxrdp-devel-git, varefter vi helt enkelt bygger paketet med kommandot % makepkg -si.
Låt oss gå till katalogen linux-vm-tools/arch och kör skriptet install-config.sh, som ställer in XRDP, PolicyKit och PAM-inställningar:
% sudo ./install-config.shSkriptet installerar äldre inställning use_vsock, som ignoreras sedan version 0.9.11, så låt oss redigera konfigurationsfilen /etc/xrdp/xrdp.ini manuellt:
; 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_nodelayLägg till i fil ~/.xinitrc starta din föredragna fönsterhanterare/skrivbordsmiljö, som kommer att köras när X-servern startas:
% echo "exec i3" > ~/.xinitrcLåt oss stänga av den virtuella maskinen. Aktivera vsock-transporten för den virtuella datorn genom att köra följande kommando i PowerShell som administratör:
PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocketLåt oss slå på den virtuella maskinen igen.
Подключение
Så snart XRDP-tjänsten startar efter att systemet startar kommer vmconnect-applikationen att avgöra detta och menyalternativet blir tillgängligt. Visa -> Förbättrad session. När du väljer det här objektet kommer vi att uppmanas att ställa in skärmupplösningen och på fliken Lokala resurser i dialogrutan som öppnas kan du välja de enheter som vidarebefordras i RDP-sessionen.


Låt oss ansluta. Vi kommer att se XRDP-inloggningsfönstret:

Ange ditt användarnamn och lösenord.
Använd
Vinsten från dessa manipulationer är märkbar: RDP-sessionen fungerar mycket mer responsiv än när man arbetar med en virtuell skärm utan Enhanced Session. Diskarna som vidarebefordras inuti den virtuella datorn via RDP är tillgängliga i katalogen ${HOME}/shared-drives:

Urklippet fungerar bra. Du kan inte kasta in skrivare, detta stöds inte bara inte, utan också . Ljudet fungerar inte heller, men författaren behövde det inte. För att fånga kortkommandon som Alt + Tab måste du expandera vmconnect till helskärm.
Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini port på tcp://:3389. Om den virtuella maskinen är ansluten till Default Switch och tar emot nätverksinställningar via DHCP, kan du ansluta till den från värden på название_машины.mshome.net. Du kan bara logga in på TTY från vmconnect-applikationen genom att stänga av förbättrat läge.
Använda källor:
- Buggrapporter på GitHub: ,
Källa: will.com
