Uključujemo Enhanced Session Mode za Arch Linux goste u Hyper-V

Uključujemo Enhanced Session Mode za Arch Linux goste u Hyper-V

Uporaba virtualnih strojev na Linuxu v Hyper-V je nekoliko manj udobna kot pri gostujočih Windows strojih. Razlog je, da Hyper-V od začetka ni bil zasnovan za namizno uporabo; ni mogoče preprosto vzeti, namestiti paket gostiteljskih dodatkov in pridobiti delujoče grafično pospeševanje, odložišče, skupne mape in druge prijetne stvari, kot je to mogoče v VirtualBoxu.

Hyper-V ponuja nekatere integracijske storitve — tako lahko gostje uporabljajo storitev za obnavljanje stanja (VSS) gostitelja, gostom lahko pošljemo signal za izklop, gostje lahko sinhronizirajo sistemski čas z gostiteljskim virtualizacijskim sistemom, z gostitelja pa je mogoče izmenjavati datoteke z virtualnim strojem (Copy-VMFile v PowerShellu). Za nekatere gostujoče operacijske sisteme, med katerimi je seveda tudi Windows, je v aplikaciji Virtual Machine Connection (vmconnect.exe) na voljo izboljšani način seje, ki deluje po protokolu RDP in omogoča preusmeritev diskovnih enot in tiskalnikov v virtualni stroj ter uporabo skupnega odložišča.

Izboljšani način seje deluje takoj po namestitvi sistema Windows v Hyper-V. Pri gostih na Linuxu je treba namestiti RDP strežnik, ki podpira vsock (poseben virtualni naslovni prostor v Linuxu, namenjen komunikaciji z hipervizorjem). Če ima Ubuntu v aplikaciji VMCreate, ki prihaja s Hyper-V na namiznih različicah sistema Windows, poseben pripravljen predloga virtualnega stroja, v katerem je RDP strežnik, ki deluje z vsock, XRDP že predhodno nameščen, pa je pri drugih distribucijah manj jasno — avtoru tega zapisa je uspelo omogočiti ESM v Fedori. Tukaj aktiviramo izboljšani način seje za virtualni stroj z Arch Linuxom. Namestitev integracijskih storitev

Tukaj je vse bolj ali manj preprosto, dovolj je, da namestimo paket

hyperv iz repozitorija community: % sudo pacman -S hyperv

Vklopimo storitve VSS, izmenjave

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

Namestitev XRDP

linux-vm-tools

Repozitorij na GitHubu ponuja skripte, ki avtomatizirajo proces namestitve in nastavitve XRDP za Arch Linux in Ubuntu. Namestimo Git, če še ni nameščen, skupaj s prevajalnikom in drugo programsko opremo za ročne gradnje, nato pa kloniramo repozitorij: % sudo pacman -S git base-devel % git clone https://github.com/microsoft/linux-vm-tools.git % cd linux-vm-tools/arch

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

Na trenutak kada je ovaj članak napisan, najnovija verzija XRDP-a koja se instalira skriptom makepkg.sh, ponuđena u repozitoriju, je 0.9.11, u kojoj je oštećeno parsiranje vsock://-adresa, stoga će biti potrebno instalirati XRDP iz Gita, a Xorg drajver iz AUR-a ručno. Patch za XRDP, koji je dostupan u AUR-u, je takođe pomalo zastareo, pa ćemo morati da uredimo PKGBUILD i patch ručno.

Kloniraćemo repozitorijume sa PKGBUILD-ima iz AUR-a (obično se ova procedura zajedno sa gradnjom automatizuje programima poput yay, ali autor je sve ovo radio na čistom sistemu):

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

Prvo ćemo instalirati XRDP. Otvorićemo datoteku PKGBUILD nekim tekstualnim editorom.

Uredićemo parametre gradnje. PKGBUILD za gradnju XRDP-a iz Gita ne uključuje podršku za vsock pri gradnji, pa ćemo je aktivirati 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
 }

U patchu arch-config.diff, koji uređuje jedinice i skripte za pokretanje XRDP-a prema putanjama datoteka korišćenim u Arch Linux-u, uključuje i patch za skriptu instfiles/xrdp.sh, koja je u trenutku pisanja ovog članka bila uklonjena iz isporuke XRDP-a, stoga će patch morati da se izmeni ručno:

  [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

Gradićemo i instaliraćemo paket komandom % makepkg --skipchecksums -si (ključ --skipchecksums je potreban za isključivanje provere kontrolnih suma izvornih datoteka, pošto smo ih ručno uredili).

Preći ćemo u direktorijum xorgxrdp-devel-git, nakon čega ćemo jednostavno izgraditi paket komandom % makepkg -si.

Preći ćemo u direktorijum linux-vm-tools/arch i pokrenuti skriptu install-config.sh, koja postavlja podešavanja XRDP-a, PolicyKit-a i PAM-a:

% sudo ./install-config.sh

Skripta postavlja zastarele postavke use_vsock, koja se ignoriše od verzije 0.9.11, stoga ćemo ručno urediti datoteku konfiguracije /etc/xrdp/xrdp.ini :

 ;   port=vsock://:
-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://: above
-use_vsock=true
+;use_vsock=true

 ; regulate if the listening socket use socket option tcp_nodelay

Добавим в файл ~/ .xinitrc запуск своего предпочитаемого оконного менеджера / среды рабочего стола, который будет выполняться при запуске X-сервера:

% echo "exec i3" > ~/ .xinitrc

Выключим виртуальную машину. Активируем транспорт vsock для виртуальной машины, выполнив следующую команду в PowerShell от администратора:

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

Включим виртуальную машину снова.

Povezava

Как только после запуска системы запустится сервис XRDP, приложение vmconnect это определит и в меню станет доступен пункт View -> Enhanced Session. При выборе этого пункта нам предложат установить разрешение экрана, а на вкладке Local Resources открывшегося диалога можно будет выбрать устройства, пробрасываемые внутрь RDP-сессии.

Uključujemo Enhanced Session Mode za Arch Linux goste u Hyper-V
Uključujemo Enhanced Session Mode za Arch Linux goste u Hyper-V

Подключимся. Увидим окно входа XRDP:

Uključujemo Enhanced Session Mode za Arch Linux goste u Hyper-V

Введем свои имя пользователя и пароль.

Uporaba

Профит от этих манипуляций заметен: сессия RDP работает намного отзывчивее, чем при работе с виртуальным дисплеем без Enhanced Session. Проброшенные внутрь VM через RDP диски доступны в директории ${HOME}/shared-drives:

Uključujemo Enhanced Session Mode za Arch Linux goste u Hyper-V

Буфер обмена работает нормально. Пробрасывать принтеры внутрь нельзя, это не только не поддерживается, но и ломает проброс дисков. Также не работает звук, но автору это и не требовалось. Для того, чтобы захватывались сочетания клавиш вроде Alt+Tab, нужно разворачивать vmconnect на весь экран.

Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini port na tcp://:3389. Если виртуальная машина подключена к Default Switch и получает сетевые настройки по DHCP, то подключиться к ней с хоста можно по адресу название_машины.mshome.net. Войти в TTY можно только из приложения vmconnect, выключив Enhanced Mode.

Použité zdroje:

  1. Hyper-V — Arch Wiki
  2. Багрепорты на GitHub: 1, 2

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster