Povolte Enhanced Session Mode pro hosty Arch Linuxu v Hyper-V

Povolte Enhanced Session Mode pro hosty Arch Linuxu v Hyper-V

Používání virtuálních strojů Linux v Hyper-V po vybalení je o něco méně pohodlné než u hostujících počítačů s Windows. Důvodem je, že Hyper-V nebyl původně určen pro stolní použití; nemůžete jen pokračovat a nainstalovat balíček doplňků pro hosty a získat funkční grafickou akceleraci, schránku, sdílené adresáře a další radosti ze života, jak se to děje ve VirtualBoxu.

Hyper-V samo o sobě poskytuje více integračních služeb - takže hosté mohou používat službu stínové kopie (VSS) hostitele, hosté mohou poslat signál vypnutí, hosté mohou synchronizovat systémový čas s hostitelem virtualizace, soubory lze vyměňovat s virtuálním počítačem z hostitele (Copy-VMFile v PowerShellu). U některých hostujících operačních systémů, samozřejmě včetně Windows, v aplikaci Virtual Machine Connection (vmconnect.exe) K dispozici je režim Enhanced Session Mode, který funguje prostřednictvím protokolu RDP a umožňuje přesměrovat disková zařízení a tiskárny na virtuální počítač a také používat sdílenou schránku.

Enhanced Session Mode funguje na Windows v Hyper-V ihned po instalaci. S hosty na Linuxu musíte nainstalovat RDP server, který podporuje vsock (speciální virtuální síťový adresní prostor v Linuxu určený ke komunikaci s hypervizorem). Pokud jde o Ubuntu, aplikace VMCreate, která je dodávána s Hyper-V na edicích Windows pro stolní počítače, má speciálně připravenou šablonu virtuálního počítače, ve které běží server RDP s vsock XRDP již předinstalovaný, pak u jiných distribucí je to čím dál méně přehledné - např. autor tento příspěvek ukázalo se, že umožňuje ESM ve Fedoře. Zde také povolíme režim Enhanced Session Mode pro virtuální stroj Arch Linux.

Instalace integračních služeb

Zde je vše víceméně jednoduché, stačí nainstalovat balíček hyperv z komunitního úložiště:

% sudo pacman -S hyperv

Povolit služby VSS, výměnu metadata a soubory:

% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done

Instalace XRDP

úložiště linux-vm-tools na GitHubu poskytuje skripty, které automatizují proces instalace a konfigurace XRDP pro Arch Linux a Ubuntu. Nainstalujte Git, pokud ještě není nainstalován, spolu s kompilátorem a dalším softwarem pro ruční sestavení, a poté naklonujte úložiště:

% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/arch

V době psaní tohoto článku nejnovější vydání XRDP, které je nainstalováno skriptem makepkg.shnavrhovaná v úložišti je 0.9.11, ve kterém je rozbor přerušen vsock://-adresy, takže musíte nainstalovat XRDP z Gitu a ovladač Xorg pro něj z AUR ručně. Patch pro XRDP nabízený v AUR je také mírně zastaralý, takže budete muset upravit PKGBUILD a patch ručně.

Klonujeme úložiště pomocí PKGBUILD z AUR (obvykle je tento postup spolu s sestavením automatizován 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 nainstalujme samotné XRDP. Otevřeme soubor PKGBUILD jakýkoli textový editor.

Upravíme parametry sestavení. PKGBUILD pro sestavení XRDP z Git nezahrnuje podporu vsock v sestavení, takže ji povolme 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 náplasti arch-config.diff, který upravuje jednotky a spouštěcí skripty XRDP pod cestami k souborům používaným v Arch Linuxu, obsahuje mimo jiné opravu skriptu instfiles/xrdp.sh, který v době psaní tohoto článku byl odstraněn z distribuce XRDP, takže patch bude nutné 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

Sestavte a nainstalujte balíček pomocí příkazu % makepkg --skipchecksums -si (klíč --skipchecksums je potřeba pro zakázání ověřování kontrolních součtů zdrojových souborů, protože jsme je upravovali ručně).

Pojďme do adresáře xorgxrdp-devel-git, načež jednoduše sestavíme balíček pomocí příkazu % makepkg -si.

Pojďme do adresáře linux-vm-tools/arch a spusťte skript install-config.sh, který nastavuje nastavení XRDP, PolicyKit a PAM:

% sudo ./install-config.sh

Skript nainstaluje starší nastavení use_vsock, který je od verze 0.9.11 ignorován, takže upravme konfigurační soubor /etc/xrdp/xrdp.ini ručně:

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

Přidat do souboru ~/.xinitrc spuštění vašeho preferovaného správce oken/desktopového prostředí, které se spustí při spuštění X serveru:

% echo "exec i3" > ~/.xinitrc

Pojďme vypnout virtuální stroj. Povolte přenos vsock pro virtuální počítač spuštěním následujícího příkazu v prostředí PowerShell jako správce:

PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocket

Znovu zapneme virtuální stroj.

Připojení

Jakmile se po spuštění systému spustí služba XRDP, aplikace vmconnect to určí a položka nabídky bude dostupná. Pohled -> Vylepšená relace. Když vyberete tuto položku, budeme vyzváni k nastavení rozlišení obrazovky a na kartě Místní zdroje v dialogovém okně, které se otevře, můžete vybrat zařízení přesměrovaná v rámci relace RDP.

Povolte Enhanced Session Mode pro hosty Arch Linuxu v Hyper-V
Povolte Enhanced Session Mode pro hosty Arch Linuxu v Hyper-V

Pojďme se spojit. Uvidíme přihlašovací okno XRDP:

Povolte Enhanced Session Mode pro hosty Arch Linuxu v Hyper-V

Zadejte své uživatelské jméno a heslo.

Použití

Zisk z 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. Disky předávané uvnitř virtuálního počítače přes RDP jsou dostupné v adresáři ${HOME}/shared-drives:

Povolte Enhanced Session Mode pro hosty Arch Linuxu v Hyper-V

Schránka funguje dobře. Nemůžete házet tiskárny dovnitř, to nejen není podporováno, ale také přeruší předávání disku. Zvuk také nefunguje, ale to autor nepotřeboval. Chcete-li zachytit klávesové zkratky, jako je Alt + Tab, musíte rozbalit vmconnect na celou obrazovku.

Pokud z nějakého důvodu chcete použít klienta RDP vestavěného do systému Windows místo aplikace vmconnect nebo se například připojit k tomuto počítači z jiného počítače, budete muset změnit soubor /etc/xrdp/xrdp.ini port na tcp://:3389. Pokud je virtuální počítač připojen k výchozímu přepínači a přijímá síťová nastavení přes DHCP, můžete se k němu připojit z hostitele na adrese название_машины.mshome.net. K TTY se můžete přihlásit pouze z aplikace vmconnect vypnutím rozšířeného režimu.

Použité zdroje:

  1. Hyper-V Arch Wiki
  2. Hlášení chyb na GitHubu: 1, 2

Zdroj: www.habr.com

Přidat komentář