Povoľte režim Enhanced Session Mode pre hostí Arch Linuxu v Hyper-V

Povoľte režim Enhanced Session Mode pre hostí Arch Linuxu v Hyper-V

Používanie virtuálnych počítačov Linux v Hyper-V hneď po vybalení je o niečo menej pohodlné ako v prípade hosťujúcich počítačov so systémom Windows. Dôvodom je, že Hyper-V nebol pôvodne určený pre stolné počítače; nemôžete jednoducho pokračovať a nainštalovať si balík doplnkov pre hostí a získať funkčné grafické zrýchlenie, schránku, zdieľané adresáre a iné radosti zo života, ako sa to stáva vo VirtualBoxe.

Hyper-V sám poskytuje viaceré integračné služby - takže hostia môžu používať službu tieňovej kópie (VSS) hostiteľa, hostia môžu poslať signál vypnutia, hostia môžu synchronizovať systémový čas s hostiteľom virtualizácie, súbory je možné vymieňať s virtuálnym počítačom z hostiteľa (Copy-VMFile v PowerShell). Pre niektoré hosťujúce operačné systémy, samozrejme vrátane Windowsu, v aplikácii Virtual Machine Connection (vmconnect.exe) K dispozícii je režim Enhanced Session Mode, ktorý funguje prostredníctvom protokolu RDP a umožňuje posielať diskové zariadenia a tlačiarne do virtuálneho stroja, ako aj používať zdieľanú schránku.

Enhanced Session Mode funguje hneď po inštalácii na Windows v Hyper-V hneď po inštalácii. S hosťami v systéme Linux musíte nainštalovať server RDP, ktorý podporuje vsock (špeciálny priestor adries virtuálnej siete v systéme Linux určený na komunikáciu s hypervízorom). V prípade Ubuntu má aplikácia VMCreate, ktorá sa dodáva s Hyper-V na desktopových vydaniach Windowsu, špeciálne pripravenú šablónu virtuálneho počítača, v ktorej je server RDP spustený s vsock XRDP už predinštalovaný, potom pri iných distribúciách je to čoraz menej jasné - napríklad autor tento príspevok ukázalo sa, že umožňuje ESM vo Fedore. Tu tiež povolíme režim Enhanced Session Mode pre virtuálny stroj Arch Linux.

Inštalácia integračných služieb

Všetko je tu viac-menej jednoduché, stačí nám nainštalovať balík hyperv z komunitného úložiska:

% sudo pacman -S hyperv

Povoliť služby VSS, výmenu metaúdaje a súbory:

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

Inštalácia XRDP

Úložisko linux-vm-tools na GitHub poskytuje skripty, ktoré automatizujú proces inštalácie a konfigurácie XRDP pre Arch Linux a Ubuntu. Nainštalujte Git, ak ešte nie je nainštalovaný, spolu s kompilátorom a ďalším softvérom na manuálne zostavovanie a potom naklonujte úložisko:

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

V čase písania tohto článku je to najnovšie vydanie XRDP, ktoré je nainštalované skriptom makepkg.shnavrhovaný v úložisku je 0.9.11, v ktorom je rozbor prerušený vsock://-adresy, takže XRDP z Gitu a ovládač Xorg k nemu musíte nainštalovať z AUR ručne. Oprava pre XRDP ponúkaná v AUR je tiež mierne zastaraná, takže budete musieť upraviť PKGBUILD a opravu ručne.

Klonujeme úložiská pomocou PKGBUILD z AUR (zvyčajne je tento postup spolu s montážou automatizovaný programami ako jej, ale autor urobil celý tento postup na čistom systéme):

% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.git

Najprv si nainštalujte samotné XRDP. Otvorme súbor PKGBUILD akýkoľvek textový editor.

Upravme parametre zostavy. PKGBUILD na zostavenie XRDP z Gitu nezahŕňa podporu vsock v zostave, takže ju povoľme 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, ktorý upravuje jednotky a spúšťacie skripty XRDP pod cestami k súborom používaným v Arch Linuxe, obsahuje okrem iného opravu skriptu instfiles/xrdp.sh, ktorý v čase písania tohto článku bol odstránený z distribúcie XRDP, takže patch bude potrebné 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 -0600

Zostavte a nainštalujte balík pomocou príkazu % makepkg --skipchecksums -si (kľúč --skipchecksums je potrebné na zakázanie overovania kontrolného súčtu zdrojových súborov, keďže sme ich upravovali manuálne).

Poďme do adresára xorgxrdp-devel-git, po ktorom jednoducho zostavíme balík príkazom % makepkg -si.

Poďme do adresára linux-vm-tools/arch a spustite skript install-config.sh, ktorý nastavuje nastavenia XRDP, PolicyKit a PAM:

% sudo ./install-config.sh

Skript nainštaluje staršie nastavenie use_vsock, ktorý je od verzie 0.9.11 ignorovaný, poďme teda upraviť konfiguračný súbor /etc/xrdp/xrdp.ini ručne:

 ;   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

Pridať do súboru ~/.xinitrc spustenie vášho preferovaného správcu okien/desktop prostredia, ktoré sa spustí pri spustení X servera:

% echo "exec i3" > ~/.xinitrc

Vypnime virtuálny stroj. Povoľte prenos vsock pre virtuálny počítač spustením nasledujúceho príkazu v prostredí PowerShell ako správca:

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

Opäť zapneme virtuálny stroj.

prípojka

Akonáhle sa po spustení systému spustí služba XRDP, aplikácia vmconnect to určí a položka ponuky bude dostupná. pohľad -> Vylepšená relácia. Keď vyberiete túto položku, zobrazí sa výzva na nastavenie rozlíšenia obrazovky a na karte Miestne zdroje v dialógovom okne, ktoré sa otvorí, môžete vybrať zariadenia presmerované v rámci relácie RDP.

Povoľte režim Enhanced Session Mode pre hostí Arch Linuxu v Hyper-V
Povoľte režim Enhanced Session Mode pre hostí Arch Linuxu v Hyper-V

Poďme sa spojiť. Zobrazí sa nám prihlasovacie okno XRDP:

Povoľte režim Enhanced Session Mode pre hostí Arch Linuxu v Hyper-V

Zadajte svoje používateľské meno a heslo.

Použitie

Zisk z týchto manipulácií je viditeľný: relácia RDP funguje oveľa lepšie ako pri práci s virtuálnym displejom bez vylepšenej relácie. Disky preposlané vo vnútri VM cez RDP sú dostupné v adresári ${HOME}/shared-drives:

Povoľte režim Enhanced Session Mode pre hostí Arch Linuxu v Hyper-V

Schránka funguje dobre. Do vnútra nemôžete hádzať tlačiarne, to nielenže nie je podporované, ale tiež preruší preposielanie disku. Zvuk tiež nefunguje, ale to autor nepotreboval. Ak chcete zachytiť klávesové skratky ako Alt + Tab, musíte rozbaliť vmconnect na celú obrazovku.

Ak z nejakého dôvodu chcete použiť klienta RDP zabudovaného do systému Windows namiesto aplikácie vmconnect alebo sa napríklad pripojiť k tomuto počítaču z iného počítača, budete musieť zmeniť súbor /etc/xrdp/xrdp.ini port na tcp://:3389. Ak je virtuálny počítač pripojený k predvolenému prepínaču a prijíma nastavenia siete cez DHCP, môžete sa k nemu pripojiť z hostiteľa na adrese название_машины.mshome.net. Do TTY sa môžete prihlásiť iba z aplikácie vmconnect vypnutím rozšíreného režimu.

Použité zdroje:

  1. Hyper-V Arch Wiki
  2. Hlásenia chýb na GitHub: 1, 2

Zdroj: hab.com

Pridať komentár