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

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

เบเบฒเบ™เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡ virtual เปƒเบ™ Linux เปƒเบ™ Hyper-V เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเป‰เบง เป€เบ›เบฑเบ™เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ—เบตเปˆเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบเปœเป‰เบญเบเบเบงเปˆเบฒเบเบฑเบšเปเบ‚เบเป€เบฅเบฑเบเบ™เป‰เบญเบ Windows-machines. เป€เบซเบ”เบœเบปเบ™เบชเบณเบฅเบฑเบšเบชเบดเปˆเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบงเปˆเบฒ Hyper-V เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเบชเบณเบฅเบฑเบšเบเบฒเบ™เปƒเบŠเป‰ desktop เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™; เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบžเบฑเบเป€เบเบ” Guest Additions เปเบฅเบฐ เป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเป„เบงเบเบฃเบฒเบšเบŸเบดเบเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰, clipboard, shared directories เปเบฅเบฐ เบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”เบญเบทเปˆเบ™เป†, เบ„เบทเบเบฑเบšเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบเบฑเบš VirtualBox.

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

เป‚เปเบ”เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ—เบตเปˆเบ›เบฑเบšเบ›เบธเบ‡เปเบฅเป‰เบงเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ—เบฑเบ™เบ—เบต Windows เปƒเบ™ Hyper-V เบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡. เบ”เป‰เบงเบเปเบ‚เบเบ—เบตเปˆเป€เบ›เบตเบ”เบขเบนเปˆ Linux เป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบŠเบตเบšเป€เบงเบต RDP เบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบš vsock (เบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบขเบนเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบเป€เบชเบกเบทเบ™เบžเบดเป€เบชเบ”เปƒเบ™ Linux, เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบชเบทเปˆเบชเบฒเบ™เบเบฑเบš hypervisor). เบ–เป‰เบฒเบชเบณเบฅเบฑเบš Ubuntu เปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ VMCreate เบ—เบตเปˆเบกเบฒเบžเป‰เบญเบกเบเบฑเบš Hyper-V เปƒเบ™เบฅเบธเป‰เบ™เป€เบ”เบฑเบชเบ—เบฑเบญเบš Windows, เบกเบตเปเบกเปˆเปเบšเบšเป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเบเบฝเบกเป„เบงเป‰เบžเบดเป€เบชเบ”เป€เบŠเบดเปˆเบ‡เป€เบŠเบตเบšเป€เบงเบต RDP เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš vsock XRDP เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบงเป‰เบเปˆเบญเบ™เปเบฅเป‰เบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เปเบˆเบเบขเบฒเบเบญเบทเปˆเบ™เป†, เบกเบฑเบ™เบซเบ™เป‰เบญเบเบฅเบปเบ‡เปเบฅเบฐเบŠเบฑเบ”เป€เบˆเบ™ - เบ•เบปเบงเบขเปˆเบฒเบ‡, เบœเบนเป‰เบ‚เบฝเบ™ เบ•เบญเบšเบ™เบตเป‰ เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบˆเบฑเบ”เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰ ESM เปƒเบ™ Fedora. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เปเบ” Enhanced Session เบชเบณเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡ virtual 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, เบ–เป‰เบฒเบกเบฑเบ™เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบžเป‰เบญเบกเบเบฑเบš compiler เปเบฅเบฐเบŠเบญเบšเปเบงเบญเบทเปˆเบ™เป†เบชเบณเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ clone repository:

% 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