Įgalinkite patobulintą seanso režimą „Arch Linux“ svečiams „Hyper-V“.

Įgalinkite patobulintą seanso režimą „Arch Linux“ svečiams „Hyper-V“.

Naudoti „Linux“ virtualias mašinas „Hyper-V“ yra šiek tiek mažiau patogu nei naudojant „Windows“ svečius. Taip yra dėl to, kad „Hyper-V“ iš pradžių nebuvo skirtas naudoti staliniuose kompiuteriuose; Negalite tiesiog įdiegti svečių papildymų paketo ir gauti veiksmingą grafikos pagreitį, iškarpinę, bendrinamus katalogus ir kitus gyvenimo džiaugsmus, kaip tai vyksta „VirtualBox“.

Pati „Hyper-V“ suteikia kelių integravimo paslaugų - taigi, svečiai gali naudotis pagrindinio kompiuterio šešėline kopijavimo paslauga (VSS), svečiai gali siųsti išjungimo signalą, svečiai gali sinchronizuoti sistemos laiką su virtualizacijos priegloba, failais gali būti keičiamasi su virtualia mašina iš pagrindinio kompiuterio (Copy-VMFile „PowerShell“). Kai kurioms svečių operacinėms sistemoms, įskaitant, žinoma, „Windows“, „Virtual Machine Connection“ programoje (vmconnect.exe) Galimas patobulintas seanso režimas, kuris veikia per RDP protokolą ir leidžia persiųsti disko įrenginius ir spausdintuvus į virtualią mašiną, taip pat naudoti bendrinamą iškarpinę.

Patobulintas seanso režimas veikia iš karto po įdiegimo Hyper-V sistemoje Windows. Jei naudojate „Linux“ svečius, turite įdiegti KPP serverį, palaikantį „vsock“ (specialią virtualaus tinklo adresų erdvę Linux sistemoje, skirtą bendrauti su hipervizoriumi). Jei Ubuntu, VMCreate programa, kuri pateikiama su Hyper-V darbalaukio Windows leidimuose, turi specialų paruoštą virtualios mašinos šabloną, kuriame KPP serveris veikia su vsock. XRDP jau iš anksto įdiegta, tada su kitais platinimais vis mažiau aišku - pavyzdžiui, autorius šis įrašas paaiškėjo, kad Fedora įgalino ESM. Čia taip pat įjungiame patobulintą seanso režimą „Arch Linux“ virtualiajai mašinai.

Integravimo paslaugų diegimas

Čia viskas daugiau ar mažiau paprasta, tereikia įdiegti paketą hyperv iš bendruomenės saugyklos:

% sudo pacman -S hyperv

Įjungti VSS paslaugas, keistis metaduomenys ir failai:

% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done

XRDP diegimas

saugykla linux-vm-tools „GitHub“ teikia scenarijus, kurie automatizuoja XRDP diegimo ir konfigūravimo procesą „Arch Linux“ ir „Ubuntu“. Įdiekite „Git“, jei jis dar neįdiegtas, kartu su kompiliatoriumi ir kita programine įranga rankiniam kūrimui, tada klonuokite saugyklą:

% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/arch

Šio rašymo metu naujausia XRDP versija, kurią įdiegė scenarijus makepkg.shsaugykloje siūlomas 0.9.11, kuriame nutrūksta analizavimas vsock://-adresai, todėl turite rankiniu būdu įdiegti XRDP iš Git ir Xorg tvarkyklę iš AUR. AUR siūlomas XRDP pleistras taip pat yra šiek tiek pasenęs, todėl turėsite redaguoti PKGBUILD ir pataisą rankiniu būdu.

Mes klonuojame saugyklas su PKGBUILD iš AUR (paprastai šią procedūrą kartu su surinkimu automatizuoja tokios programos kaip Valio, bet autorius atliko visą šią procedūrą švarioje sistemoje):

% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.git

Pirmiausia įdiegkime patį XRDP. Atidarykime failą PKGBUILD bet koks teksto redaktorius.

Redaguojame kūrimo parametrus. PKGBUILD, skirtas XRDP kūrimui iš Git, neįtraukia vsock palaikymo į kūrimą, todėl įgalinkime jį patys:

 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
 }

Lope arch-config.diff, kuri redaguoja vienetus ir XRDP paleisties scenarijus pagal Arch Linux naudojamų failų kelius, be kita ko, yra scenarijaus pataisa instfiles/xrdp.sh, kuris rašymo metu buvo pašalintas iš XRDP platinimo, todėl pataisą reikės redaguoti rankiniu būdu:

  [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

Sukurkite ir įdiekite paketą naudodami komandą % makepkg --skipchecksums -si (Raktas --skipchecksums reikalingas norint išjungti šaltinio failų kontrolinės sumos patikrinimą, nes juos redagavome rankiniu būdu).

Eikime į katalogą xorgxrdp-devel-git, po kurio mes tiesiog sukuriame paketą su komanda % makepkg -si.

Eikime į katalogą linux-vm-tools/arch ir paleiskite scenarijų install-config.sh, kuriame nustatomi XRDP, PolicyKit ir PAM nustatymai:

% sudo ./install-config.sh

Scenarijus įdiegia seną nustatymą use_vsock, kuris yra ignoruojamas nuo 0.9.11 versijos, todėl redaguojame konfigūracijos failą /etc/xrdp/xrdp.ini rankiniu būdu:

 ;   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

Pridėti prie failo ~/.xinitrc paleisti pageidaujamą langų tvarkyklę / darbalaukio aplinką, kuri bus vykdoma paleidus X serverį:

% echo "exec i3" > ~/.xinitrc

Išjunkime virtualią mašiną. Įgalinkite vsock transportavimą VM, vykdydami šią komandą PowerShell kaip administratorius:

PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocket

Vėl įjunkite virtualią mašiną.

ryšys

Kai tik XRDP paslauga prasidės po sistemos paleidimo, programa vmconnect tai nustatys ir meniu elementas taps prieinamas. Vaizdas -> Patobulinta sesija. Kai pasirinksite šį elementą, būsime paraginti nustatyti ekrano skiriamąją gebą ir skirtuke Vietos ištekliai atsidariusiame dialogo lange galite pasirinkti įrenginius, persiunčiamus KPP seanso metu.

Įgalinkite patobulintą seanso režimą „Arch Linux“ svečiams „Hyper-V“.
Įgalinkite patobulintą seanso režimą „Arch Linux“ svečiams „Hyper-V“.

Prisijunkime. Pamatysime XRDP prisijungimo langą:

Įgalinkite patobulintą seanso režimą „Arch Linux“ svečiams „Hyper-V“.

Įveskite savo vartotojo vardą ir slaptažodį.

Naudoti

Šių manipuliacijų nauda yra pastebima: KPP seansas veikia daug greičiau nei dirbant su virtualiu ekranu be patobulinto seanso. Diskai, persiųsti VM viduje per KPP, yra kataloge ${HOME}/shared-drives:

Įgalinkite patobulintą seanso režimą „Arch Linux“ svečiams „Hyper-V“.

Iškarpinė veikia gerai. Negalite mesti spausdintuvų į vidų, tai ne tik nepalaikoma, bet ir nutraukia disko persiuntimą. Garsas irgi neveikia, bet autoriui jo neprireikė. Norėdami užfiksuoti sparčiuosius klavišus, pvz., Alt + Tab, turite išplėsti vmconnect iki viso ekrano.

Jei dėl kokių nors priežasčių norite naudoti „Windows“ įmontuotą RDP klientą, o ne programą „vmconnect“ arba, pavyzdžiui, prisijungti prie šio įrenginio iš kito įrenginio, tada turėsite pakeisti failą /etc/xrdp/xrdp.ini port apie tcp://:3389. Jei virtualioji mašina prijungta prie numatytojo jungiklio ir tinklo nustatymus gauna per DHCP, galite prisijungti prie jos iš pagrindinio kompiuterio adresu название_машины.mshome.net. Prie TTY galite prisijungti tik iš programos vmconnect išjungę patobulintą režimą.

Naudoti šaltiniai:

  1. „Hyper-V Arch Wiki“.
  2. Pranešimai apie klaidas „GitHub“: 1, 2

Šaltinis: www.habr.com

Добавить комментарий