
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 - 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 već unaprijed instaliran, onda je s drugim distribucijama sve manje jasno - na primjer, autor 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 hypervOmogućimo VSS i servise razmjene i fajlovi:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneInstaliranje XRDP-a
spremište 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/archU 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, 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 , 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.gitHajde 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 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 -0600Hajde 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.shSkripta 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_nodelayDodaj 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" > ~/.xinitrcIsključ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 HvSocketUključ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.


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

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:

Međuspremnik radi dobro. Ne možete proslijediti štampače unutra; ovo ne samo da nije podržano, već i . 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:
- Izvještaji o greškama na GitHubu: ,
izvor: www.habr.com
