
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 - 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-ΡΠ΅ΡΠ²Π΅Ρ naka-pre-install na, pagkatapos ay sa iba pang mga pamamahagi ito ay hindi gaanong malinaw - halimbawa, ang may-akda ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ 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 hypervPaganahin ang mga serbisyo ng VSS, palitan at mga file:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; donePag-install ng XRDP
imbakan Π½Π° 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/archSa oras ng pagsulat na ito, ang pinakabagong release ng XRDP, na na-install ng script makepkg.shiminungkahi sa repositoryo ay 0.9.11, 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 , 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.gitI-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 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 -0600Buuin 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.shPag-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_nodelayIdagdag sa file ~/.xinitrc paglulunsad ng iyong gustong window manager/desktop environment, na isasagawa kapag nagsimula ang X server:
% echo "exec i3" > ~/.xinitrcI-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 HvSocketI-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.


Kumonekta tayo. Makikita natin ang XRDP login window:

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:

Gumagana nang maayos ang clipboard. Hindi ka maaaring magtapon ng mga printer sa loob, hindi lamang ito suportado, kundi pati na rin . 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:
- Mga ulat ng bug sa GitHub: ,
Pinagmulan: www.habr.com
