I-enable ang Enhanced Session Mode para sa mga bisita sa Arch Linux sa Hyper-V

I-enable ang Enhanced Session Mode para sa mga bisita sa Arch Linux sa Hyper-V

Ang paggamit ng mga virtual machine ng Linux sa Hyper-V sa labas ng kahon ay medyo hindi gaanong komportable kaysa sa mga guest na Windows machine. Ang dahilan nito ay ang Hyper-V ay hindi orihinal na inilaan para sa paggamit ng desktop; hindi ka maaaring magpatuloy at mag-install ng package ng mga karagdagan ng bisita at makakuha ng maisasagawa na graphics acceleration, clipboard, nakabahaging mga direktoryo at iba pang kagalakan ng buhay, tulad ng nangyayari sa VirtualBox.

Ang Hyper-V mismo ay nagbibigay maramihang mga serbisyo ng pagsasama - kaya, ang mga bisita ay maaaring gumamit ng shadow copy service (VSS) ng host, ang mga bisita ay maaaring magpadala ng shutdown signal, ang mga bisita ay maaaring i-synchronize ang oras ng system sa virtualization host, ang mga file ay maaaring ipagpalit sa virtual machine mula sa host (Copy-VMFile sa PowerShell). Para sa ilang mga operating system ng bisita, kabilang, siyempre, ang Windows, sa application ng Virtual Machine Connection (vmconnect.exe) Available ang Enhanced Session Mode, na gumagana sa pamamagitan ng RDP protocol at nagbibigay-daan sa iyong ipasa ang mga disk device at printer sa virtual machine, gayundin ang paggamit ng shared clipboard.

Gumagana sa labas ng kahon ang Enhanced Session Mode sa Windows sa Hyper-V pagkatapos ng pag-install. Sa mga bisita sa Linux, kailangan mong mag-install ng RDP server na sumusuporta sa vsock (isang espesyal na virtual network address space sa Linux na idinisenyo upang makipag-ugnayan sa hypervisor). Kung para sa Ubuntu, ang VMCreate application na kasama ng Hyper-V sa mga desktop edition ng Windows ay may espesyal na inihandang virtual machine template kung saan tumatakbo ang isang RDP server na may vsock XRDP naka-pre-install na, pagkatapos ay sa iba pang mga pamamahagi ito ay hindi gaanong malinaw - halimbawa, ang may-akda itong poste ito pala ay upang paganahin ang ESM sa Fedora. Dito rin namin pinagana ang Enhanced Session Mode para sa Arch Linux virtual machine.

Pag-install ng mga serbisyo sa pagsasama

Ang lahat ay higit pa o hindi gaanong simple dito, kailangan lang nating i-install ang package hyperv mula sa imbakan ng komunidad:

% sudo pacman -S hyperv

Paganahin ang mga serbisyo ng VSS, palitan metadata at mga file:

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

Pag-install ng XRDP

imbakan linux-vm-tools sa GitHub ay nagbibigay ng mga script na nag-automate sa proseso ng pag-install at pag-configure ng XRDP para sa Arch Linux at Ubuntu. I-install ang Git, kung hindi pa ito naka-install, kasama ang compiler at iba pang software para sa mga manu-manong build, at pagkatapos ay i-clone ang repositoryo:

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

Sa oras ng pagsulat na ito, ang pinakabagong release ng XRDP, na na-install ng script makepkg.shiminungkahi sa repositoryo ay 0.9.11, kung saan nasira ang pag-parse vsock://-addresses, kaya kailangan mong i-install ang XRDP mula sa Git at ang driver ng Xorg para dito mula sa AUR nang manu-mano. Ang patch para sa XRDP na inaalok sa AUR ay medyo luma na rin, kaya kailangan mong manu-manong i-edit ang PKGBUILD at ang patch.

Kino-clone namin ang mga repository sa mga PKGBUILD mula sa AUR (kadalasan ang pamamaraang ito, kasama ang pagpupulong, ay awtomatiko ng mga programa tulad ng yay, ngunit ginawa ng may-akda ang buong pamamaraang ito sa isang malinis na sistema):

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

I-install muna natin ang XRDP mismo. Buksan natin ang file PKGBUILD anumang text editor.

I-edit natin ang mga parameter ng build. Ang PKGBUILD para sa pagbuo ng XRDP mula sa Git ay hindi kasama ang suporta sa vsock sa build, kaya paganahin natin ito sa ating sarili:

 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
 }

Sa isang patch arch-config.diff, na nag-e-edit ng mga unit at XRDP startup script sa ilalim ng mga path sa mga file na ginagamit sa Arch Linux, ay naglalaman, bukod sa iba pang mga bagay, ng patch sa script instfiles/xrdp.sh, na sa oras ng pagsulat ay tinanggal mula sa pamamahagi ng XRDP, kaya kailangang manu-manong i-edit ang patch:

  [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

Buuin at i-install ang package gamit ang command % makepkg --skipchecksums -si (susi --skipchecksums ay kinakailangan upang hindi paganahin ang checksum na pag-verify ng mga source file, dahil mano-mano naming na-edit ang mga ito).

Pumunta tayo sa direktoryo xorgxrdp-devel-git, pagkatapos ay bubuo lang kami ng package gamit ang command % makepkg -si.

Pumunta tayo sa direktoryo linux-vm-tools/arch at patakbuhin ang script install-config.sh, na nagtatakda ng mga setting ng XRDP, PolicyKit at PAM:

% sudo ./install-config.sh

Pag-install ng script ng legacy na setting use_vsock, na hindi pinapansin mula noong bersyon 0.9.11, kaya i-edit natin ang configuration file /etc/xrdp/xrdp.ini mano-mano:

 ;   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

Idagdag sa file ~/.xinitrc paglulunsad ng iyong gustong window manager/desktop environment, na isasagawa kapag nagsimula ang X server:

% echo "exec i3" > ~/.xinitrc

I-off natin ang virtual machine. Paganahin ang vsock transport para sa VM sa pamamagitan ng pagpapatakbo ng sumusunod na command sa PowerShell bilang isang administrator:

PS Admin > Set-VM -VMName ΠΠΠ—Π’ΠΠΠ˜Π•_МАШИНЫ -EnhancedSessionTransportType HvSocket

I-on natin muli ang virtual machine.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Sa sandaling magsimula ang serbisyo ng XRDP pagkatapos magsimula ang system, matutukoy ito ng vmconnect application at magiging available ang menu item. tingnan -> Pinahusay na session. Kapag pinili mo ang item na ito, ipo-prompt kami na itakda ang resolution ng screen, at sa tab Mga Mapagkukunang Lokal sa dialog na bubukas, maaari mong piliin ang mga device na ipinapasa sa loob ng session ng RDP.

I-enable ang Enhanced Session Mode para sa mga bisita sa Arch Linux sa Hyper-V
I-enable ang Enhanced Session Mode para sa mga bisita sa Arch Linux sa Hyper-V

Kumonekta tayo. Makikita natin ang XRDP login window:

I-enable ang Enhanced Session Mode para sa mga bisita sa Arch Linux sa Hyper-V

Ipasok ang iyong username at password.

Gamitin

Ang kita mula sa mga manipulasyong ito ay kapansin-pansin: ang RDP session ay gumagana nang higit na tumutugon kaysa kapag nagtatrabaho sa isang virtual na display nang walang Enhanced Session. Ang mga disk na ipinasa sa loob ng VM sa pamamagitan ng RDP ay magagamit sa direktoryo ${HOME}/shared-drives:

I-enable ang Enhanced Session Mode para sa mga bisita sa Arch Linux sa Hyper-V

Gumagana nang maayos ang clipboard. Hindi ka maaaring magtapon ng mga printer sa loob, hindi lamang ito suportado, kundi pati na rin sinisira ang pagpapasa ng disk. Hindi rin gumagana ang tunog, ngunit hindi ito kailangan ng may-akda. Upang makuha ang mga keyboard shortcut tulad ng Alt + Tab, kailangan mong palawakin ang vmconnect sa full screen.

Kung sa ilang kadahilanan ay may pagnanais na gamitin ang RDP client na naka-built in sa Windows sa halip na ang vmconnect application o, halimbawa, kumonekta sa makina na ito mula sa isa pang makina, pagkatapos ay kakailanganin mong baguhin ang file /etc/xrdp/xrdp.ini port sa tcp://:3389. Kung nakakonekta ang virtual machine sa Default Switch at tumatanggap ng mga setting ng network sa pamamagitan ng DHCP, maaari kang kumonekta dito mula sa host sa Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΌΠ°ΡˆΠΈΠ½Ρ‹.mshome.net. Maaari ka lamang mag-log in sa TTY mula sa vmconnect application sa pamamagitan ng pag-off sa Enhanced Mode.

Mga ginamit na mapagkukunan:

  1. Hyper-V Arch Wiki
  2. Mga ulat ng bug sa GitHub: 1, 2

Pinagmulan: www.habr.com

Magdagdag ng komento