
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ Π½Π° Linux Π Hyper-V Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠ·ΠΆΠΈΠ²ΡΠ²Π°Π½Π΅, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Ρ Π³ΠΎΡΡ Windows-ΠΌΠ°ΡΠΈΠ½ΠΈ. ΠΡΠΈΡΠΈΠ½Π°ΡΠ° Π·Π° ΡΠΎΠ²Π° Π΅, ΡΠ΅ Hyper-V ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π½Π΅ Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ Π·Π° Π½Π°ΡΡΠΎΠ»Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°; Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Guest Additions ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ Π³ΡΠ°ΡΠΈΡΠ½ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅, ΠΊΠ»ΠΈΠΏΠ±ΠΎΡΠ΄, ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°, ΠΊΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Ρ VirtualBox.
Π‘Π°ΠΌΠΈΡΡ Hyper-V ΠΎΡΠΈΠ³ΡΡΡΠ²Π° - ΡΠ°ΠΊΠ° ΡΠ΅ Π³ΠΎΡΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΡΠΊΡΠΈΡΠΎ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° Ρ
ΠΎΡΡΠ° (VSS), Π³ΠΎΡΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΡΡ ΡΠΈΠ³Π½Π°Π» Π·Π° ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅, Π³ΠΎΡΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Ρ Ρ
ΠΎΡΡΠ° Π·Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΎΠ±ΠΌΠ΅Π½ΡΡ ΠΎΡ Ρ
ΠΎΡΡΠ° Ρ Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° (Copy-VMFile Π² PowerShell). ΠΠ° Π½ΡΠΊΠΎΠΈ Π³ΠΎΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π° Windows, Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π·Π° Π²ΡΡΠ·ΠΊΠ° Ρ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° (vmconnect.exe) ΠΠ°Π»ΠΈΡΠ΅Π½ Π΅ Enhanced Session Mode, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΡΡΠ΅Π· RDP ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠ΅Ρ
Π²ΡΡΠ»ΡΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΠΏΡΠΈΠ½ΡΠ΅ΡΠΈ ΠΊΡΠΌ Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ ΠΊΠ»ΠΈΠΏΠ±ΠΎΡΠ΄.
ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠ΅ΡΠΈΡ ΡΠ°Π±ΠΎΡΠΈ Π²Π΅Π΄Π½Π°Π³Π° ΡΠΎΠΌ Π΅ Π³ΠΎΡΠΎΠ² Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Windows Π² Hyper-V Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ. Π‘ Π³ΠΎΡΡΠΈ Π½Π° Linux ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ RDP ΡΡΡΠ²ΡΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° vsock (ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π²ΠΈΡΡΡΠ°Π»Π½ΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ Π°Π΄ΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π² Linux, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ Ρ Ρ ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠ°). ΠΠΊΠΎ Π·Π° Ubuntu Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ VMCreate, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Ρ Hyper-V Π½Π° Π½Π°ΡΡΠΎΠ»Π½ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡ Windows, ΠΈΠΌΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, Π² ΠΊΠΎΠΉΡΠΎ RDP ΡΡΡΠ²ΡΡ ΡΠ°Π±ΠΎΡΠΈ Ρ vsock Π²Π΅ΡΠ΅ Π΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Ρ Π΄ΡΡΠ³ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π΅ Π²ΡΠ΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΡΠ½ΠΎ - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π°Π²ΡΠΎΡΡΡ Π£ΡΠΏΡΡ ΠΌΠ΅ Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΌΠ΅ ESM Π²ΡΠ² Fedora. Π’ΡΠΊ ΡΡΡΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΌΠ΅ Enhanced Session Mode Π·Π° Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° Arch. Linux.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ
Π’ΡΠΊ Π²ΡΠΈΡΠΊΠΎ Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΡΠΎΡΡΠΎ, ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° hyperv ΠΎΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°:
% sudo pacman -S hypervΠΠ΅ΠΊΠ° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΌΠ΅ VSS ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° XRDP
Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π² 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ΠΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ, Π½Π°ΠΉ-Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° XRDP, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΎΡ ΡΠΊΡΠΈΠΏΡΠ° makepkg.shΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π°ΡΠ° Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π΅ 0.9.11, vsock://-Π°Π΄ΡΠ΅ΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ XRDP ΠΎΡ Git ΠΈ Xorg Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π·Π° Π½Π΅Π³ΠΎ ΠΎΡ AUR ΡΡΡΠ½ΠΎ. ΠΠ°ΡΡΡ XRDP, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π½ Π² AUR, ΡΡΡΠΎ Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΎΡΡΠ°ΡΡΠ», ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ PKGBUILD ΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠΈΡΡΠ° ΡΡΡΠ½ΠΎ.
ΠΠ΅ΠΊΠ° ΠΊΠ»ΠΎΠ½ΠΈΡΠ°ΠΌΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Ρ PKGBUILD ΠΎΡ AUR (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ°Π·ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, Π·Π°Π΅Π΄Π½ΠΎ Ρ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ, ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ° ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΊΠ°ΡΠΎ , Π½ΠΎ Π°Π²ΡΠΎΡΡΡ Π΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ» ΡΡΠ»Π°ΡΠ° ΡΠ°Π·ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π½Π° ΡΠΈΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitΠΠ΅ΠΊΠ° ΠΏΡΡΠ²ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΈΡ XRDP. ΠΠ° ΠΎΡΠ²ΠΎΡΠΈΠΌ ΡΠ°ΠΉΠ»Π° PKGBUILD Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ.
ΠΠ΅ΠΊΠ° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅. PKGBUILD Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° XRDP ΠΎΡ Git Π½Π΅ Π²ΠΊΠ»ΡΡΠ²Π° vsock ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΏΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π΅ΠΊΠ° Π³ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΈ:
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
}Π ΠΏΠ»Π°ΡΡΠΈΡΠ° arch-config.diff, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠΈ ΠΈ XRDP ΡΡΠ°ΡΡΠΎΠ²ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΏΠΎΠ΄ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΡΠΈΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Arch Linux, ΡΡΠ΄ΡΡΠΆΠ° ΠΏΠ°Ρ ΠΊΡΠΌ ΡΠΊΡΠΈΠΏΡΠ° instfiles/xrdp.sh, ΠΊΠΎΠΉΡΠΎ ΠΊΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΠΏΠΈΡΠ°Π½Π΅ ΠΎΡ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° XRDP, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΊΠΎΡΠ΅ΠΊΡΠΈΡΡΠ° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ° ΡΡΡΠ½ΠΎ:
[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ΠΠ΅ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΠΌΠ΅ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° % makepkg --skipchecksums -si (ΠΊΠ»ΡΡ --skipchecksums Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΡΠΌΠ° Π½Π° ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π³ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Ρ
ΠΌΠ΅ ΡΡΡΠ½ΠΎ).
ΠΠ° ΠΎΡΠΈΠ΄Π΅ΠΌ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° xorgxrdp-devel-git, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° % makepkg -si.
ΠΠ° ΠΎΡΠΈΠ΄Π΅ΠΌ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° linux-vm-tools/arch ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° install-config.sh, ΠΊΠΎΠΉΡΠΎ Π·Π°Π΄Π°Π²Π° XRDP, PolicyKit ΠΈ PAM Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:
% sudo ./install-config.shΠ‘ΠΊΡΠΈΠΏΡΡΡ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Π½Π°ΡΠ»Π΅Π΄Π΅Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° use_vsock, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π½ ΠΎΡ Π²Π΅ΡΡΠΈΡ 0.9.11, ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π΅ΠΊΠ° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» /etc/xrdp/xrdp.ini ΡΡΡΠ½ΠΎ:
; 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ΠΠΎΠ±Π°Π²ΡΠ½Π΅ ΠΊΡΠΌ ΡΠ°ΠΉΠ»Π° ~/.xinitrc ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²Π°ΡΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ/Π΄Π΅ΡΠΊΡΠΎΠΏ ΡΡΠ΅Π΄Π°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° X ΡΡΡΠ²ΡΡΠ°:
% echo "exec i3" > ~/.xinitrcΠΠ΅ΠΊΠ° ΠΈΠ·ΠΊΠ»ΡΡΠΈΠΌ Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°. ΠΠΊΡΠΈΠ²ΠΈΡΠ°ΠΌΠ΅ vsock ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ° Π·Π° Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² PowerShell ΠΊΠ°ΡΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ:
PS Admin > Set-VM -VMName ΠΠΠΠΠΠΠΠ_ΠΠΠ¨ΠΠΠ« -EnhancedSessionTransportType HvSocketΠΠ΅ΠΊΠ° ΠΎΡΠ½ΠΎΠ²ΠΎ Π²ΠΊΠ»ΡΡΠΈΠΌ Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ΅Π΄Π½Π°Π³Π° ΡΠΎΠΌ ΡΡΠ»ΡΠ³Π°ΡΠ° XRDP ΡΡΠ°ΡΡΠΈΡΠ° ΡΠ»Π΅Π΄ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ vmconnect ΡΠ΅ ΠΎΡΠΊΡΠΈΠ΅ ΡΠΎΠ²Π° ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΡΡ ΡΠ΅ ΡΡΠ°Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΌΠ΅Π½ΡΡΠΎ ΠΠ»Π΅Π΄ΠΊΠ° -> ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΡΠ΅ΡΠΈΡ. ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠ·ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ, ΡΠ΅ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ°Π½Π΅Π½ΠΈ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π½Π°ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π½Π° Π΅ΠΊΡΠ°Π½Π° ΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π° ΠΠ΅ΡΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΎΡΠ²Π°ΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΠΈΡΠΎ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ΅Π½ΠΈ ΠΊΡΠΌ RDP ΡΠ΅ΡΠΈΡΡΠ°.


ΠΠ΅ΠΊΠ° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΠΌ. Π©Π΅ Π²ΠΈΠ΄ΠΈΠΌ XRDP ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅:

ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ Π²Π°ΡΠ΅ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎ ΠΈΠΌΠ΅ ΠΈ ΠΏΠ°ΡΠΎΠ»Π°.
Π£ΠΏΠΎΡΡΠ΅Π±Π°
ΠΠΎΠ»Π·Π°ΡΠ° ΠΎΡ ΡΠ΅Π·ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΠΈ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ°: RDP ΡΠ΅ΡΠΈΡΡΠ° ΡΠ°Π±ΠΎΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΎΡΠ·ΠΈΠ²ΡΠΈΠ²ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Π²ΠΈΡΡΡΠ°Π»Π΅Π½ Π΄ΠΈΡΠΏΠ»Π΅ΠΉ Π±Π΅Π· Enhanced Session. ΠΠΈΡΠΊΠΎΠ²Π΅, ΠΏΡΡΠ½Π°ΡΠΈ Π²ΡΠ² Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° ΡΡΠ΅Π· RDP, ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ${HOME}/shared-drives:

ΠΠ»ΠΈΠΏΠ±ΠΎΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎΠ±ΡΠ΅. ΠΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ°ΡΠ΅ ΠΏΡΠΈΠ½ΡΠ΅ΡΠΈ Π²ΡΡΡΠ΅; ΡΠΎΠ²Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°, Π½ΠΎ ΠΈ . ΠΠ²ΡΠΊΡΡ ΡΡΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ, Π½ΠΎ Π°Π²ΡΠΎΡΡΡ Π½ΡΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠΎΠ²Π°. ΠΠ° Π΄Π° Π·Π°ΡΠ½Π΅ΠΌΠ΅ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠ°ΡΠΎ Alt+Tab, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·ΡΠΈΡΠΈΡΠ΅ vmconnect Π½Π° ΡΡΠ» Π΅ΠΊΡΠ°Π½.
ΠΠΊΠΎ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ vmconnect Π²ΠΌΠ΅ΡΡΠΎ Windows RDP ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΠ»ΠΈ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΡΠ΅ Ρ ΡΠ°Π·ΠΈ ΠΌΠ°ΡΠΈΠ½Π° ΠΎΡ Π΄ΡΡΠ³Π° ΠΌΠ°ΡΠΈΠ½Π°, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»Π° /etc/xrdp/xrdp.ini port Π½Π° tcp://:3389. ΠΠΊΠΎ Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° ΠΊΡΠΌ Default Switch ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΡΠ΅Π· DHCP, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Ρ Π½Π΅Ρ ΠΎΡ Ρ
ΠΎΡΡΠ° Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΌΠ°ΡΠΈΠ½Ρ.mshome.net. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²Π»Π΅Π·Π΅ΡΠ΅ Π² TTY ΡΠ°ΠΌΠΎ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ vmconnect, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ:
- ΠΠΎΠΊΠ»Π°Π΄ΠΈ Π·Π° Π³ΡΠ΅ΡΠΊΠΈ Π² GitHub: ,
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com
