Hyper-V์์ ์ฆ์ Linux ๊ฐ์ ๋จธ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฒ์คํธ Windows ๋จธ์ ๋ณด๋ค ๋ค์ ๋ถํธํฉ๋๋ค. ๊ทธ ์ด์ ๋ Hyper-V๊ฐ ์๋ ๋ฐ์คํฌํฑ์ฉ์ด ์๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฅ ๊ฐ์ ๊ฒ์คํธ ์ถ๊ฐ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์คํ ๊ฐ๋ฅํ ๊ทธ๋ํฝ ๊ฐ์, ํด๋ฆฝ๋ณด๋, ๊ณต์ ๋๋ ํ ๋ฆฌ ๋ฐ ๊ธฐํ ์ถ์ ์ฆ๊ฑฐ์์ VirtualBox์์ ์ป์ ์๋ ์์ต๋๋ค.
Hyper-V ์์ฒด๊ฐ ์ ๊ณตํ๋ Copy-VMFile
PowerShell์์). ๋ฌผ๋ก Windows๋ฅผ ํฌํจํ ์ผ๋ถ ๊ฒ์คํธ ์ด์ ์ฒด์ ์ ๊ฒฝ์ฐ Virtual Machine Connection ์ ํ๋ฆฌ์ผ์ด์
(vmconnect.exe
) RDP ํ๋กํ ์ฝ์ ํตํด ์๋ํ๋ ํฅ์๋ ์ธ์
๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋์คํฌ ์ฅ์น ๋ฐ ํ๋ฆฐํฐ๋ฅผ ๊ฐ์ ๋จธ์ ์ผ๋ก ์ ๋ฌํ๊ณ ๊ณต์ ํด๋ฆฝ๋ณด๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ณ ๊ธ ์ธ์
๋ชจ๋๋ ์ค์น ์งํ Hyper-V์ Windows์์ ๋ฐ๋ก ์๋ํฉ๋๋ค. Linux์ ๊ฒ์คํธ์์๋ vsock(ํ์ดํผ๋ฐ์ด์ ์ ํต์ ํ๋๋ก ์ค๊ณ๋ Linux์ ํน์ ๊ฐ์ ๋คํธ์ํฌ ์ฃผ์ ๊ณต๊ฐ)์ ์ง์ํ๋ RDP ์๋ฒ๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. Ubuntu์ ๊ฒฝ์ฐ Windows ๋ฐ์คํฌํฑ ์๋์
์ Hyper-V์ ํจ๊ป ์ ๊ณต๋๋ VMCreate ์ ํ๋ฆฌ์ผ์ด์
์๋ vsock๊ณผ ํจ๊ป ์คํ๋๋ RDP ์๋ฒ๊ฐ ์๋ ํน๋ณํ ์ค๋น๋ ๊ฐ์ ๋จธ์ ํ
ํ๋ฆฟ์ด ์์ต๋๋ค.
ํตํฉ ์๋น์ค ์ค์น
์ฌ๊ธฐ์์๋ ๋ชจ๋ ๊ฒ์ด ๋ค์ ๊ฐ๋จํฉ๋๋ค. ํจํค์ง๋ฅผ ์ค์นํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. hyperv
์ปค๋ฎค๋ํฐ ์ ์ฅ์์์:
% sudo pacman -S hyperv
VSS ์๋น์ค ํ์ฑํ, ๊ตํ
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done
XRDP ์ค์น
์ ์ฅ์
% 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://
-addresses์ด๋ฏ๋ก Git์์ XRDP๋ฅผ ์ค์นํ๊ณ AUR์์ Xorg ๋๋ผ์ด๋ฒ๋ฅผ ์๋์ผ๋ก ์ค์นํด์ผ ํฉ๋๋ค. AUR์์ ์ ๊ณต๋๋ XRDP์ฉ ํจ์น๋ ์ฝ๊ฐ ๊ตฌ์์ด๋ฏ๋ก PKGBUILD์ ํจ์น๋ฅผ ์๋์ผ๋ก ํธ์งํด์ผ ํฉ๋๋ค.
AUR์์ PKGBUILD๋ก ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณต์ ํฉ๋๋ค(์ผ๋ฐ์ ์ผ๋ก ์ด ์ ์ฐจ๋ ์ด์
๋ธ๋ฆฌ์ ํจ๊ป ๋ค์๊ณผ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ์ํด ์๋ํ๋ฉ๋๋ค.
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.git
๋จผ์ XRDP ์์ฒด๋ฅผ ์ค์นํด ๋ณด๊ฒ ์ต๋๋ค. ํ์ผ์ ์ด์ด๋ณด์ PKGBUILD
๋ชจ๋ ํ
์คํธ ํธ์ง๊ธฐ.
๋น๋ ๋งค๊ฐ๋ณ์๋ฅผ ์์ ํด ๋ณด๊ฒ ์ต๋๋ค. Git์์ XRDP๋ฅผ ๋น๋ํ๊ธฐ ์ํ PKGBUILD๋ ๋น๋์ 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
, Arch Linux์์ ์ฌ์ฉ๋๋ ํ์ผ์ ๊ฒฝ๋ก ์๋์ ์๋ ๋จ์ ๋ฐ XRDP ์์ ์คํฌ๋ฆฝํธ๋ฅผ ํธ์งํ๋ฉฐ ๋ฌด์๋ณด๋ค๋ ์คํฌ๋ฆฝํธ์ ๋ํ ํจ์น๋ฅผ ํฌํจํฉ๋๋ค. instfiles/xrdp.sh
, ์์ฑ ๋น์
[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
๊ฐ์ ๋จธ์ ์ ๋์. PowerShell์์ ๊ด๋ฆฌ์๋ก ๋ค์ ๋ช ๋ น์ ์คํํ์ฌ VM์ ๋ํ vsock ์ ์ก์ ํ์ฑํํฉ๋๋ค.
PS Admin > Set-VM -VMName ะะะะะะะะ_ะะะจะะะซ -EnhancedSessionTransportType HvSocket
๋ค์ ๊ฐ์๋จธ์ ์ ์ผ๋ด ์๋ค.
ะะพะดะบะปััะตะฝะธะต
์์คํ ์ด ์์๋ ํ XRDP ์๋น์ค๊ฐ ์์๋๋ ์ฆ์ vmconnect ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ฅผ ๊ฒฐ์ ํ๊ณ ๋ฉ๋ด ํญ๋ชฉ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. ๊ด์ธก -> ํฅ์๋ ์ธ์ . ์ด ํญ๋ชฉ์ ์ ํํ๋ฉด ํ๋ฉด ํด์๋๋ฅผ ์ค์ ํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋๊ณ ํญ์์ ์ง์ญ ์์ ์ด๋ฆฌ๋ ๋ํ ์์์์ RDP ์ธ์ ๋ด์์ ์ ๋ฌ๋๋ ์ฅ์น๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ฐ๊ฒฐํฉ์๋ค. XRDP ๋ก๊ทธ์ธ ์ฐฝ์ด ํ์๋ฉ๋๋ค.
์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ธ์.
์ฌ์ฉ
์ด๋ฌํ ์กฐ์์ ์ด์ ์ ๋์ ๋๋๋ค. RDP ์ธ์
์ ๊ณ ๊ธ ์ธ์
์์ด ๊ฐ์ ๋์คํ๋ ์ด๋ก ์์
ํ ๋๋ณด๋ค ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ํฉ๋๋ค. RDP๋ฅผ ํตํด VM ๋ด๋ถ๋ก ์ ๋ฌ๋ ๋์คํฌ๋ ๋๋ ํฐ๋ฆฌ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ${HOME}/shared-drives
:
ํด๋ฆฝ๋ณด๋๊ฐ ์ ์๋ํฉ๋๋ค. ๋ด๋ถ์ ํ๋ฆฐํฐ๋ฅผ ๋์ง ์ ์์ต๋๋ค. ์ด๋ ์ง์๋์ง ์์ ๋ฟ๋ง ์๋๋ผ
์ด๋ค ์ด์ ๋ก vmconnect ์ ํ๋ฆฌ์ผ์ด์
๋์ Windows์ ๋ด์ฅ๋ RDP ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ๋๋ ์๋ฅผ ๋ค์ด ๋ค๋ฅธ ์์คํ
์์ ์ด ์์คํ
์ ์ฐ๊ฒฐํ๋ ค๋ ๊ฒฝ์ฐ ํ์ผ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. /etc/xrdp/xrdp.ini
port
์ tcp://:3389
. ๊ฐ์ ๋จธ์ ์ด ๊ธฐ๋ณธ ์ค์์น์ ์ฐ๊ฒฐ๋์ด ์๊ณ DHCP๋ฅผ ํตํด ๋คํธ์ํฌ ์ค์ ์ ์์ ํ๋ ๊ฒฝ์ฐ ๋ค์ ํธ์คํธ์์ ๊ฐ์ ๋จธ์ ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ะฝะฐะทะฒะฐะฝะธะต_ะผะฐัะธะฝั.mshome.net
. ๊ณ ๊ธ ๋ชจ๋๋ฅผ ๊บผ์ผ vmconnect ์ ํ๋ฆฌ์ผ์ด์
์์ TTY์ ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค.
์ฌ์ฉ ๋ ์์ค:
Hyper-V ์์น ์ํค - GitHub์ ๋ฒ๊ทธ ๋ณด๊ณ ์:
1 ,2
์ถ์ฒ : habr.com