Omogućite poboljšani način rada sesije za Arch Linux goste u Hyper-V

Omogućite poboljšani način rada sesije za Arch Linux goste u Hyper-V

Korištenje Linux virtualnih strojeva u Hyper-V-u izvan kutije nešto je manje udobno nego s gostujućim Windows strojevima. Razlog za to je taj što Hyper-V izvorno nije bio namijenjen za upotrebu na stolnom računalu; ne možete jednostavno instalirati paket dodataka za goste i dobiti radno ubrzanje grafike, međuspremnik, dijeljene direktorije i druge životne radosti, kao što se događa u VirtualBoxu.

Sam Hyper-V pruža usluge višestruke integracije - dakle, gosti mogu koristiti uslugu kopiranja u sjeni (VSS) glavnog računala, gosti mogu poslati signal za isključivanje, gosti mogu sinkronizirati vrijeme sustava s hostom virtualizacije, datoteke se mogu razmjenjivati ​​s virtualnim strojem s glavnog računala (Copy-VMFile u PowerShell). Za neke gostujuće operacijske sustave, uključujući, naravno, Windows, u aplikaciji Virtual Machine Connection (vmconnect.exe) Dostupan je Enhanced Session Mode, koji radi putem RDP protokola i omogućuje prosljeđivanje diskovnih uređaja i pisača virtualnom stroju, kao i korištenje dijeljenog međuspremnika.

Enhanced Session Mode radi odmah nakon instalacije u sustavu Windows u Hyper-V-u. S gostima na Linuxu morate instalirati RDP poslužitelj koji podržava vsock (poseban virtualni mrežni adresni prostor u Linuxu dizajniran za komunikaciju s hipervizorom). Ako je za Ubuntu, aplikacija VMCreate koja dolazi s Hyper-V na stolnim izdanjima sustava Windows ima posebno pripremljen predložak virtualnog stroja u kojem RDP poslužitelj radi s vsockom XRPD već predinstaliran, onda je kod ostalih distribucija sve manje jasno – npr. autor ovaj post pokazalo se da omogućuje ESM u Fedori. Ovdje također omogućujemo Enhanced Session Mode za Arch Linux virtualni stroj.

Instaliranje integracijskih usluga

Ovdje je sve više-manje jednostavno, samo trebamo instalirati paket hyperv iz repozitorija zajednice:

% sudo pacman -S hyperv

Omogući VSS servise, razmjenu metapodaci i datoteke:

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

XRDP instalacija

spremište linux-vm-alati na GitHubu pruža skripte koje automatiziraju proces instaliranja i konfiguriranja XRDP-a za Arch Linux i Ubuntu. Instalirajte Git, ako već nije instaliran, zajedno s kompajlerom i drugim softverom za ručne gradnje, a zatim klonirajte spremište:

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

U vrijeme pisanja ovog teksta, najnovije izdanje XRDP-a, koje je instalirano skriptom makepkg.shpredloženo u repozitoriju je 0.9.11, u kojem je raščlamba prekinuta vsock://-adrese, tako da morate ručno instalirati XRDP iz Gita i Xorg upravljački program za njega iz AUR-a. Zakrpa za XRDP ponuđena u AUR-u također je malo zastarjela, pa ćete morati ručno urediti PKGBUILD i zakrpu.

Mi kloniramo repozitorije s PKGBUILD-ovima iz AUR-a (obično je ovaj postupak, zajedno s asemblerom, automatiziran programima poput yay, ali autor je cijeli ovaj postupak napravio na čistom sustavu):

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

Najprije instalirajmo sam XRDP. Otvorimo datoteku PKGBUILD bilo koji uređivač teksta.

Uredimo parametre izgradnje. PKGBUILD za izgradnju XRDP-a iz Gita ne uključuje podršku za vsock u izgradnji, pa je omoguć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
 }

U zakrpi arch-config.diff, koji uređuje jedinice i XRDP skripte za pokretanje pod stazama do datoteka koje se koriste u Arch Linuxu, sadrži, između ostalog, zakrpu za skriptu instfiles/xrdp.sh, koji je u vrijeme pisanja je uklonjen iz XRDP distribucije, tako da će se zakrpa morati urediti 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

Izgradite i instalirajte paket s naredbom % makepkg --skipchecksums -si (ključ --skipchecksums potreban je za onemogućavanje provjere kontrolnog zbroja izvornih datoteka, jer smo ih uredili ručno).

Idemo u imenik xorgxrdp-devel-git, nakon čega jednostavno gradimo paket naredbom % makepkg -si.

Idemo u imenik linux-vm-tools/arch i pokrenite skriptu install-config.sh, koji postavlja XRDP, PolicyKit i PAM postavke:

% sudo ./install-config.sh

Skripta instalira staru postavku use_vsock, koji se zanemaruje od verzije 0.9.11, pa uredimo konfiguracijsku datoteku /etc/xrdp/xrdp.ini ruč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 u datoteku ~/.xinitrc pokretanje vašeg željenog upravitelja prozora/desktop okruženja, koje će se izvršiti kada se pokrene X poslužitelj:

% echo "exec i3" > ~/.xinitrc

Isključimo virtualni stroj. Omogućite vsock prijenos za VM pokretanjem sljedeće naredbe u PowerShell-u kao administrator:

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

Ponovno uključimo virtualni stroj.

veza

Čim se XRDP usluga pokrene nakon pokretanja sustava, aplikacija vmconnect će to utvrditi i stavka izbornika će postati dostupna. Pogled -> Poboljšana sesija. Kada odaberete ovu stavku, od nas će se tražiti da postavimo razlučivost zaslona, ​​a na kartici Lokalni resursi u dijaloškom okviru koji se otvori možete odabrati uređaje proslijeđene unutar RDP sesije.

Omogućite poboljšani način rada sesije za Arch Linux goste u Hyper-V
Omogućite poboljšani način rada sesije za Arch Linux goste u Hyper-V

Povežimo se. Vidjet ćemo XRDP prozor za prijavu:

Omogućite poboljšani način rada sesije za Arch Linux goste u Hyper-V

Unesite svoje korisničko ime i lozinku.

Koristiti

Dobit od ovih manipulacija je primjetna: RDP sesija radi puno bolje nego kada radite s virtualnim zaslonom bez Enhanced Session. Diskovi proslijeđeni unutar VM-a putem RDP-a dostupni su u direktoriju ${HOME}/shared-drives:

Omogućite poboljšani način rada sesije za Arch Linux goste u Hyper-V

Međuspremnik radi dobro. Ne možete ubaciti pisače unutra, ovo ne samo da nije podržano, već također prekida prosljeđivanje diska. Zvuk također ne radi, ali autoru nije trebao. Kako biste snimili tipkovničke prečace poput Alt + Tab, morate proširiti vmconnect na cijeli zaslon.

Ako iz nekog razloga postoji želja za korištenjem RDP klijenta ugrađenog u Windows umjesto aplikacije vmconnect ili, na primjer, spajanja na ovo računalo s drugog računala, tada ćete morati promijeniti datoteku /etc/xrdp/xrdp.ini port na tcp://:3389. Ako je virtualni stroj spojen na zadani prekidač i prima mrežne postavke putem DHCP-a, tada se na njega možete povezati s glavnog računala na название_машины.mshome.net. Na TTY se možete prijaviti samo iz aplikacije vmconnect isključivanjem poboljšanog načina rada.

Korišteni izvori:

  1. Hyper-V Arch Wiki
  2. Izvješća o greškama na GitHubu: 1, 2

Izvor: www.habr.com

Dodajte komentar