Omogoči izboljšan način seje za goste Arch Linux v Hyper-V

Omogoči izboljšan način seje za goste Arch Linux v Hyper-V

Uporaba virtualnih strojev Linux v Hyper-V takoj po namestitvi je nekoliko manj udobna izkušnja kot uporaba gostujočih strojev Windows. Razlog za to je, da Hyper-V prvotno ni bil namenjen za namizno uporabo; ne morete samo namestiti paketa gostujočih dodatkov in pridobiti funkcionalnega grafičnega pospeševanja, odložišča, imenikov v skupni rabi in drugih radosti življenja, kot se dogaja v VirtualBoxu.

Hyper-V sam zagotavlja več integracijskih storitev - torej lahko gostje uporabljajo storitev senčnega kopiranja gostitelja (VSS), gostje lahko pošljejo signal za zaustavitev, gostje lahko sinhronizirajo sistemski čas z gostiteljem virtualizacije, datoteke se lahko izmenjujejo iz gostitelja z virtualnim strojem (Copy-VMFile v lupini PowerShell). Za nekatere gostujoče operacijske sisteme, vključno seveda z Windows, v aplikaciji Virtual Machine Connection (vmconnect.exe) Na voljo je izboljšan način seje, ki deluje prek protokola RDP in vam omogoča prenos diskovnih naprav in tiskalnikov v virtualni stroj ter uporabo skupnega odložišča.

Enhanced Session Mode deluje takoj po namestitvi v sistemu Windows v Hyper-V. Pri gostih v Linuxu morate namestiti strežnik RDP, ki podpira vsock (poseben navidezni omrežni naslovni prostor v Linuxu, zasnovan za komunikacijo s hipervizorjem). Če je za Ubuntu v aplikaciji VMCreate, ki je priložena Hyper-V v namiznih različicah sistema Windows, obstaja posebna pripravljena predloga navideznega stroja, v kateri strežnik RDP deluje z vsock XRDP že prednameščeno, potem je pri drugih distribucijah vedno manj jasno - na primer avtor ta objava Uspelo mi je omogočiti ESM v Fedori. Tukaj bomo aktivirali izboljšani način seje za virtualni stroj Arch Linux.

Namestitev integracijskih storitev

Tukaj je vse bolj ali manj preprosto, le namestiti moramo paket hyperv iz repozitorija skupnosti:

% sudo pacman -S hyperv

Omogočimo storitve VSS in izmenjave metapodatki in datoteke:

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

Namestitev XRDP

repozitorij linux-vm-orodja na GitHub ponuja skripte, ki avtomatizirajo postopek namestitve in konfiguracije 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

V času pisanja tega članka je najnovejša izdaja XRDP, ki jo namesti skript makepkg.shpredlagana v skladišču je 0.9.11, pri katerem je razčlenjevanje pokvarjeno vsock://-naslove, zato boste morali ročno namestiti XRDP iz Gita in gonilnik Xorg zanj iz AUR. Tudi popravek XRDP, ki je na voljo v AUR, je nekoliko zastarel, zato boste morali PKGBUILD in popravek urediti ročno.

Klonirajmo repozitorije s PKGBUILD-ji iz AUR (običajno ta postopek, skupaj z gradnjo, avtomatizirajo programi, kot je Juhu, vendar je avtor naredil celoten postopek na čistem sistemu):

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

Najprej namestimo sam XRDP. Odprimo datoteko PKGBUILD kateri koli urejevalnik besedil.

Uredimo parametre gradnje. PKGBUILD za gradnjo XRDP iz Gita ne vključuje podpore za vsock pri gradnji, zato jo omogočimo 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 obližu arch-config.diff, ki upravlja enote in skripte za zagon XRDP pod potmi datotek, ki se uporabljajo v Arch Linuxu, vsebuje tudi popravek za skript instfiles/xrdp.sh, ki v času pisanja je bil odstranjen iz distribucije XRDP, zato bo treba popravek urediti roč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

Prevedimo in namestimo paket z ukazom % makepkg --skipchecksums -si (ključ --skipchecksums potrebno za onemogočanje preverjanja kontrolne vsote izvornih datotek, ker smo jih uredili ročno).

Pojdimo v imenik xorgxrdp-devel-git, nato pa z ukazom preprosto sestavimo paket % makepkg -si.

Pojdimo v imenik linux-vm-tools/arch in zaženite skript install-config.sh, ki nastavi nastavitve XRDP, PolicyKit in PAM:

% sudo ./install-config.sh

Skript namesti podedovano nastavitev use_vsock, ki je bil prezrt od različice 0.9.11, zato uredimo konfiguracijsko datoteko /etc/xrdp/xrdp.ini ročno:

 ;   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

Dodaj v datoteko ~/.xinitrc zagon vašega želenega upravitelja oken/namiznega okolja, ki se bo izvedel, ko se zažene strežnik X:

% echo "exec i3" > ~/.xinitrc

Izklopimo virtualni stroj. Prenos vsock za navidezni stroj aktiviramo tako, da kot skrbnik zaženemo naslednji ukaz v lupini PowerShell:

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

Ponovno vklopimo virtualni stroj.

Подключение

Takoj ko se storitev XRDP zažene po zagonu sistema, bo aplikacija vmconnect to zaznala in element bo na voljo v meniju Poglej -> Izboljšana seja. Ko izberemo ta element, bomo pozvani, da nastavimo ločljivost zaslona in na zavihku Lokalni viri V pogovornem oknu, ki se odpre, lahko izberete naprave, ki jih želite posredovati v sejo RDP.

Omogoči izboljšan način seje za goste Arch Linux v Hyper-V
Omogoči izboljšan način seje za goste Arch Linux v Hyper-V

Povežimo se. Videli bomo prijavno okno XRDP:

Omogoči izboljšan način seje za goste Arch Linux v Hyper-V

Vnesite svoje uporabniško ime in geslo.

Uporaba

Korist teh manipulacij je opazna: seja RDP deluje veliko bolj odzivno kot pri delu z virtualnim zaslonom brez izboljšane seje. Diski, spuščeni v VM prek RDP, so na voljo v imeniku ${HOME}/shared-drives:

Omogoči izboljšan način seje za goste Arch Linux v Hyper-V

Odložišče deluje dobro. Tiskalnikov ne morete posredovati notri; to ne samo, da ni podprto, ampak tudi prekine posredovanje diska. Tudi zvok ne deluje, vendar avtor tega ni potreboval. Če želite zajeti bližnjice na tipkovnici, kot je Alt+Tab, morate vmconnect razširiti na celoten zaslon.

Če želite iz nekega razloga uporabiti odjemalca RDP, vgrajenega v Windows, namesto aplikacije vmconnect ali se na primer povezati s tem računalnikom iz drugega računalnika, boste morali spremeniti datoteko /etc/xrdp/xrdp.ini port o tcp://:3389. Če je virtualni stroj povezan s privzetim stikalom in prejema omrežne nastavitve prek DHCP, se lahko nanj povežete iz gostitelja na название_машины.mshome.net. V TTY se lahko prijavite samo iz aplikacije vmconnect, če izklopite izboljšani način.

Uporabljeni viri:

  1. Hyper-V - Arch Wiki
  2. Poročila o napakah na GitHubu: 1, 2

Vir: www.habr.com

Dodaj komentar