WSL(Windows Subsystem for Linux) - ์๋์ฐ์ ๋ค์ด๊ฐ ๋ฆฌ๋ ์ค๋ ์ด๋ค ๊ฒ์ผ๊น?
๋๋์ด Windows์ bash shell์ด ํ์ฌ๋ ๋ชจ์ต์ ๋ง๋๊ฒ ๋์์ต๋๋ค. ์ด bash shell์์ ์ผ๋ง ๋งํผ์ ์ผ์ ํ ์ ์๊ณ , ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง๋ฅผ ํ ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
Bash shell์ Windows 10 1์ฃผ๋ ์ ๋ฐ์ดํธ๋ณธ ์ดํ๋ถํฐ ์ฌ์ฉํ์ค ์ ์์ต๋๋ค.
WSL ์ค์น
Linux๋ ์ ์ดํ์ ํ๋ก๊ทธ๋จ ๊ธฐ๋ฅ์์ ์ผ์ชฝ ์๋จ์ ์๋ [Windows ๊ธฐ๋ฅ ์ฌ์ฉ / ์ฌ์ฉ ์ํจ[ ์์ ์ค์นํ ์ ์์ต๋๋ค. ์ ์ฌ์ง์ฒ๋ผ Windows Subsystem for Linux ํน์, Linux ํ์ ์๋์ฐ ์์คํ ์ ์ฒดํฌํ์๋ฉด ๋ฉ๋๋ค.
Linux ์ค์น
WSL์ด ์ค์น๋์๋ค๋ฉด, ๋ช ๋ น ํ๋กฌํฌํธ ์ฐฝ์ ์ด์ด bash ๋ช ๋ น์ด๋ฅผ ์คํ์์ผ ์ค๋๋ค.
Linux๋ Ubuntu 14.04 ๋ฒ์ ์ด ์ค์น๋ฉ๋๋ค. ๋ง์ฝ, ์ ํ๋ฉด์ฒ๋ผ ๊ฐ๋ฐ์ ๋ชจ๋๋ฅผ ํ์ฑํํ๋ผ๋ ๋ฉ์์ง๊ฐ ๋์ค๋ฉด, ์๋์ ๊ฐ์ด ํด์ค๋๋ค.
์ค์ ์ฑ์์ ์ ๋ฐ์ดํธ / ๋ณด์ ๋ถ๋ถ์ ๊ฐ๋ฐ์ ๋ฉ๋ด๋ฅผ ์ ํํ๊ฒ ๋๋ฉด, ๊ฐ๋ฐ์ ๋ชจ๋๋ฅผ ํ์ฑํ ํ ์ ์์ต๋๋ค. ํ์ฑํํ ๊ฒฝ์ฐ, ์์ ๊ฐ์ ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ๋ํ๋๋๋ฐ, ์๋ฅผ ๋๋ฌ์ฃผ์๋ฉด ๋ฉ๋๋ค.
๋ค์ bash๋ฅผ ์คํํ๊ฒ ๋๋ฉด, ๊ณ์ํ๋ ค๋ฉด Y๋ฅผ ๋๋ฅด๋ผ๋ ๋ฉ์์ง๊ฐ ๋์ต๋๋ค. Y๋ฅผ ๋๋ฌ์ค๋๋ค.
๊ทธ๋ฌ๋ฉด Windows Store๋ฅผ ํตํด ๋ฆฌ๋ ์ค๋ฅผ ๋ค์ด๋ก๋ ๋ฐ๊ณ ์ค์นํ๊ฒ ๋ฉ๋๋ค.
์ค์น ์ค์ ์ต์ด ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ์ํธ๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค. ์ ๋ ฅ์ ํด์ค๋๋ค.
๊ทธ๋ฌ๋ฉด Linux์ ์ค์น๊ฐ ์๋ฃ๋ฉ๋๋ค.
WSL ๊ฐ๋จ ์ฌ์ฉ
์์ฃผ ๊ฐ๋จํ๊ฒ๋๋ง ๊ธฐ๋ณธ์ ์ธ ๋ช ๋ น์ด๋ฅผ ๋ช ๊ฐ ๋๋ ค๋ณด๊ณ ์ปค๋ ๋ถ๋ถ์ ์กฐ๊ธ ๋ค์ ธ๋ดค์ต๋๋ค. ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๊น์ง๋ ๋์ฒด์ ์ธ ๋ฆฌ๋ ์ค ๋ฐฉ์์ผ๋ก ๋์ํ๋ ๋ฏ ํ์ง๋ง ๋คํธ์ํฌ ์นด๋ ๋ฑ์ ํ๋์จ์ด ๋ถ๋ถ์ ๋ํ ์ง์ ์ก์ธ์ค๋ ๋ถ๊ฐ๋ฅํ์์ต๋๋ค.
์ผ๋จ ICMP ํ๋กํ ์ฝ์ ์ฌ์ฉํด ์ผ๋ฐ์ ์ธ TCP ํจํท์ ์ ์ก์๋ํ์์ง๋ง ๊ถํ์ด ์๋ค๋ ๋ฉ์์ง๋ฅผ ๋ณด์ด๊ณ ์์ต๋๋ค. ํ์ธํด๋ณด๋ ๋ฆฌ๋ ์ค ์์ฒด์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๋ํ ์ ๋ณด๋ ์กด์ฌํ์ง ์๋ ๊ฒ์ผ๋ก ๋ณด์ ์๋์ฐ์ ์ปค๋์ ์ํ ํ๋์จ์ด I/O๋ฅผ ํตํด ์ธํฐ๋ท์ ์ฌ์ฉํ๋ ๋ฏ ํ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ณด๋ Unix Socket ๋ด์ง ๋ฆฌ๋ ์ค ์๋ฒ ๊ตฌ์ฑ ์์ฒด๊ฐ ๋์ง ์์ผ๋ฉฐ ์ฌ์ค์ Windows Network Interface์ ์์กดํ๊ณ ์๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค. ๋ฐ๋ผ์ ์ด ์๋ธ ์์คํ ์ผ๋ก๋ ์๋น์ค๋ฅผ ํ ์ ์๋ค๋ ๊ฒฐ๋ก ์ด ๋์์ต๋๋ค.
์ฌ์ฉ์ ๊ถํ์๋ ์กฐ๊ธ ๋ค๋ฅธ ๋ฉด์ ๋ณด์์ต๋๋ค. NTUSER.DAT ํ์ผ์ ํด๋น bash shell์์ root๊ฐ ๊ทธ ์์ ๊ถ์ ๊ฐ์ง๊ณ ์์์ง๋ง ํ์ผ์ ์ด๋ ค๊ณ ์๋ํ๋ ์ญ์ ๊ถํ์ด ์๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ํฉ๋๋ค.
์ฌ๊ธฐ์ ์๋ฌธ์ ์ด ๋ ๊ฒ์ ์๋ฌด๋๋ Windows์ ํ์ผ ์์คํ ์ด NTFS์ด๋ค๋ณด๋ ๋ง์ฝ Linux๊ฐ ์๋์ฐ ๋ด์ ๋ค์ด์ค๋ ค๋ฉด Linux์ NTFS ํ์ผ ์์คํ ์ ์ถ๊ฐํ๋ ๋ฐฉ์์ ๋ง๋ จํด์ผ ํฉ๋๋ค. ํ์ง๋ง df -h ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ํ์ผ ์์คํ ์ ํ์ธํด๋ณด๋ ์ค์ ๋ ๊ทธ๋ ์ง ์์ ๋ชจ์ต์ด์์ต๋๋ค.
๋ฃจํธ ๋๋ ํฐ๋ฆฌ๊ฐ ๋ด ๋ ธํธ๋ถ์ ์๋ ์ฌ์ฉ์ ํ๋กํ์ธ D:\์ ์ํด ์์์ ํ์ธํ ์ ์์ต๋๋ค. ํด๋น ํ์ผ ์์คํ ์ NTFS์ด๋ฉฐ ํ์ฌ ๋ฆฌ๋ ์ค์์ ๋์ํ๊ณ ์์ต๋๋ค.
WSL ๊ตฌ์กฐ ํํค์น๊ธฐ
bash shell์ ์ด์ฉํด Windows subsystem for Linux๋ฅผ ์ ๊น์ด๋๋ง ์ดํด๋ดค์ต๋๋ค. ๊ธฐ๋ณธ์ ์ธ ๋ฆฌ๋ ์ค ๋ชจ์ต๊ณผ๋ ๊ฒ๋ชจ์์๋ ๊ฐ์ง๋ง ์ ์์ ๋ค๋ฅธ ๋ถ์๊ธฐ์๊ณ , ํ์ผ ์์คํ ๋ ๋ฆฌ๋ ์ค๊ฐ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ํ์ผ ์์คํ ์ด ์๋ ๋ค๋ฅธ ํ์ผ ์์คํ ์ ์ฌ์ฉํ๋ ๋ฏ ํ์์ต๋๋ค.
Windows ์์ ์ด๋ป๊ฒ ๋ฆฌ๋ ์ค๊ฐ ๋ค์ด๊ฐ ์ ์์์๊น์?
์ ์ฌ์ง์ ํ์ฌ Windows NT ์ปค๋์ ๋ค์ด๊ฐ Linux subsystem์ ๊ตฌ์กฐ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์์ ์ฌ์ฉํ์ ๋ฏ์ด ๋ชจ๋ ๋ฆฌ๋ ์ค์ ๋ช ๋ น์ด๊ฐ Windows์์ ์ ์์ ์ผ๋ก ๋์ํ๊ณ ์์์ ํ์ธํ ์ ์์์ต๋๋ค. PE ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ Windows์์ ELF64์ ๋ฆฌ๋ ์ค ๋ฐ์ด๋๋ฆฌ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋๋ก ๊ตฌํํ ๊ฒ์ด์ง์.
๊ทธ ์๋ฆฌ๋ ๋ฐ๋ก ์ปค๋ ๋ชจ๋์ ์ฌ์ฉ์ ๋ชจ๋ ์ฌ์ด์ ์์ต๋๋ค. Windows๋ ์ปค๋์ LXSS๋ผ๋ ์๋น์ค๋ฅผ ํ์ฌํ์๋๋ฐ, ์ด ์๋น์ค๋ ๋ฆฌ๋ ์ค ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ ์ ์๋๋ก ํ๋ bash์ ์ปค๋ ์ฌ์ด์ ๋ธ๋ก์ปค ์ญํ ์ ํ๋ ์๋น์ค๋ก ์ค์ ๋ก ๋ฆฌ๋ ์ค ๋ฐ์ด๋๋ฆฌ์ ํ๋ก์ธ์ค๋ Pico Process๋ผ๋ ๊ฒ์ผ๋ก ๋ณ๊ฐ ๊ตฌ๋ถํ์ฌ LXSS ์๋น์ค๊ฐ ๋ฆฌ๋ ์ค ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ Pico Process๋ MS๊ฐ ์์ฌ์ ์ด์์ฒด์ ์ ๋ฆฌ๋ ์ค ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฒ๋ ๊ตฌํํ๊ธฐ ์ํ ๋ณ๋์ ํ๋ก์ธ์ค ๊ตฌ์กฐ๋ก 2011๋ MS์์ ์งํ๋์๋ Drawbridge ํ๋ก์ ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์๋์์ต๋๋ค. ์ด ํ๋ก์ธ์ค๋ ์ผ๋ฐ์ ์ธ ์๋์ฐ ํ๋ก์ธ์ค์ธ Win32 Process์ ๋ณ๊ฐ์ ํ๋ก์ธ์ค๋ก ์ทจ๊ธํฉ๋๋ค.
File system์ ๊ฒฝ์ฐ, WSL์ ext4์ ๊ฐ์ ๋ฆฌ๋ ์ค์์ ์ฌ์ฉํ๋ ํ์ค ํ์ผ ์์คํ ์ด ์๋ MS์์ ๊ฐ๋ฐํ ๋ณ๋์ ํ์ผ ์์คํ ์ ์ฌ์ฉํ์์ต๋๋ค. ์ด 2๊ฐ์ง์ ํ์ผ ์์คํ ์ด ์๋๋ฐ, ํ๋๋ VolFS, ๋ ๋ค๋ฅธ ํ๋๋ DriveFS ์์ต๋๋ค.
๋ ๋ค ๋ฆฌ๋ ์ค ํ์ผ ์์คํ ์ง์์ ์ํ ํ์ผ ์์คํ ์ด์์ง๋ง ์๋ก์๋ก๊ฐ ์ฅ/๋จ์ ์ด ์กด์ฌํฉ๋๋ค.
VolFS
- ์๋ฒฝํ ๋ฆฌ๋ ์ค ํ์ผ ์์คํ ๊ตฌํ์ ๋ชฉํ๋ก ํ ํ์ผ ์์คํ
- Symbolic link ๋ฑ์ ํ์ผ ํธํ
- Windows ํ์ผ ์ด๋ฆ๊ณผ ํ์, ๋ฌธ์ ๋ฑ์ด ํธํ์ด ์๋จ
- WSL์์ /bin, /home, /usr, /etc ๋ฑ์ ๋๋ ํฐ๋ฆฌ์ ์ ์ฉ
DriveFS
- Windows์ ์ํธ ์ฐ๊ฒฐํ ์ ์๋๋ก ๊ตฌํํ ํ์ผ ์์คํ
- ์ฌ๋ฌ ๋ถ๋ถ๋ค์ด ๋ฌ๋ผ ์์ง ๊ฐ์ ์ด ๋ง์ด ํ์ํด๋ณด์. ์ฌ๊ฐํ ๋ฒ๊ทธ๋ ์กด์ฌํจ.
- /mnt ์์ C, D ๋๋ผ์ด๋ธ๊ฐ ๋ง์ดํธ ๋ ๋ ์ ์ฉ๋ ํ์ผ ์์คํ
์ฌ์ค ์ธ๋ฏ๋ดค์ ๋, ๋ฆฌ๋ ์ค ์ฌ์ฉ์๋ค์ ์ด ๋ถ๋ถ์ ๋ณผ ๋ "์, ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๊ธฐ์๋ ์ ๋ง ์ํํ๊ฒ ๊ตฌ๋" ๋ผ๋ ์๊ฐ์ด ๋ค ์๋ ์์ ๊ฒ์ ๋๋ค. MSDN ๋ฌธ์์๋ bash๊ฐ ์๋ ํ ์๊ธฐ๋ฅผ ์ด์ฉํด /bin, /home ๋ฑ์ ํ์ผ์ ์์ฑํ๋ ๊ฒ์ ๊ธ์งํ๊ณ ์์ต๋๋ค. ๊ทธ ์ด์ ์ค์ ํ๋๋ /bin, /home ๋๋ ํฐ๋ฆฌ์ ์๋ ํ์ผ๋ค์ Windows ํ์ผ ์์คํ ๊ณผ ํธํ์ด ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ก ์ธํด ํ์ผ์ ์์ํ ์ ์๋ ๋ฒ๊ทธ๊ฐ ์์ด ์ฃผ์๋ฅผ ๋น๋ถํ๊ธฐ๋ ํฉ๋๋ค.
๋ฐ๋ฉด C:\, D:\์์๋ ๋ชจ๋ ํธํ์ด ๋ฉ๋๋ค. ๋ค๋ง ๋ฆฌ๋ ์ค ํ์ผ ์์คํ ์์ ์ ๊ณตํ๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ ๋ฑ์ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋์ฑ์ด ์ด ํ์ผ ์์คํ ๋ค์ NTFS ์์์ ๋์ํ๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์ ๋ง์ฝ ๋ฉํฐ ๋ถํ ๋ฐฉ์์ ํตํด Linux๋ฅผ ์ค์นํ๋ค ํ๋๋ผ๋ ext4๋ก ๋ง์ดํธ๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค. (์ด๊ฑด ๋ญ ๋ฆฌ๋ ์ค๊ฐ ๋ฆฌ๋ ์คํํ ํ์ผ์ ์ฃผ๊ณ ๋ฐ์ง๋ ๋ชปํ๊ฒ ํ๋ค๋...)
๋ง์น๋ฉฐ.....
์ฌ๊ธฐ๊น์ง Windows subsystem for Linux์ ๋ํด ์์๋ดค์ต๋๋ค. ์๋ง ์ฒ์ ๋ฆฌ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ค์ด๋ผ๋ฉด ์ ๋ชจ๋ฅด๋ ๋ด์ฉ์ผ ์๋ ์์ต๋๋ค. ์งง๊ฒ๋๋ง ๊ฒฐ๋ก ๋ถํฐ ์์ฝํ์๋ฉด, ์ด๋ ์ต๋๋ค.
"Windows subsystem for Linux๋ ์์ง bash์ ๊ทธ์ ํธํ๋๋ File system๋ง Windows kernel์ ๋ด๊ฒจ์ ธ ์์ ๋ฟ์ด๋ค."
์๋ง ์๋ฒฝํ ๋ฆฌ๋ ์ค๋ฅผ ์ํ๊ณ ์ด ์์คํ ์ ๊ธฐ๋ํ๋ค๋ฉด ๊ธฐ๋๋ณด๋ค๋ ์ค๋ง์ด ๋ ํด ์๋ ์์ต๋๋ค. ์ด์ ์ ํฌ์คํ ํ๋ ๊ฒ์์ Docker๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์๋ก ๋ค์๋ฉด ์ด ํ๋ก๊ทธ๋จ์ ๋ฆฌ๋ ์ค์ ๋ค์์คํ์ด์ค ๋ฑ์ด ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ด์จ๊ฑฐ๋ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ ๋ ํฌ์งํฐ๋ฆฌ๋ฅผ ์ ์ธํ ๋๋จธ์ง๋ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ด์ฐจํผ๋ ์ ๋๋ค๊ณ ๋ณด๋ฉด ๋๊ฒ ์ต๋๋ค.
์ฐธ๊ณ ๋ก "๋ฒ ํ ๋ฒ์ "์ด๊ธฐ ๋๋ฌธ์ ํ์ผ ์์คํ ๊ฐ์ ์ ๊ทผ์ ํผํ์๋ ๊ฒ์ด ์ข์ผ๋ฉฐ ์ด ์์คํ ์ผ๋ก๋ ELF ๋ฐ์ด๋๋ฆฌ ๊ฐ๋ฐ์ด๋ Tensorflow๋ฅผ ์ฌ์ฉํ๊ธฐ์๋ ์ ๋นํ ๋ฏ ๋ณด์ ๋๋ค.
์ ๋ ์ด ์๋ธ ์์คํ ์ ์ด์ฉํด git ์ ๋๋ง ์ด์ฉ์ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋, gcc ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋ค์ ๋ฆฌ๋ ์ค๋ก ๋ฐ์ด๋๋ ๊ท์ฐฎ์์ ์ค์ ๊ฒ ๊ฐ๋ค์.