Lülitame sisse Enhanced Session Mode Arch Linuxi külaliste jaoks Hyper-V-s

Lülitame sisse Enhanced Session Mode Arch Linuxi külaliste jaoks Hyper-V-s

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 mitmeid integreerimisteenuseid — 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, XRDP siis teiste jaotustega on asjad vähem selged — näiteks autoril selles postituses õ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 hyperv

Aktiveerime VSS, meteandmete ja failide vahetamise teenused: % 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; done

XRDP installimine

Repo linux-vm-tools 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/arch

Kä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, milles on rikutud 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 yay, 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.git

Alustame 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 oli eemaldatud 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 -0600

Kogume 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.sh

Skript 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_nodelay

Lisame failile ~/ .xinitrc oma eelistatud aknahalduri / töölaua keskkonna käivitamine, mis käivitub X-serveri alguses:

% echo "exec i3" > ~/ .xinitrc

Lülitame virtuaalmaquina välja. Aktiveerime virtuaalmaquina vsock transporti, käivitades järgmise käsu PowerShellis administraatorina:

PS Admin > Set-VM -VMName MACHINE_NAME -EnhancedSessionTransportType HvSocket

Lü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.

Lülitame sisse Enhanced Session Mode Arch Linuxi külaliste jaoks Hyper-V-s
Lülitame sisse Enhanced Session Mode Arch Linuxi külaliste jaoks Hyper-V-s

Ühendame. Näeme XRDP sisselogimisakent:

Lülitame sisse Enhanced Session Mode Arch Linuxi külaliste jaoks Hyper-V-s

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ülitame sisse Enhanced Session Mode Arch Linuxi külaliste jaoks Hyper-V-s

Lõikepuhver töötab normaalselt. Prindid ei saa suunatud olla, kuna see ei ole mitte ainult toetatud, vaid rikub ketaste suunamist. 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:

  1. Hyper-V — Arch Wiki
  2. Bugitõrked GitHubis: 1, 2

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster