Microsoft๋ Windows์์ Linux ์คํ ํ์ผ์ ์คํํ๋๋ก ์ค๊ณ๋ WSL2(Linux์ฉ Windows ํ์ ์์คํ ) ํ์ ์์คํ ๊ธฐ๋ฐ ํ๊ฒฝ์์ ๊ทธ๋ํฝ ์ธํฐํ์ด์ค๋ก Linux ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ธฐ๋ฅ์ ํ ์คํธํ๊ธฐ ์์ํ๋ค๊ณ ๋ฐํํ์ต๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ ๋ฉ๋ด์ ๋ฐ๋ก ๊ฐ๊ธฐ ๋ฐฐ์น, ์๋ฆฌ ์ฌ์, ๋ง์ดํฌ ๋ น์, OpenGL ํ๋์จ์ด ๊ฐ์, ์์ ํ์์ค์ ํ๋ก๊ทธ๋จ ์ ๋ณด ํ์, Alt-Tab์ผ๋ก ํ๋ก๊ทธ๋จ ๊ฐ ์ ํ, ๋ฐ์ดํฐ ๋ณต์ฌ ์ง์์ ํฌํจํ์ฌ ๊ธฐ๋ณธ Windows ๋ฐํ ํ๋ฉด๊ณผ ์์ ํ ํตํฉ๋ฉ๋๋ค. ํด๋ฆฝ๋ณด๋๋ฅผ ํตํด Windows์ Linux ํ๋ก๊ทธ๋จ ์ฌ์ด.
๊ธฐ๋ณธ Windows ๋ฐ์คํฌํฑ์ ๋ํ Linux ์ ํ๋ฆฌ์ผ์ด์ ์ธํฐํ์ด์ค์ ์ถ๋ ฅ์ ๊ตฌ์ฑํ๊ธฐ ์ํด Wayland ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ณ Weston ์ฝ๋ ๊ธฐ๋ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Microsoft์์ ๊ฐ๋ฐํ RAIL-Shell ๋ณตํฉ ๊ด๋ฆฌ์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ถ๋ ฅ์ RDP-RAIL(RDP Remote Application Integrated Locally) ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋๋ฉฐ, ๋ณตํฉ ๊ด๋ฆฌ์๊ฐ ๋ฐ์คํฌํ ์์ฒด๋ฅผ ๊ทธ๋ฆฌ์ง ์๊ณ ๊ฐ๋ณ ํ๋ฉด(wl_surface)์ ๊ธฐ๋ณธ Windows ๋ฐํ ํ๋ฉด์ ํ์ํ๊ธฐ ์ํ RDP RAIL ์ฑ๋์ ๋๋ค. X11 ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ค๋ฉด XWayland๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ค๋์ค ์ถ๋ ฅ์ RDP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ Windows์ ์ํธ ์์ฉํ๋ PulseAudio ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ๋ฉ๋๋ค(rdp-sink ํ๋ฌ๊ทธ์ธ์ ์ค๋์ค ์ถ๋ ฅ์ ์ฌ์ฉ๋๊ณ rdp-source๋ ์ ๋ ฅ์ ์ฌ์ฉ๋จ). Composite Server, XWayland ๋ฐ PulseAudio๋ ๊ทธ๋ํฝ ๋ฐ ์ค๋์ค ํ์ ์์คํ ์ ์ถ์ํํ๊ธฐ ์ํ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํ๊ณ Microsoft ํด๋ผ์ฐ๋ ์ธํ๋ผ์์๋ ์ฌ์ฉ๋๋ CBL-Mariner Linux ๋ฐฐํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฒ์ฉ WSLGd ๋ฏธ๋ ๋ฐฐํฌ๋ก ํจํค์ง๋ฉ๋๋ค. WSLGd๋ ๊ฐ์ํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์คํ๋๋ฉฐ virtio-fs๋ Linux ๊ฒ์คํธ์ Windows ํธ์คํธ ๊ฐ์ ๊ณต์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
FreeRDP๋ WSLGd Linux ํ๊ฒฝ์์ ์คํ๋๋ RDP ์๋ฒ๋ก ์ฌ์ฉ๋๋ฉฐ mstsc๋ Windows ์ธก์ RDP ํด๋ผ์ด์ธํธ์ ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๊ทธ๋ํฝ Linux ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ธํ๊ณ Windows ๋ฉ๋ด์ ํ์ํ๊ธฐ ์ํด WSLDVCPlugin ์ฒ๋ฆฌ๊ธฐ๊ฐ ์ค๋น๋์์ต๋๋ค. Ubuntu, Debian ๋ฐ CenOS์ ๊ฐ์ ์ผ๋ฐ์ ์ธ Linux ๋ฐฐํฌํ์ด WSL2 ํ๊ฒฝ์ ์ค์น๋ ๊ฒฝ์ฐ WSLGd์์ ์คํ๋๋ ๊ตฌ์ฑ ์์ ์งํฉ์ Wayland, X11 ๋ฐ PulseAudio ํ๋กํ ์ฝ์ ํตํ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์์ผ์ ์ ๊ณตํ์ฌ ํต์ ํฉ๋๋ค. WSLGd ์ค๋น ๋ฐ์ธ๋ฉ์ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
WSLGd๋ฅผ ์ค์นํ๋ ค๋ฉด Windows 10 Insider Preview ๋ฒ์ 21362 ์ด์์ด ํ์ํฉ๋๋ค. ์์ผ๋ก WSLGd๋ Insider Preview ํ๋ก๊ทธ๋จ์ ์ฐธ์ฌํ ํ์ ์์ด ์ผ๋ฐ Windows ๋ฒ์ ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. WSLGd๋ ์ผ๋ฐ์ ์ธ wsl --install ๋ช ๋ น(์: Ubuntu์ ๊ฒฝ์ฐ "wsl --install -d Ubuntu")์ ์คํํ์ฌ ์ค์น๋ฉ๋๋ค. ๊ธฐ์กด WSL2 ํ๊ฒฝ์ ๊ฒฝ์ฐ WSLGd ์ค์น๋ "wsl --update" ๋ช ๋ น์ ํตํด ์ํ๋ฉ๋๋ค(Call Translation์ด ์๋ Linux ์ปค๋์ ์ฌ์ฉํ๋ WSL2 ํ๊ฒฝ๋ง ์ง์๋จ). ๊ทธ๋ํฝ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌํ์ ์ผ๋ฐ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ํตํด ์ค์น๋ฉ๋๋ค.
WSLGd๋ 2D ๊ทธ๋ํฝ ๋ ๋๋ง์ ์ํ ๋ฉ์ปค๋์ฆ๋ง ์ ๊ณตํ๋ฉฐ OpenGL์ ๊ธฐ๋ฐ์ผ๋ก 3D ๊ทธ๋ํฝ์ ๊ฐ์ํํ๊ธฐ ์ํด WSL2์ ์ค์น๋ ๋ฐฐํฌํ์์๋ ๊ฐ์ GPU(vGPU)๋ฅผ ์ฌ์ฉํ ๊ฒ์ ์ ์ํฉ๋๋ค. WSL์ฉ vGPU ๋๋ผ์ด๋ฒ๋ AMD, Intel ๋ฐ NVIDIA ์นฉ์ฉ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค. ๊ทธ๋ํฝ ๊ฐ์์ DirectX 12๋ฅผ ํตํด OpenGL์ ๊ตฌํํ ๋ ์ด์ด ์ ๊ณต์ ํตํด ์ ๊ณต๋ฉ๋๋ค. ๋ ์ด์ด๋ Mesa 3์ ์ฃผ์ ๊ตฌ์ฑ์ ํฌํจ๋์ด Collabora์ ๊ณต๋์ผ๋ก ๊ฐ๋ฐ๋ d12d21.0 ๋๋ผ์ด๋ฒ๋ก ์ค๊ณ๋์์ต๋๋ค.
๊ฐ์ GPU์ ์๋์ Windows ์ปค๋์ WDDM(Windows ๋์คํ๋ ์ด ๋๋ผ์ด๋ฒ ๋ชจ๋ธ) D3DKMT๋ฅผ ๋ชจ๋ฐฉํ๋ ์๋น์ค์ ํจ๊ป /dev/dxg ์ฅ์น๋ฅผ ์ฌ์ฉํ์ฌ Linux์์ ๊ตฌํ๋ฉ๋๋ค. ๋๋ผ์ด๋ฒ๋ VM ๋ฒ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌผ๋ฆฌ์ GPU์ ๋ํ ์ฐ๊ฒฐ์ ์ค์ ํฉ๋๋ค. Linux ์์ฉ ํ๋ก๊ทธ๋จ์ Windows์ Linux ๊ฐ์ ๋ฆฌ์์ค ๊ณต์ ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ธฐ๋ณธ Windows ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๋์ผํ ์์ค์ GPU ์ก์ธ์ค๋ฅผ ๊ฐ์ต๋๋ค. Intel GPU๊ฐ ์ฅ์ฐฉ๋ Surface Book Gen3 ์ฅ์น์ ์ฑ๋ฅ ํ ์คํธ์์ Geeks32D GpuTest๋ ๊ธฐ๋ณธ Win3 ํ๊ฒฝ์์ 19 FPS, vGPU๊ฐ ์๋ Linux ํ๊ฒฝ์์ 18 FPS, Mesa์์ ์ํํธ์จ์ด ๋ ๋๋ง์ด 1 FPS์ธ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
์ถ์ฒ : opennet.ru