
Naudojant virtualias mašinas Linux „Hyper-V“ iš karto yra šiek tiek mažiau patogus nei svečio aplinkoje Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.
Pati „Hyper-V“ suteikia - taigi, svečiai gali naudotis pagrindinio kompiuterio šešėline kopijavimo paslauga (VSS), svečiai gali siųsti išjungimo signalą, svečiai gali sinchronizuoti sistemos laiką su virtualizacijos priegloba, failais gali būti keičiamasi su virtualia mašina iš pagrindinio kompiuterio (Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (vmconnect.exe) Galimas patobulintas seanso režimas, kuris veikia per RDP protokolą ir leidžia persiųsti disko įrenginius ir spausdintuvus į virtualią mašiną, taip pat naudoti bendrinamą iškarpinę.
Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер jau iš anksto įdiegta, tada su kitais platinimais vis mažiau aišku - pavyzdžiui, autorius получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.
Integravimo paslaugų diegimas
Čia viskas daugiau ar mažiau paprasta, tereikia įdiegti paketą hyperv iš bendruomenės saugyklos:
% sudo pacman -S hypervĮjungti VSS paslaugas, keistis ir failai:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneXRDP diegimas
saugykla на 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/archŠio rašymo metu naujausia XRDP versija, kurią įdiegė scenarijus makepkg.shsaugykloje siūlomas 0.9.11, vsock://-adresai, todėl turite rankiniu būdu įdiegti XRDP iš Git ir Xorg tvarkyklę iš AUR. AUR siūlomas XRDP pleistras taip pat yra šiek tiek pasenęs, todėl turėsite redaguoti PKGBUILD ir pataisą rankiniu būdu.
Mes klonuojame saugyklas su PKGBUILD iš AUR (paprastai šią procedūrą kartu su surinkimu automatizuoja tokios programos kaip , bet autorius atliko visą šią procedūrą švarioje sistemoje):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitPirmiausia įdiegkime patį XRDP. Atidarykime failą PKGBUILD bet koks teksto redaktorius.
Redaguojame kūrimo parametrus. PKGBUILD, skirtas XRDP kūrimui iš Git, neįtraukia vsock palaikymo į kūrimą, todėl įgalinkime jį patys:
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
}Lope arch-config.diff, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту instfiles/xrdp.sh, kuris rašymo metu iš XRDP platinimo, todėl pataisą reikės redaguoti rankiniu būdu:
[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 -0600Sukurkite ir įdiekite paketą naudodami komandą % makepkg --skipchecksums -si (Raktas --skipchecksums reikalingas norint išjungti šaltinio failų kontrolinės sumos patikrinimą, nes juos redagavome rankiniu būdu).
Eikime į katalogą xorgxrdp-devel-git, po kurio mes tiesiog sukuriame paketą su komanda % makepkg -si.
Eikime į katalogą linux-vm-tools/arch ir paleiskite scenarijų install-config.sh, kuriame nustatomi XRDP, PolicyKit ir PAM nustatymai:
% sudo ./install-config.shScenarijus įdiegia seną nustatymą use_vsock, kuris yra ignoruojamas nuo 0.9.11 versijos, todėl redaguojame konfigūracijos failą /etc/xrdp/xrdp.ini rankiniu būdu:
; 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_nodelayPridėti prie failo ~/.xinitrc paleisti pageidaujamą langų tvarkyklę / darbalaukio aplinką, kuri bus vykdoma paleidus X serverį:
% echo "exec i3" > ~/.xinitrcIšjunkime virtualią mašiną. Įgalinkite vsock transportavimą VM, vykdydami šią komandą PowerShell kaip administratorius:
PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocketVėl įjunkite virtualią mašiną.
ryšys
Kai tik XRDP paslauga prasidės po sistemos paleidimo, programa vmconnect tai nustatys ir meniu elementas taps prieinamas. Žiūrėti -> Patobulinta sesija. Kai pasirinksite šį elementą, būsime paraginti nustatyti ekrano skiriamąją gebą ir skirtuke Vietos ištekliai atsidariusiame dialogo lange galite pasirinkti įrenginius, persiunčiamus KPP seanso metu.


Prisijunkime. Pamatysime XRDP prisijungimo langą:

Įveskite savo vartotojo vardą ir slaptažodį.
Naudoti
Šių manipuliacijų nauda yra pastebima: KPP seansas veikia daug greičiau nei dirbant su virtualiu ekranu be patobulinto seanso. Diskai, persiųsti VM viduje per KPP, yra kataloge ${HOME}/shared-drives:

Iškarpinė veikia gerai. Negalite mesti spausdintuvų į vidų, tai ne tik nepalaikoma, bet ir . Garsas irgi neveikia, bet autoriui jo neprireikė. Norėdami užfiksuoti sparčiuosius klavišus, pvz., Alt + Tab, turite išplėsti vmconnect iki viso ekrano.
Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini port apie tcp://:3389. Jei virtualioji mašina prijungta prie numatytojo jungiklio ir tinklo nustatymus gauna per DHCP, galite prisijungti prie jos iš pagrindinio kompiuterio adresu название_машины.mshome.net. Prie TTY galite prisijungti tik iš programos vmconnect išjungę patobulintą režimą.
Naudoti šaltiniai:
- Pranešimai apie klaidas „GitHub“: ,
Šaltinis: www.habr.com
