
Používání virtuálních strojů na Linuxu v Hyper-V z podstaty není tak komfortní jako u hostitelských Windows strojů. Důvodem je, že Hyper-V nebyl původně navržen pro desktopové použití; nelze jednoduše vzít, nainstalovat balík hostitelských doplňků a získat funkční grafické akcelerace, sdílenou schránku, sdílené adresáře a další radosti, jako to funguje ve VirtualBoxu.
Hyper-V sám poskytuje — tak hosté mohou využívat službu stínového kopírování (VSS) hostitele, hostům lze poslat signál k vypnutí, hosté mohou synchronizovat systémový čas s hostitelem virtualizace, z hostitele je možná výměna souborů s virtuálním strojem (Copy-VMFile v PowerShellu). Pro některé hostitelské operační systémy, mezi kterými je samozřejmě i Windows, je v aplikaci Virtual Machine Connection (vmconnect.exe) k dispozici Vylepšený režim relace, který funguje na základě protokolu RDP a umožňuje předávat do virtuálního stroje disková zařízení a tiskárny, stejně jako využívat sdílenou schránku.
Vylepšený režim relace funguje v systému Windows v Hyper-V hned po instalaci. U hostů na Linuxu je potřeba nainstalovat RDP server, který podporuje vsock (speciální virtuální síťový adresní prostor v Linuxu určený pro komunikaci s hypervizorem). Pokud pro Ubuntu v aplikaci VMCreate, dodávané s Hyper-V na desktopových edicích Windows, existuje speciálně předpřipravená šablona virtuálního stroje, ve které už je nainstalován RDP server pracující s vsock, tak s jinými distribucemi to už tak jednoznačné není — autor tohoto příspěvku dokázal zapnout ESM na Fedoře. Zde aktivujeme Vylepšený režim relace pro virtuální stroj s Arch Linuxem. Tady je to více či méně jednoduché, stačí nám nainstalovat balík
hyperv
z repozitáře community: % sudo pacman -S hyperv Aktivujeme služby VSS, výměny
metadata souborů: Instalace XRDP
linux-vm-toolsna GitHubu poskytuje skripty, které automatizují proces instalace a nastavení XRDP pro Arch Linux a Ubuntu. Nainstalujeme Git, pokud ještě není nainstalován, spolu s kompilátorem a dalším softwarem pro ruční sestavení, poté naklonujeme repozitář:
Repozitář na GitHub nabízí skripty, které automatizují proces instalace a konfigurace XRDP pro Arch Linux a Ubuntu. Nainstalujeme Git, pokud ještě není nainstalován, spolu s kompilátorem a dalším softwarem pro ruční sestavení, po čemž klonujeme repozitář:
% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/archK času psaní tohoto článku je nejnovější verzí XRDP, která se instaluje pomocí skriptu makepkg.sh, nabízené v repozitáři, verze 0.9.11, vsock://-adresů, takže XRDP bude nutné nainstalovat ručně z Gitu a Xorg ovladač k němu z AUR. Patch k XRDP, který je nabízen v AUR, je také mírně zastaralý, takže bude třeba upravit PKGBUILD a patch ručně.
Naklonujeme repozitáře s PKGBUILD z AUR (tento postup obvykle automatizují programy jako , ale autor provedl celý tento postup na čistém systému):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitNejprve nainstalujeme XRDP. Otevřeme soubor PKGBUILD jakýmkoli textovým editorem.
Upravíme parametry pro sestavení. PKGBUILD pro sestavení XRDP z Gitu nezahrnuje podporu vsock při sestavení, takže ji zapneme 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, který upravuje jednotky a spouštěcí skripty XRDP podle cest k souborům používaným v Arch Linux, je také zahrnut patch k skriptu instfiles/xrdp.sh, který byl k času psaní článku z dodávky XRDP, takže patch bude třeba upravit ručně:
[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 -0600Sestavíme a nainstalujeme balíček pomocí příkazu % makepkg --skipchecksums -si (klíč --skipchecksums je potřeba k vypnutí kontroly kontrolních součtů zdrojových souborů, protože jsme je upravili ručně).
Přejdeme do adresáře xorgxrdp-devel-git, po čemž jednoduše sestavíme balíček pomocí příkazu % makepkg -si.
Přejdeme do adresáře linux-vm-tools/arch a spustíme skript install-config.sh, který nastaví konfiguraci XRDP, PolicyKit a PAM:
% sudo ./install-config.shSkript nastaví zastaralé nastavení use_vsock, které je ignorováno od verze 0.9.11, takže upravíme konfigurační soubor /etc/xrdp/xrdp.ini ručně:
; port=vsock://:
-port=3389
+port=vsock://-1:3389
; 'port' výše by měl být připojen pomocí vsock místo tcp
; používejte pouze s číslem samotným v portu výše
; preferujte použití vsock://: výše
-use_vsock=true
+;use_vsock=true
; regulujte, zda naslouchací socket používá socket volbu tcp_nodelayPřidáme do souboru ~/.xinitrc spuštění svého preferovaného správce oken / pracovního prostředí, který se provede při spuštění X-serveru:
% echo "exec i3" > ~/.xinitrcVypneme virtuální stroj. Aktivujeme transport vsock pro virtuální stroj provedením následujícího příkazu v PowerShell jako administrátor:
PS Admin > Set-VM -VMName NÁZEV_STROJE -EnhancedSessionTransportType HvSocketZnovu zapneme virtuální stroj.
Připojení
Jakmile se po spuštění systému spustí služba XRDP, aplikace vmconnect to zjistí a v menu se objeví položka Zobrazit -> Vylepšená relace. Výběrem této položky nám bude nabídnuto nastavit rozlišení obrazovky, a na kartě Místní prostředky v dialogu se bude možné vybrat zařízení, která se přenášejí do RDP relace.


Připojíme se. Uvidíme přihlašovací okno XRDP:

Zadáme své uživatelské jméno a heslo.
Použití
Výhoda těchto manipulací je patrná: relace RDP funguje mnohem lépe než při práci s virtuálním displejem bez Vylepšené relace. Přenášené disky do VM přes RDP jsou dostupné v adresáři ${HOME}/shared-drives:

Schránka funguje normálně. Není možné přenášet tiskárny, to nejen že není podporováno, ale také . Také nefunguje zvuk, ale autor to nepotřeboval. Aby bylo možné zachytávat klávesové zkratky jako Alt+Tab, je nutné přepnout vmconnect na celou obrazovku.
Pokud z jakéhokoli důvodu máte chuť použít místo aplikace vmconnect vestavěného klienta RDP Windows nebo například se připojit k tomuto stroji z jiného stroje, pak bude nutné změnit v souboru /etc/xrdp/xrdp.ini port na tcp://:3389. Pokud je virtuální stroj připojen k Default Switch a dostává síťová nastavení pomocí DHCP, lze se k němu z hostitele připojit na adrese název_stroje.mshome.net. Přihlásit se do TTY lze pouze z aplikace vmconnect, pokud je vypnutý Vylepšený režim.
patronem kanálu LAB-66:
- Chybové zprávy na GitHubu: ,
Zdroj: habr.com
