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

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

Korišćenje Linux virtuelnih mašina u Hyper-V iz kutije je nešto manje udobno iskustvo od korišćenja Windows gostujućih mašina. Razlog za to je što Hyper-V prvobitno nije bio namijenjen za korištenje na desktopu; ne možete samo instalirati paket dodataka za goste i dobiti funkcionalno grafičko ubrzanje, međuspremnik, dijeljene direktorije i druge životne radosti, kao što se događa u VirtualBoxu.

Sam Hyper-V pruža nekoliko servisa integracije - dakle, gosti mogu koristiti hostov servis shadow copy (VSS), gosti mogu poslati signal za isključivanje, gosti mogu sinkronizirati sistemsko vrijeme sa hostom virtuelizacije, fajlovi se mogu razmjenjivati ​​sa hosta sa virtuelnom mašinom (Copy-VMFile u PowerShell). Za neke gostujuće operativne sisteme, uključujući, naravno, Windows, u aplikaciji Virtual Machine Connection (vmconnect.exe) Dostupan je poboljšani režim sesije, koji radi preko RDP protokola i omogućava vam da prebacite disk uređaje i štampače na virtuelnu mašinu, kao i da koristite zajednički međuspremnik.

Poboljšani režim sesije radi odmah nakon instalacije u Windows-u u Hyper-V-u. Sa gostima na Linuxu, potrebno je da instalirate RDP server koji podržava vsock (poseban virtuelni mrežni adresni prostor u Linuxu dizajniran za komunikaciju sa hipervizorom). Ako za Ubuntu u aplikaciji VMCreate koja dolazi sa Hyper-V na desktop izdanjima Windows-a, postoji posebno pripremljen šablon virtuelne mašine u kojem RDP server radi sa vsock-om XRDP već unaprijed instaliran, onda je s drugim distribucijama sve manje jasno - na primjer, autor ovaj post Uspio sam omogućiti ESM u Fedori. Ovdje ćemo aktivirati Enhanced Session Mode za Arch Linux virtuelnu mašinu.

Instaliranje servisa integracije

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

% sudo pacman -S hyperv

Omogućimo VSS i servise razmjene metapodaci i fajlovi:

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

Instaliranje XRDP-a

spremište linux-vm-tools na GitHubu pruža skripte koje automatizuju proces instaliranja i konfigurisanja XRDP-a za Arch Linux i Ubuntu. Hajde da instaliramo Git, ako već nije instaliran, zajedno sa kompajlerom i drugim softverom za ručne gradnje, a zatim kloniramo 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 članka, najnovije izdanje XRDP-a, koje je instalirano pomoću skripte makepkg.shonaj koji je predložen u spremištu je 0.9.11, u kojoj je raščlanjivanje prekinuto vsock://-adrese, tako da ćete morati ručno da instalirate XRDP iz Gita i Xorg drajver za njega iz AUR-a. XRDP zakrpa ponuđena u AUR-u je također malo zastarjela, tako da ćete morati ručno urediti PKGBUILD i zakrpu.

Hajde da klonimo spremišta sa PKGBUILD-ovima iz AUR-a (obično ovu proceduru, zajedno sa izgradnjom, automatizuju programi poput jej, ali autor je cijelu ovu proceduru uradio na čistom sistemu):

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

Hajde da prvo instaliramo sam XRDP. Hajde da otvorimo fajl PKGBUILD bilo koji uređivač teksta.

Uredimo parametre izgradnje. PKGBUILD za pravljenje XRDP-a iz Gita ne uključuje vsock podršku prilikom izgradnje, pa hajde da ga sami omogućimo:

 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 upravlja jedinicama i skriptama za pokretanje XRDP-a pod putanjama datoteka koje se koriste u Arch Linuxu, također sadrži zakrpu za skriptu instfiles/xrdp.sh, koji u vrijeme pisanja je uklonjeno iz XRDP distribucije, tako da će se zakrpa morati ručno uređivati:

  [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

Hajde da kompajliramo i instaliramo paket sa komandom % makepkg --skipchecksums -si (ključ --skipchecksums potrebno za onemogućavanje provjere kontrolne sume izvornih datoteka, pošto smo ih uređivali ručno).

Idemo u imenik xorgxrdp-devel-git, nakon čega jednostavno sastavljamo 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 zastarjele postavke use_vsock, koji je zanemaren od verzije 0.9.11, pa hajde da uredimo konfiguracioni fajl /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 fajl ~/.xinitrc pokretanje vašeg preferiranog window manager/desktop okruženja, koje će se izvršiti kada se X server pokrene:

% echo "exec i3" > ~/.xinitrc

Isključimo virtuelnu mašinu. Aktiviramo vsock transport za virtuelnu mašinu pokretanjem sledeće komande u PowerShell-u kao administrator:

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

Uključimo ponovo virtuelnu mašinu.

Podklûčenie

Čim se servis XRDP pokrene nakon pokretanja sistema, aplikacija vmconnect će to otkriti i stavka će postati dostupna u meniju pogled -> Enhanced Session. Prilikom odabira ove stavke, od nas će biti zatraženo da postavimo rezoluciju ekrana i na kartici Lokalni resursi U dijalogu koji se otvori, možete odabrati uređaje koji će biti proslijeđeni u RDP sesiju.

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

Hajde da se povežemo. Vidjet ćemo XRDP prozor za prijavu:

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

Unesite svoje korisničko ime i lozinku.

Koristite

Korist od ovih manipulacija je primetna: RDP sesija radi mnogo brže nego kada radite sa virtuelnim ekranom bez Enhanced Session. Diskovi ispušteni unutar VM-a putem RDP-a dostupni su u direktoriju ${HOME}/shared-drives:

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

Međuspremnik radi dobro. Ne možete proslijediti štampače unutra; ovo ne samo da nije podržano, već i prekida prosljeđivanje diska. Zvuk također ne radi, ali autoru to nije trebalo. Da biste snimili prečice na tastaturi poput Alt+Tab, morate proširiti vmconnect na cijeli ekran.

Ako iz nekog razloga želite da koristite RDP klijent ugrađen u Windows umjesto vmconnect aplikacije ili se, na primjer, povežete na ovu mašinu sa druge mašine, tada ćete morati da promenite datoteku /etc/xrdp/xrdp.ini port na tcp://:3389. Ako je virtuelna mašina povezana sa podrazumevanim prekidačem i prima mrežne postavke putem DHCP-a, tada se na nju možete povezati sa hosta na adresi название_машины.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štaji o greškama na GitHubu: 1, 2

izvor: www.habr.com

Dodajte komentar