Povolenie režimu rozšírenej relácie pre Arch Linux-hostia v Hyper-V

Povolenie režimu rozšírenej relácie pre Arch Linux-hostia v Hyper-V

Používanie virtuálnych počítačov na Linux v Hyper-V je po vybalení z krabice o niečo menej pohodlný zážitok ako v hosťovskom režime Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.

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 в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении 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 из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер XRDP už predinštalovaný, potom pri iných distribúciách je to čoraz menej jasné - napríklad autor tento príspevok получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с 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 на GitHub предоставляет скрипты, автоматизирующие процесс установки и настройки XRDP, для Arch Linux и Ubuntu. Установим Git, если он еще не установлен, вместе с компилятором и другим софтом для ручных сборок, после чего склонируем репозиторий:

% 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, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту 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.

Povolenie režimu rozšírenej relácie pre Arch Linux-hostia v Hyper-V
Povolenie režimu rozšírenej relácie pre Arch Linux-hostia v Hyper-V

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

Povolenie režimu rozšírenej relácie pre Arch Linux-hostia 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:

Povolenie režimu rozšírenej relácie pre Arch Linux-hostia 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.

Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /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

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster