
Linuxi virtuaalmasinate kasutamine Hyper-V's on algselt mugavam kui Windowsi külalismasinate puhul. Põhjuseks on see, et Hyper-V ei olnud algselt mõeldud lauaarvuti kasutamiseks; ei saa lihtsalt võtta ja installida külaliste lisandmoodulit, et saada töövõimelisi graafika kiirendusi, lõikepuhvrit, ühiseid kaustasid ja teisi mugavusi nagu VirtualBoxis.
Hyper-V pakub — näiteks saavad külalised kasutada hosti varundusteenust (VSS), külalistele saab saata väljalülitussignaali, külalised saavad sünkroonida süsteemi kellaaega virtualiseerimishostiga, failide vahetamisvõimekus hostiga on olemas (Copy-VMFile PowerShellis). Mõnede külalisoperatsioonisüsteemide, sealhulgas Windowsi, jaoks on Virtual Machine Connection'is (vmconnect.exe) saadaval täiustatud seansirežiim, mis töötab RDP-protokolli alusel ja võimaldab suunata virtuaalmasinasse kettaid ja printereid, samuti kasutada ühiste lõikepuhvreid.
Enhanced Session Mode töötab Windowsis Hyper-V-s kohe pärast installimist. Linuxi külaliste puhul tuleb installida RDP-server, mis toetab vsock'i (eriline virtuaalne võrguaadresside kontseptsioon Linuxis, mis on mõeldud hüperviisoriga suhtlemiseks). Kui Ubuntu puhul on Hyper-V-ga kaasasolevas VMCreate rakenduses olemas spetsiaalne ettevalmistatud virtuaalmasina mall, milles on töötav RDP-server, mis toetab vsock'i, siis teiste jaotustega on asjad vähem selged — näiteks autoril õnnestus aktiveerida ESM Fedora-s. Siin aktiveerime Enhanced Session Mode virtuaalmasinale Arch Linuxiga.
Integratsiooniteenuste installimine
Siin on kõik enam-vähem lihtne, peame lihtsalt installima paketi hyperv community repositooriumist:
% sudo pacman -S hypervAktiveerime VSS, meteandmete % for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneXRDP installimine
Repo GitHub pakub skripte, mis automatiseerivad XRDP paigaldamise ja seadistamise protsessi Arch Linuxi ja Ubuntu jaoks. Alustame Git'i installimisega, kui see pole veel installitud, koos kompilaatori ja muu tarkvaraga käsitsi kompilatsioonide jaoks, seejärel kloonime reposi:
% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/archKäesoleva artikli kirjutamise hetkel on kõige värskem XRDP väljalase, mis paigaldatakse skripti abil makepkg.sh, mis on välja toodud repos, on 0.9.11, vsock://-aadresse, seetõttu tuleb XRDP paigaldada Git'i kaudu ning Xorg draiver installida AUR-ist käsitsi. AUR-is pakutav XRDP patch on samuti veidi aegunud, seega tuleb PKGBUILD-i ja patši käsitsi redigeerida.
Kloonime AUR-ist PKGBUILD-idega reposid (tavaliselt automatiseeritakse see protseduur koos ehitusega programmide nagu , kuid autor tegi kogu selle protseduuri puhtal süsteemil):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitAlustame XRDP installimist. Avame faili PKGBUILD mõne tekstiredaktoriga.
Redigeerime ehitamise parameetreid. PKGBUILD XRDP ehitamiseks Git'ist ei sisalda vsock tuge, seega lülitame selle sisse ise:
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-vsock
make V=0
}Patšas arch-config.diff, mis juhib XRDP üksusi ja käivitusskripte Arch Linuxi failide tee alla, sisaldab ka skripti muudatust instfiles/xrdp.sh, mis kirjutamise ajal XRDP tarnetest, seega tuleb patši redigeerida käsitsi:
[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 -0600Kogume ja installige pakett käsuga % makepkg --skipchecksums -si (võti --skipchecksums on vajalik allikafailide rikka kontrollimise keelamiseks, kuna oleme neid käsitsi redigeerinud).
Liigume kausta xorgxrdp-devel-git, pärast mida kogume lihtsalt paketi meeskonnaga % makepkg -si.
Liigume kausta linux-vm-tools/arch ja käivitame skripti install-config.sh, mis seadistab XRDP, PolicyKit ja PAM:
% sudo ./install-config.shSkript paigaldab aegunud seadistuse use_vsock, mis on versiooniga 0.9.11 ignoreeritud, seega redigeerime konfiguratsioonifaili /etc/xrdp/xrdp.ini käsitsi:
; port=vsock://:
-port=3389
+port=vsock://-1:3389
; 'port' ülal peaks olema ühendatud vsock'i, mitte tcp'ga
; kasuta seda ainult üksi numbriga ülal olevas port'is
; eelista kasutada vsock://: ülal
-use_vsock=true
+;use_vsock=true
; reguleeri, kas kuulamise sokkel kasutab sokli valikut tcp_nodelayLisame failile ~/ .xinitrc oma eelistatud aknahalduri / töölaua keskkonna käivitamine, mis käivitub X-serveri alguses:
% echo "exec i3" > ~/ .xinitrcLülitame virtuaalmaquina välja. Aktiveerime virtuaalmaquina vsock transporti, käivitades järgmise käsu PowerShellis administraatorina:
PS Admin > Set-VM -VMName MACHINE_NAME -EnhancedSessionTransportType HvSocketLülitame virtuaalmaquina uuesti sisse.
Ühendamine
Kuna pärast süsteemi käivitamist käivitub XRDP teenus, määrab rakendus vmconnect selle ära ja menüüs on saadaval valik Vaata -> Täpsem seanss. Valides selle valiku, palutakse meil seada ekraani resolutsioon, ja vahekaardil Kohalikud ressursid avatud dialoogis saab valida seadmest, mis suunatakse RDP-seanssi.


Ühendame. Näeme XRDP sisselogimisakent:

Sisestame oma kasutajanime ja parooli.
Kasutamine
Saadud kasu on märgatav: RDP seanss töötab palju sujuvamalt kui virtuaalse ekraani kasutamisel ilma Enhanced Sessionita. RDP kaudu VM-i suunatud ketas on saadaval kaustas ${HOME}/shared-drives:

Lõikepuhver töötab normaalselt. Prindid ei saa suunatud olla, kuna see ei ole mitte ainult toetatud, vaid . Samuti ei toimi heli, kuid autorile ei olnud see vajalik. Klaviatuurikombinatsioonide nagu Alt+Tab salvestamiseks tuleb vmconnect maksimaalselt laiendada.
Kui mingil põhjusel on soov kasutada vmconnecti asemel Windowsi sisseehitatud RDP klienti või näiteks ühendada sellele masinale teise masinaga, peab muutma faili /etc/xrdp/xrdp.ini port järgnevaga tcp://:3389. Kui virtuaalne masin on ühendatud Default Switchiga ja saab võrgu seadistused DHCP kaudu, siis saab sellele hostilt ühenduda aadressilt название_машины.mshome.net. TTY-sse saab siseneda ainult vmconnecti rakendusest, lülitades välja Enhanced Mode.
Kasutatud allikad:
- Bugitõrked GitHubis: ,
Allikas: habr.com
