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:
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 prekinutovsock://-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):
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:
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:
Č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 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.iniport 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.