Paganahin ang Pinahusay na Mode ng Sesyon para sa Arch Linux-mga bisita sa Hyper-V

Paganahin ang Pinahusay na Mode ng Sesyon para sa Arch Linux-mga bisita sa Hyper-V

Paggamit ng mga virtual machine sa Linux sa Hyper-V na inilalabas sa kahon ay medyo hindi gaanong komportable ang karanasan kumpara sa mga bisita Windows-машинами. ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠΌΡƒ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Hyper-V всС ΠΆΠ΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅ прСдназначался для дСсктопного пользования; нСльзя просто Π²Π·ΡΡ‚ΡŒ, ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ гостСвых Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ работоспособноС графичСскоС ускорСниС, Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°, ΠΎΠ±Ρ‰ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ радости ΠΆΠΈΠ·Π½ΠΈ, ΠΊΠ°ΠΊ это происходит Π² 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 Π² PowerShell). Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… гостСвых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, Π² числС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, находится ΠΈ Windows, Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 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.

Enhanced Session Mode ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Windows Π² Hyper-V сразу послС установки. Π‘ гостями Π½Π° Linux Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ RDP-сСрвСр, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ vsock (ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ сСтСвоС адрСсноС пространство Π² Linux, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ для ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ с Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΠΎΠΌ). Если для Ubuntu Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ VMCreate, ΠΈΠ΄ΡƒΡ‰ΠΈΠΌ с Hyper-V Π½Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… рСдакциях Windows, Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ шаблон Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с vsock RDP-сСрвСр XRDP naka-pre-install na, pagkatapos ay sa iba pang mga pamamahagi ito ay hindi gaanong malinaw - halimbawa, ang may-akda itong poste ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ESM Π² Fedora. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ ΠΌΡ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅ΠΌ Enhanced Session Mode для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с Arch Linux.

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 Π½Π° GitHub прСдоставляСт скрипты, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ процСсс установки ΠΈ настройки XRDP, для Arch Linux ΠΈ Ubuntu. Установим Git, Ссли ΠΎΠ½ Π΅Ρ‰Π΅ Π½Π΅ установлСн, вмСстС с компилятором ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ софтом для Ρ€ΡƒΡ‡Π½Ρ‹Ρ… сборок, послС Ρ‡Π΅Π³ΠΎ склонируСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

% 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, правящСм ΡŽΠ½ΠΈΡ‚Ρ‹ ΠΈ скрипты запуска XRDP ΠΏΠΎΠ΄ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π² Arch Linux, содСрТится Π² Ρ‚ΠΎΠΌ числС ΠΏΠ°Ρ‚Ρ‡ ΠΊ скрипту 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 ang iyong Bansa -> 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.

Paganahin ang Pinahusay na Mode ng Sesyon para sa Arch Linux-mga bisita sa Hyper-V
Paganahin ang Pinahusay na Mode ng Sesyon para sa Arch Linux-mga bisita sa Hyper-V

Kumonekta tayo. Makikita natin ang XRDP login window:

Paganahin ang Pinahusay na Mode ng Sesyon para sa Arch Linux-mga bisita 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:

Paganahin ang Pinahusay na Mode ng Sesyon para sa Arch Linux-mga bisita 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.

Если ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π΅ΡΡ‚ΡŒ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто прилоТСния vmconnect встроСнный Π² Windows RDP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ этой машинС ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ /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

Bumili ng maaasahang pagho-host para sa mga site na may proteksyon ng DDoS, mga server ng VPS VDS πŸ”₯ Bumili ng maaasahang website hosting na may proteksyon ng DDoS, VPS VDS servers | ProHoster