เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เปเบ” Enhanced Session เบชเบณเบฅเบฑเบš Arch Linux-เปเบ‚เบเปƒเบ™ Hyper-V

เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เปเบ” Enhanced Session เบชเบณเบฅเบฑเบš Arch Linux-เปเบ‚เบเปƒเบ™ Hyper-V

เบเบฒเบ™เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡ virtual เปƒเบ™ Linux เปƒเบ™ Hyper-V เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเป‰เบง เป€เบ›เบฑเบ™เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ—เบตเปˆเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบเปœเป‰เบญเบเบเบงเปˆเบฒเบเบฑเบšเปเบ‚เบเป€เบฅเบฑเบเบ™เป‰เบญเบ Windows-ะผะฐัˆะธะฝะฐะผะธ. ะŸั€ะธั‡ะธะฝะพะน ั‚ะพะผัƒ ัะฒะปัะตั‚ัั ั‚ะพ, ั‡ั‚ะพ Hyper-V ะฒัะต ะถะต ะธะทะฝะฐั‡ะฐะปัŒะฝะพ ะฝะต ะฟั€ะตะดะฝะฐะทะฝะฐั‡ะฐะปัั ะดะปั ะดะตัะบั‚ะพะฟะฝะพะณะพ ะฟะพะปัŒะทะพะฒะฐะฝะธั; ะฝะตะปัŒะทั ะฟั€ะพัั‚ะพ ะฒะทัั‚ัŒ, ะฟะพัั‚ะฐะฒะธั‚ัŒ ะฟะฐะบะตั‚ ะณะพัั‚ะตะฒั‹ั… ะดะพะฟะพะปะฝะตะฝะธะน ะธ ะฟะพะปัƒั‡ะธั‚ัŒ ั€ะฐะฑะพั‚ะพัะฟะพัะพะฑะฝะพะต ะณั€ะฐั„ะธั‡ะตัะบะพะต ัƒัะบะพั€ะตะฝะธะต, ะฑัƒั„ะตั€ ะพะฑะผะตะฝะฐ, ะพะฑั‰ะธะต ะดะธั€ะตะบั‚ะพั€ะธะธ ะธ ะดั€ัƒะณะธะต ั€ะฐะดะพัั‚ะธ ะถะธะทะฝะธ, ะบะฐะบ ัั‚ะพ ะฟั€ะพะธัั…ะพะดะธั‚ ะฒ VirtualBox.

Hyper-V เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบชเบฐเบซเบ™เบญเบ‡ เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡ - เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปเบ‚เบเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเป€เบ‡เบปเบฒเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบžเบฒเบš (VSS), เปเบ‚เบเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เบ›เบดเบ”, เปเบ‚เบเบชเบฒเบกเบฒเบ” synchronize เป€เบงเบฅเบฒเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเบฑเบšเป€เบˆเบปเป‰เบฒเบžเบฒเบš virtualization, เป„เบŸเบฅเปŒเบชเบฒเบกเบฒเบ”เปเบฅเบเบ›เปˆเบฝเบ™เบˆเบฒเบเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡ virtual (Copy-VMFile ะฒ PowerShell). ะ”ะปั ะฝะตะบะพั‚ะพั€ั‹ั… ะณะพัั‚ะตะฒั‹ั… ะพะฟะตั€ะฐั†ะธะพะฝะฝั‹ั… ัะธัั‚ะตะผ, ะฒ ั‡ะธัะปะต ะบะพั‚ะพั€ั‹ั…, ะบะพะฝะตั‡ะฝะพ, ะฝะฐั…ะพะดะธั‚ัั ะธ Windows, ะฒ ะฟั€ะธะปะพะถะตะฝะธะธ Virtual Machine Connection (vmconnect.exe) เบฎเบนเบšเปเบšเบš Session เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰, เป€เบฎเบฑเบ”เบงเบฝเบเบœเปˆเบฒเบ™เป‚เบ›เป‚เบ•เบ„เบญเบ™ RDP เปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป‚เบญเบ™เบญเบธเบ›เบฐเบเบญเบ™เปเบœเปˆเบ™เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบžเบดเบกเป„เบ›เบเบฑเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ clipboard เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™.

Enhanced Session Mode ะธะท ะบะพั€ะพะฑะบะธ ั€ะฐะฑะพั‚ะฐะตั‚ ะฒ Windows ะฒ Hyper-V ัั€ะฐะทัƒ ะฟะพัะปะต ัƒัั‚ะฐะฝะพะฒะบะธ. ะก ะณะพัั‚ัะผะธ ะฝะฐ Linux ะฝัƒะถะฝะพ ัƒัั‚ะฐะฝะฐะฒะปะธะฒะฐั‚ัŒ RDP-ัะตั€ะฒะตั€, ะฟะพะดะดะตั€ะถะธะฒะฐัŽั‰ะธะน vsock (ัะฟะตั†ะธะฐะปัŒะฝะพะต ะฒะธั€ั‚ัƒะฐะปัŒะฝะพะต ัะตั‚ะตะฒะพะต ะฐะดั€ะตัะฝะพะต ะฟั€ะพัั‚ั€ะฐะฝัั‚ะฒะพ ะฒ Linux, ะฟั€ะตะดะฝะฐะทะฝะฐั‡ะตะฝะฝะพะต ะดะปั ะบะพะผะผัƒะฝะธะบะฐั†ะธะธ ั ะณะธะฟะตั€ะฒะธะทะพั€ะพะผ). ะ•ัะปะธ ะดะปั Ubuntu ะฒ ะฟั€ะธะปะพะถะตะฝะธะธ VMCreate, ะธะดัƒั‰ะธะผ ั Hyper-V ะฝะฐ ะฝะฐัั‚ะพะปัŒะฝั‹ั… ั€ะตะดะฐะบั†ะธัั… Windows, ะตัั‚ัŒ ัะฟะตั†ะธะฐะปัŒะฝั‹ะน ะฟะพะดะณะพั‚ะพะฒะปะตะฝะฝั‹ะน ัˆะฐะฑะปะพะฝ ะฒะธั€ั‚ัƒะฐะปัŒะฝะพะน ะผะฐัˆะธะฝั‹, ะฒ ะบะพั‚ะพั€ะพะผ ั€ะฐะฑะพั‚ะฐัŽั‰ะธะน ั vsock RDP-ัะตั€ะฒะตั€ XRDP เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบงเป‰เบเปˆเบญเบ™เปเบฅเป‰เบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เปเบˆเบเบขเบฒเบเบญเบทเปˆเบ™เป†, เบกเบฑเบ™เบซเบ™เป‰เบญเบเบฅเบปเบ‡เปเบฅเบฐเบŠเบฑเบ”เป€เบˆเบ™ - เบ•เบปเบงเบขเปˆเบฒเบ‡, เบœเบนเป‰เบ‚เบฝเบ™ เบ•เบญเบšเบ™เบตเป‰ ะฟะพะปัƒั‡ะธะปะพััŒ ะฒะบะปัŽั‡ะธั‚ัŒ ESM ะฒ Fedora. ะ—ะดะตััŒ ะถะต ะผั‹ ะฐะบั‚ะธะฒะธั€ัƒะตะผ Enhanced Session Mode ะดะปั ะฒะธั€ั‚ัƒะฐะปัŒะฝะพะน ะผะฐัˆะธะฝั‹ ั Arch Linux.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™

เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบเบซเบผเบทเบซเบ™เป‰เบญเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบŠเบธเบ” hyperv เบˆเบฒเบ repository เบŠเบธเบกเบŠเบปเบ™:

% sudo pacman -S hyperv

เปƒเบซเป‰เป€เบ›เบตเบ”เปƒเบŠเป‰ VSS เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ เป€เบกเบ•เบฒเป€เบ”เบ•เบฒ เปเบฅเบฐเป„เบŸเบฅเปŒ:

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

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ XRDP

เบ„เบฑเบ‡เป€เบเบฑเบšเบกเป‰เบฝเบ™ linux-vm-เป€เบ„เบทเปˆเบญเบ‡เบกเบท ะฝะฐ 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 patch เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเปƒเบ™ AUR เบเบฑเบ‡เบฅเป‰เบฒเบชเบฐเป„เบซเบกเป€เบฅเบฑเบเบ™เป‰เบญเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เปเบเป‰เป„เบ‚ PKGBUILD เปเบฅเบฐ patch เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡.

เปƒเบซเป‰ clone repositories เบเบฑเบš PKGBUILDs เบˆเบฒเบ AUR (เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰, เบ„เบฝเบ‡เบ„เบนเปˆเบเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เปเบกเปˆเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™เป€เบŠเบฑเปˆเบ™: yay, เปเบ•เปˆเบœเบนเป‰เบ‚เบฝเบ™เป„เบ”เป‰เป€เบฎเบฑเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบชเบฐเบญเบฒเบ”):

% 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
 }

เปƒเบ™ patch เป„เบ”เป‰ arch-config.diff, ะฟั€ะฐะฒัั‰ะตะผ ัŽะฝะธั‚ั‹ ะธ ัะบั€ะธะฟั‚ั‹ ะทะฐะฟัƒัะบะฐ XRDP ะฟะพะด ะฟัƒั‚ะธ ะบ ั„ะฐะนะปะฐะผ, ะธัะฟะพะปัŒะทัƒะตะผั‹ะผ ะฒ Arch Linux, ัะพะดะตั€ะถะธั‚ัั ะฒ ั‚ะพะผ ั‡ะธัะปะต ะฟะฐั‚ั‡ ะบ ัะบั€ะธะฟั‚ัƒ instfiles/xrdp.sh, เป€เบŠเบดเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ‚เบฝเบ™ เบ–เบทเบเป‚เบเบเบเป‰เบฒเบ เบˆเบฒเบเบเบฒเบ™เปเบˆเบเบขเบฒเบ XRDP, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ 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

เปƒเบซเป‰เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบŠเบธเบ”เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡ % makepkg --skipchecksums -si (เบเบฐเปเบˆ --skipchecksums เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เบ›เบดเบ”โ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบš checksum เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เปเบซเบผเปˆเบ‡โ€‹, เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบงเปˆเบฒโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เปƒเบซเป‰โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ”เป‰เบงเบโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹)โ€‹.

เปƒเบซเป‰เป„เบ›เบ—เบตเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต xorgxrdp-devel-git, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบเบญเบšเบŠเบธเบ”เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡ % makepkg -si.

เปƒเบซเป‰เป„เบ›เบ—เบตเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต linux-vm-tools/arch เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ script install-config.sh, เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ XRDP, PolicyKit เปเบฅเบฐ PAM:

% sudo ./install-config.sh

Script เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบšเบšเป€เบเบปเปˆเบฒ 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 เป€เบ›เบตเบ”เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก / desktop เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบกเบทเปˆเบญเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ X เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™:

% echo "exec i3" > ~/.xinitrc

เปƒเบซเป‰เบ›เบดเบ”เป€เบ„เบทเปˆเบญเบ‡ virtual. เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ‚เบปเบ™เบชเบปเปˆเบ‡ vsock เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡ virtual เป‚เบ”เบเบเบฒเบ™เปเบฅเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปƒเบ™ PowerShell เป€เบ›เบฑเบ™เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™:

PS Admin > Set-VM -VMName ะะะ—ะ’ะะะ˜ะ•_ะœะะจะ˜ะะซ -EnhancedSessionTransportType HvSocket

เบกเบฒเป€เบ›เบตเบ”เป€เบ„เบทเปˆเบญเบ‡เบชเบฐเป€เปเบทเบญเบ™เบญเบตเบเบ„เบฑเป‰เบ‡.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ

เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ XRDP เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบฅเบฐเบšเบปเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ vmconnect เบˆเบฐเบเบงเบ”เบžเบปเบšเบ™เบตเป‰เปเบฅเบฐเบฅเบฒเบเบเบฒเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เป€เบกเบ™เบน. เป€เบšเบดเปˆเบ‡ -> เป€เบŠเบ”เบŠเบฑเบ™เบ—เบตเปˆเบ›เบฑเบšเบ›เบธเบ‡. เป€เบกเบทเปˆเบญเป€เบฅเบทเบญเบเบฅเบฒเบเบเบฒเบ™เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ–เบทเบเป€เบ•เบทเบญเบ™เปƒเบซเป‰เบ•เบฑเป‰เบ‡เบ„เบงเบฒเบกเบฅเบฐเบญเบฝเบ”เปœเป‰เบฒเบˆเป, เปเบฅเบฐเบขเบนเปˆเปƒเบ™เปเบ–เบš เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ เปƒเบ™เบเปˆเบญเบ‡เป‚เบ•เป‰เบ•เบญเบšเบ—เบตเปˆเป€เบ›เบตเบ”เบ‚เบถเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ•เปเปˆเป„เบ›เบซเบฒเบเบญเบ‡เบ›เบฐเบŠเบธเบก RDP.

เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เปเบ” Enhanced Session เบชเบณเบฅเบฑเบš Arch Linux-เปเบ‚เบเปƒเบ™ Hyper-V
เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เปเบ” Enhanced Session เบชเบณเบฅเบฑเบš Arch Linux-เปเบ‚เบเปƒเบ™ Hyper-V

เปƒเบซเป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบซเบฑเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš XRDP:

เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เปเบ” Enhanced Session เบชเบณเบฅเบฑเบš Arch Linux-เปเบ‚เบเปƒเบ™ Hyper-V

เปƒเบชเปˆเบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰

เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบˆเบฒเบเบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™: เบเบญเบ‡เบ›เบฐเบŠเบธเบก RDP เป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบฒเบเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบซเบผเบฒเบเบเปˆเบงเบฒเป€เบงเบฅเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡ virtual เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ Session. เปเบœเปˆเบ™เบ—เบตเปˆเบซเบผเบธเบ”เบฅเบปเบ‡เบžเบฒเบเปƒเบ™ VM เบœเปˆเบฒเบ™ RDP เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต ${HOME}/shared-drives:

เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เปเบ” Enhanced Session เบชเบณเบฅเบฑเบš Arch Linux-เปเบ‚เบเปƒเบ™ Hyper-V

clipboard เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบต. เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบ•เปเปˆเป€เบ„เบทเปˆเบญเบ‡เบžเบดเบกเบžเบฒเบเปƒเบ™; เบ™เบตเป‰เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™, เปเบ•เปˆเบเบฑเบ‡ เบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเปเบœเปˆเบ™. เบชเบฝเบ‡เบเบฑเบ‡เบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ, เปเบ•เปˆเบœเบนเป‰เบ‚เบฝเบ™เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เบตเป‰. เป€เบžเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบ—เบฒเบ‡เบฅเบฑเบ”เปเบ›เป‰เบ™เบžเบดเบกเป€เบŠเบฑเปˆเบ™ Alt+Tab, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฐเบซเบเบฒเบ vmconnect เป€เบ›เบฑเบ™เป€เบ•เบฑเบกเบˆเป.

ะ•ัะปะธ ะฟะพ ะบะฐะบะธะผ-ะปะธะฑะพ ะฟั€ะธั‡ะธะฝะฐะผ ะตัั‚ัŒ ะถะตะปะฐะฝะธะต ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฒะผะตัั‚ะพ ะฟั€ะธะปะพะถะตะฝะธั vmconnect ะฒัั‚ั€ะพะตะฝะฝั‹ะน ะฒ Windows RDP-ะบะปะธะตะฝั‚ ะธะปะธ, ะฝะฐะฟั€ะธะผะตั€, ะฟะพะดะบะปัŽั‡ะฐั‚ัŒัั ะบ ัั‚ะพะน ะผะฐัˆะธะฝะต ะธะท ะดั€ัƒะณะพะน ะผะฐัˆะธะฝั‹, ั‚ะพ ะฝัƒะถะฝะพ ะฑัƒะดะตั‚ ะฟะพะผะตะฝัั‚ัŒ ะฒ ั„ะฐะนะปะต /etc/xrdp/xrdp.ini port เบชเบธเบ” tcp://:3389. เบ–เป‰เบฒเป€เบ„เบทเปˆเบญเบ‡ virtual เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš Default Switch เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบœเปˆเบฒเบ™ DHCP, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบกเบฑเบ™เบˆเบฒเบเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบ—เบตเปˆ ะฝะฐะทะฒะฐะฝะธะต_ะผะฐัˆะธะฝั‹.mshome.net. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš TTY เบˆเบฒเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ vmconnect เป‚เบ”เบเบเบฒเบ™เบ›เบดเบ”เป‚เปเบ”เบ›เบฑเบšเบ›เบธเบ‡.

เปเบซเบผเปˆเบ‡เบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰:

  1. Hyper-V - Arch Wiki
  2. เบฅเบฒเบเบ‡เบฒเบ™เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบเปˆเบฝเบงเบเบฑเบš GitHub: 1, 2

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster