Luba täiustatud seansirežiim Arch Linuxi külaliste jaoks Hyper-V-s

Luba täiustatud seansirežiim Arch Linuxi külaliste jaoks Hyper-V-s

Linuxi virtuaalmasinate kasutamine Hyper-V-s karbist väljas on mõnevõrra vähem mugav kui külalis Windowsi masinatega. Põhjus on selles, et Hyper-V ei olnud algselt mõeldud lauaarvuti kasutamiseks; te ei saa lihtsalt minna ja installida külaliste lisade pakett ja saada toimiva graafikakiirendus, lõikelaud, jagatud kataloogid ja muud elurõõmud, nagu see VirtualBoxis juhtub.

Hyper-V ise pakub mitu integratsiooniteenust - seega saavad külalised kasutada hosti varikoopiateenust (VSS), külalised saavad saata väljalülitussignaali, külalised saavad sünkroonida süsteemiaega virtualiseerimishostiga, faile saab hostist virtuaalmasinaga vahetada (Copy-VMFile PowerShellis). Mõne külalisoperatsioonisüsteemi, sealhulgas muidugi Windowsi jaoks rakenduses Virtual Machine Connection (vmconnect.exe) Saadaval on täiustatud seansirežiim, mis töötab RDP-protokolli kaudu ja võimaldab kettaseadmeid ja printereid virtuaalmasinasse edastada, samuti kasutada jagatud lõikepuhvrit.

Täiustatud seansirežiim töötab Windowsis Hyper-V-s kohe pärast installimist. Linuxi külaliste puhul peate installima RDP-serveri, mis toetab vsocki (spetsiaalne virtuaalse võrgu aadressiruum Linuxis, mis on loodud hüperviisoriga suhtlemiseks). Ubuntu puhul on Windowsi töölauaväljaannetes Hyper-V-ga kaasas oleval VMCreate rakendusel spetsiaalne ettevalmistatud virtuaalmasina mall, milles RDP-server töötab koos vsockiga XRDP juba eelinstallitud, siis teiste distributsioonidega on see järjest vähem selge – näiteks autor see postitus selgus, et see lubab Fedoras ESM-i. Siin lubame ka Arch Linuxi virtuaalmasina jaoks täiustatud seansirežiimi.

Integratsiooniteenuste installimine

Siin on kõik enam-vähem lihtne, peame lihtsalt paketi installima hyperv kogukonna hoidlast:

% sudo pacman -S hyperv

Luba VSS-teenused, vaheta metaandmed ja failid:

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

XRDP installimine

hoidla linux-vm-tööriistad GitHubis pakub skripte, mis automatiseerivad XRDP installimise ja konfigureerimise protsessi Arch Linuxi ja Ubuntu jaoks. Installige Git, kui see pole veel installitud, koos kompilaatori ja muu käsitsi koostamise tarkvaraga ning seejärel kloonige hoidla:

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

Selle kirjutamise ajal XRDP uusim väljalase, mille skript installib makepkg.shhoidlas pakutud on 0.9.11, milles sõelumine on katkenud vsock://-aadressid, nii et peate installima XRDP Gitist ja Xorgi draiveri AUR-ist käsitsi. AUR-is pakutav XRDP plaaster on samuti veidi vananenud, nii et peate PKGBUILD-i ja plaastrit käsitsi redigeerima.

Kloonime hoidlad AUR-ist pärit PKGBUILD-idega (tavaliselt automatiseerivad selle protseduuri koos kokkupanekuga sellised programmid nagu jess, kuid autor tegi kogu selle protseduuri puhtas süsteemis):

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

Installime esmalt XRDP enda. Avame faili PKGBUILD mis tahes tekstiredaktor.

Redigeerime ehitusparameetreid. Gitist XRDP ehitamiseks mõeldud PKGBUILD ei sisalda ehitamisel vsocki tuge, seega lubame selle 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-pixman 
+              --enable-vsock
   make V=0
 }

Plaastris arch-config.diff, mis redigeerib üksusi ja XRDP käivitusskripte Arch Linuxis kasutatavate failide teede all, sisaldab muuhulgas skripti paika instfiles/xrdp.sh, mis kirjutamise ajal eemaldati XRDP distributsioonist, seega tuleb plaastrit käsitsi redigeerida:

  [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

Ehitage ja installige pakett käsuga % makepkg --skipchecksums -si (võti --skipchecksums on vajalik lähtefailide kontrollsumma kontrollimise keelamiseks, kuna muutsime neid käsitsi).

Läheme kataloogi xorgxrdp-devel-git, mille järel ehitame paketi lihtsalt käsuga % makepkg -si.

Läheme kataloogi linux-vm-tools/arch ja käivitage skript install-config.sh, mis määrab XRDP, PolicyKiti ja PAM-i sätted:

% sudo ./install-config.sh

Skript installib pärandseade use_vsock, mida eiratakse alates versioonist 0.9.11, nii et redigeerime konfiguratsioonifaili /etc/xrdp/xrdp.ini käsitsi:

 ;   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

Lisa faili ~/.xinitrc eelistatud aknahalduri/töölauakeskkonna käivitamine, mis käivitatakse X-serveri käivitamisel:

% echo "exec i3" > ~/.xinitrc

Lülitame virtuaalmasina välja. Lubage VM-i jaoks vsocki transport, käivitades PowerShellis administraatorina järgmise käsu:

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

Lülitame virtuaalmasina uuesti sisse.

Подключение

Niipea, kui XRDP-teenus käivitub pärast süsteemi käivitumist, teeb vmconnect rakendus selle kindlaks ja menüüelement muutub kättesaadavaks. vaade -> Täiustatud seanss. Kui valite selle üksuse, palutakse meil määrata ekraani eraldusvõime ja vahekaardil Kohalikud ressursid avanevas dialoogiaknas saate valida RDP seansi sees edastatud seadmed.

Luba täiustatud seansirežiim Arch Linuxi külaliste jaoks Hyper-V-s
Luba täiustatud seansirežiim Arch Linuxi külaliste jaoks Hyper-V-s

Ühendame. Näeme XRDP sisselogimisakent:

Luba täiustatud seansirežiim Arch Linuxi külaliste jaoks Hyper-V-s

Sisesta oma kasutajanimi ja parool.

Kasutama

Nendest manipulatsioonidest saadav kasum on märgatav: RDP seanss töötab palju tundlikumalt kui töötades virtuaalse kuvaga ilma täiustatud seansita. VM-is RDP kaudu edastatud kettad on kataloogis saadaval ${HOME}/shared-drives:

Luba täiustatud seansirežiim Arch Linuxi külaliste jaoks Hyper-V-s

Lõikelaud töötab hästi. Te ei saa printereid sisse visata, seda mitte ainult ei toetata, vaid ka katkestab ketta edastamise. Heli ka ei tööta, aga autoril polnud seda vaja. Klaviatuuri otseteede (nt Alt + Tab) jäädvustamiseks peate laiendama vmconnecti täisekraanile.

Kui mingil põhjusel tekib soov vmconnect rakenduse asemel kasutada Windowsi sisseehitatud RDP klienti või näiteks selle masinaga teisest masinast ühenduda, siis tuleb faili muuta /etc/xrdp/xrdp.ini port edasi tcp://:3389. Kui virtuaalmasin on ühendatud vaikelülitiga ja võtab võrgusätted vastu DHCP kaudu, saate sellega ühenduse luua hostist aadressil название_машины.mshome.net. Saate TTY-sse sisse logida ainult rakendusest vmconnect, lülitades välja täiustatud režiimi.

Kasutatud allikad:

  1. Hyper-V Arch Wiki
  2. Veaaruanded GitHubis: 1, 2

Allikas: www.habr.com

Lisa kommentaar