Omogućavanje poboljšanog načina sesije za Arch Linux-gosti u Hyper-V-u

Omogućavanje poboljšanog načina sesije za Arch Linux-gosti u Hyper-V-u

Korištenje virtualnih mašina na Linux U Hyper-V-u odmah po instalaciji je nešto manje ugodno iskustvo nego s gostujućim načinom rada. Windows-mašine. Razlog za to je što Hyper-V nije prvobitno dizajniran za upotrebu na desktop računarima; ne možete jednostavno instalirati paket Guest Additions i dobiti funkcionalno grafičko ubrzanje, međuspremnik, dijeljene direktorije i druge pogodnosti, kao što možete s VirtualBoxom.

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 PowerShellu). Za neke gostujuće operativne sisteme, što naravno uključuje Windows, u aplikaciji za povezivanje virtuelne mašine (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 način rada sesije radi odmah nakon instalacije Windows u Hyper-V odmah nakon instalacije. Sa gostima na Linux Potrebno je instalirati RDP server koji podržava vsock (poseban virtuelni mrežni adresni prostor u Linux, dizajniran za komunikaciju s hipervizorom). Ako za Ubuntu u aplikaciji VMCreate koja dolazi s Hyper-V-om na desktop izdanjima Windows, postoji posebno pripremljeni š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 Uspjeli smo omogućiti ESM u Fedori. Ovdje također aktiviramo Enhanced Session Mode za virtuelnu mašinu Arch. Linux.

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 pruža skripte na GitHub-u koje automatiziraju proces instaliranja i konfiguriranja XRDP-a za Arch Linux и UbuntuInstalirajmo Git, ako već nije instaliran, zajedno s kompajlerom i drugim softverom za ručno kreiranje, a zatim klonirajmo repozitorij:

% 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, vladajuće jedinice i XRDP skripte za pokretanje pod putanjama datoteka koje se koriste u Archu Linux, 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ćavanje poboljšanog načina sesije za Arch Linux-gosti u Hyper-V-u
Omogućavanje poboljšanog načina sesije za Arch Linux-gosti u Hyper-V-u

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

Omogućavanje poboljšanog načina sesije za Arch Linux-gosti u Hyper-V-u

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ćavanje poboljšanog načina sesije za Arch Linux-gosti u Hyper-V-u

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 bilo kojeg razloga želite koristiti ugrađenu aplikaciju vmconnect umjesto Windows RDP klijent ili, na primjer, povezivanje na ovu mašinu s druge mašine, tada ćete morati promijeniti 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

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster