Aktivujeme Enhanced Session Mode pro Arch Linux hosty v Hyper-V

Aktivujeme Enhanced Session Mode pro Arch Linux hosty v Hyper-V

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 několik integračních služeb — 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, XRDP 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. Instalace integračních služeb 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

metadat

a souborů: % for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done Instalace XRDP

linux-vm-tools

na 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ář % sudo pacman -S git base-devel % git clone https://github.com/microsoft/linux-vm-tools.git % cd linux-vm-tools/arch 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/arch

K č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, ve které je rozbitý parsing 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 yay, 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.git

Nejprve 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 odstraněn 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 -0600

Sestaví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.sh

Skript 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_nodelay

Př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" > ~/.xinitrc

Vypneme 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 HvSocket

Znovu 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.

Aktivujeme Enhanced Session Mode pro Arch Linux hosty v Hyper-V
Aktivujeme Enhanced Session Mode pro Arch Linux hosty v Hyper-V

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

Aktivujeme Enhanced Session Mode pro Arch Linux hosty v Hyper-V

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:

Aktivujeme Enhanced Session Mode pro Arch Linux hosty v Hyper-V

Schránka funguje normálně. Není možné přenášet tiskárny, to nejen že není podporováno, ale také znepřístupňuje přenos disků. 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:

  1. Hyper-V — Arch Wiki
  2. Chybové zprávy na GitHubu: 1, 2

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster