
Používanie virtuálnych strojov na Linuxe v Hyper-V z krabice je o niečo menej pohodlné ako s hosťovacími Windows strojmi. Dôvodom je, že Hyper-V bol pôvodne navrhnutý nie na desktopové použitie; nie je možné jednoducho nainštalovať balík hosťovacích doplnkov a získať funkčné grafické akcelerovanie, schránku, zdieľané adresáre a ďalšie radosti zo života, ako to funguje vo VirtualBoxe.
Hyper-V sám poskytuje — tak hostia môžu využívať službu tieňového kopírovania (VSS) hostiteľa, hosťom sa môže zaslať signál na vypnutie, hostia môžu synchronizovať systémový čas s hostiteľom, z hostiteľa je možná výmena súborov s virtuálnym strojom (Copy-VMFile v PowerShell). Pre niektoré hosťovské operačné systémy, medzi ktorými samozrejme patrí aj Windows, je v aplikácii Virtual Machine Connection (vmconnect.exe) dostupný Enhanced Session Mode, ktorý funguje na protokole RDP a umožňuje prenášať do virtuálneho stroja diskové zariadenia a tlačiarne, ako aj využívať zdieľanú schránku.
Enhanced Session Mode z krabice funguje vo Windows v Hyper-V ihneď po inštalácii. S hosťami na Linuxe je potrebné nainštalovať RDP server, ktorý podporuje vsock (špeciálny virtuálny sieťový adresný priestor v Linuxe určený na komunikáciu s hypervízorom). Ak pre Ubuntu v aplikácii VMCreate, dodávanej s Hyper-V na desktopových edíciách Windows, existuje špeciálne pripravená šablóna virtuálneho stroja, v ktorej je fungujúci RDP server s vsock už predinštalovaný, s inými distribúciami je to čoraz menej jednoznačné — autor úspešne zapol ESM vo Fedore. Tu aktivujeme Enhanced Session Mode pre virtuálny stroj s Arch Linuxom.
Inštalácia integračných služieb
Tu je to viac-menej jednoduché, stačí nainštalovať balík hyperv z repozitára community:
% sudo pacman -S hypervPovolíme služby VSS, výmenu a súborov:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneInštalácia XRDP
Repozitár na GitHub poskytuje skripty, ktoré automatizujú proces inštalácie a nastavenia XRDP pre Arch Linux a Ubuntu. Nainštalujeme Git, ak ešte nie je nainštalovaný, spolu s kompilátorom a ďalším softvérom pre ručné zostavy, potom sklonujeme repozitár:
% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/archK momentu písania tohto článku je najnovšou verziou XRDP, ktorá sa inštaluje pomocou skriptu makepkg.sh, navrhnutou v repozitári, verzia 0.9.11, vsock://-adresa, pretože bude potrebné nainštalovať XRDP z Git a k nemu ovládač Xorg ručne z AUR. Patch pre XRDP, ktorý sa navrhuje v AUR, je tiež mierne zastaraný, takže bude potrebné upraviť PKGBUILD a patch ručne.
Naklonujeme repozitáre s PKGBUILD-ami z AUR (túto procedúru zvyčajne automatizujú programy ako , ale autor celú túto procedúru vykonal na čistej sústave):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitNajprv nainštalujeme samotný XRDP. Otvoríme súbor PKGBUILD v akomkoľvek textovom editore.
Upravíme parametre zostavenia. PKGBUILD pre zostavenie XRDP z Gitu nezahŕňa podporu vsock pri zostavení, takže ju musíme pridať sami:
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
}V patchi arch-config.diff, ktorý upravuje jednotky a spúšťacie skripty XRDP pre cesty k súborom používaným v Arch Linux, je zahrnutý aj patch pre skript instfiles/xrdp.sh, ktorý bol k momentu písania článku z dodávky XRDP, preto bude potrebné patch upraviť ručne:
[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 -0600Zostavíme a nainštalujeme balík príkazom % makepkg --skipchecksums -si (príznak --skipchecksums je potrebný na vypnutie kontroly kontrolných súm pôvodných súborov, pretože sme ich upravili ručne).
Prejdeme do adresára xorgxrdp-devel-git, po čom jednoducho zostavíme balík príkazom % makepkg -si.
Prejdeme do adresára linux-vm-tools/arch a spustíme skript install-config.sh, ktorý nastavuje konfigurácie XRDP, PolicyKit a PAM:
% sudo ./install-config.shSkript nastavuje zastarané nastavenie use_vsock, ktoré je ignorované od verzie 0.9.11, takže upravíme konfiguračný súbor /etc/xrdp/xrdp.ini ručne:
; port=vsock://:
-port=3389
+port=vsock://-1:3389
; 'port' vyššie by sa mal pripojiť cez vsock namiesto tcp
; používajte to len s číslom samostatne v porte vyššie
; uprednostnite použitie vsock://: vyššie
-use_vsock=true
+;use_vsock=true
; regulujte, či sa počúvací socket používa s voľbou socket tcp_nodelayPridáme do súboru ~/ .xinitrc spustenie preferovaného správcu okien / prostredia pracovnej plochy, ktorý sa spustí pri štarte X-servera:
% echo "exec i3" > ~/ .xinitrcVypneme virtuálny stroj. Aktivujeme transport vsock pre virtuálny stroj spustením nasledujúceho príkazu v PowerShell ako správca:
PS Admin > Set-VM -VMName NÁZOV_STROJA -EnhancedSessionTransportType HvSocketZnovu zapneme virtuálny stroj.
Pripojenie
Ak sa po spustení systému spustí služba XRDP, aplikácia vmconnect to rozpozná a v ponuke sa objaví voľba Zobraziť -> Vylepšená relácia. Pri výbere tejto možnosti nám ponúkne nastaviť rozlíšenie obrazovky, a na karte Miestne zdroje v otvorenom dialógu bude možné vybrať zariadenia prenášané do RDP relácie.


Pripojíme sa. Uvidíme prihlasovacie okno XRDP:

Zadáme svoje používateľské meno a heslo.
Použitie
Výhody týchto manipulácií sú zrejmé: relácia RDP funguje oveľa plynulejšie ako pri práci s virtuálnym displejom bez Vylepšenej relácie. Prenášané disky do VM cez RDP sú dostupné v adresári ${HOME}/shared-drives:

Schránka funguje bez problémov. Prenos tlačiarní dovnútra nie je možný, nie len, že sa to nepodporuje, ale aj . Taktiež nefunguje zvuk, ale autor to ani nepotreboval. Aby sa zachytávali klávesové skratky ako Alt+Tab, je potrebné nafúknuť vmconnect na celú obrazovku.
Ak z akýchkoľvek dôvodov existuje želanie používať namiesto aplikácie vmconnect integrovaný RDP klient Windows alebo sa pripojiť k tomuto stroju z iného stroja, je potrebné zmeniť v súbore /etc/xrdp/xrdp.ini port na tcp://:3389. Ak je virtuálny stroj pripojený k Default Switch a dostáva sieťové nastavenia cez DHCP, je možné sa k nemu z hostiteľa pripojiť na adrese názov_stroja.mshome.net. Do TTY sa dá vstúpiť iba z aplikácie vmconnect po vypnutí Enhanced Mode.
Použité zdroje:
- Chybové reporty na GitHub: ,
Zdroj: habr.com
