Microsoft๋ ํ๋ก์ ํธ์ ์ฒซ ๋ฒ์งธ ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค์ธ CBL-Mariner 1.0(Common Base Linux Mariner) ๋ฐฐํฌํ์ ์ถ์ํ์ต๋๋ค. CBL-Mariner ๋ฐฐํฌํ์ ํด๋ผ์ฐ๋ ์ธํ๋ผ, ์ฃ์ง ์์คํ ๋ฐ ๋ค์ํ Microsoft ์๋น์ค์์ ์ฌ์ฉ๋๋ Linux ํ๊ฒฝ์ ์ํ ๋ฒ์ฉ ๊ธฐ๋ฐ ํ๋ซํผ์ผ๋ก ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ Microsoft Linux ์๋ฃจ์ ์ ํตํฉํ๊ณ ๋ค์ํ ๋ชฉ์ ์ ์ํด ์ต์ Linux ์์คํ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ํ๋ก์ ํธ์ ๊ฐ๋ฐ์ MIT ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
๋ฐฐํฌํ์ ํด๋ผ์ฐ๋ ์ธํ๋ผ ๋ฐ ์ฃ์ง ์ฅ์น์์ ์คํ๋๋ ์ปจํ ์ด๋, ํธ์คํธ ํ๊ฒฝ ๋ฐ ์๋น์ค์ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋ณดํธ์ ์ธ ๊ธฐ๋ฐ ์ญํ ์ ํ๋ ์์ ํ์ค ๊ธฐ๋ณธ ํจํค์ง ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. CBL-Mariner ์์ ์ถ๊ฐ ํจํค์ง๋ฅผ ์ถ๊ฐํ๋ฉด ๋ ๋ณต์กํ๊ณ ์ ๋ฌธ์ ์ธ ์๋ฃจ์ ์ ๋ง๋ค ์ ์์ง๋ง ์ด๋ฌํ ๋ชจ๋ ์์คํ ์ ๊ธฐ๋ณธ์ ๋์ผํ๊ฒ ์ ์ง๋๋ฏ๋ก ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ ๋ฐ์ดํธ๊ฐ ๋ ์ฝ์ต๋๋ค.
์๋ฅผ ๋ค์ด CBL-Mariner๋ WSL2(Linux์ฉ Windows ํ์ ์์คํ ) ํ์ ์์คํ ๊ธฐ๋ฐ ํ๊ฒฝ์์ Linux GUI ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ๊ทธ๋ํฝ ์คํ ๊ตฌ์ฑ ์์๋ฅผ ์ ๊ณตํ๋ WSLg ๋ฏธ๋ ๋ฐฐํฌํ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ฐฐํฌํ์ ํต์ฌ์ ๋ณ๊ฒฝ๋์ง ์์์ผ๋ฉฐ Weston, XWayland, PulseAudio ๋ฐ FreeRDP ๋ณตํฉ ์๋ฒ์ ์ถ๊ฐ ํจํค์ง๋ฅผ ํฌํจํ์ฌ ํ์ฅ๋ ๊ธฐ๋ฅ์ด ์คํ๋์์ต๋๋ค.
CBL-Mariner ๋น๋ ์์คํ ์ ์ฌ์ฉํ๋ฉด SPEC ํ์ผ๊ณผ ์์ค ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฐ๋ณ RPM ํจํค์ง๋ฟ๋ง ์๋๋ผ rpm-ostree ํดํท์ ์ฌ์ฉํ์ฌ ์์ฑ๋๊ณ ๋ณ๋์ ํจํค์ง๋ก ๋ถํ ํ์ง ์๊ณ ์์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ๋ชจ๋๋ฆฌ์ ์์คํ ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ ์์ฑํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ณ ํจํค์ง ์ ๋ฐ์ดํธ์ ์ ์ฒด ์์คํ ์ด๋ฏธ์ง ์ฌ๊ตฌ์ถ ๋ฐ ์ ๋ฐ์ดํธ๋ผ๋ ๋ ๊ฐ์ง ์ ๋ฐ์ดํธ ์ ๋ฌ ๋ชจ๋ธ์ด ์ง์๋ฉ๋๋ค. ๋ฐฐํฌํ์๋ ๊ฐ์ฅ ํ์ํ ๊ตฌ์ฑ ์์๋ง ํฌํจ๋์ด ์์ผ๋ฉฐ ์ต์ํ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋์คํฌ ๊ณต๊ฐ ์๋น์ ๋์ ๋ก๋ฉ ์๋์ ์ต์ ํ๋์ด ์์ต๋๋ค. ์ด ๋ฐฐํฌํ์๋ ๋ณด์์ ๊ฐํํ๊ธฐ ์ํ ๋ค์ํ ์ถ๊ฐ ๋ฉ์ปค๋์ฆ์ด ํฌํจ๋ ์ ๋ ์ฃผ๋ชฉํ ๋งํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ "๊ธฐ๋ณธ์ ์ผ๋ก ์ต๋ ๋ณด์" ์ ๊ทผ ๋ฐฉ์์ ์ทจํฉ๋๋ค. seccomp ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์์คํ ํธ์ถ์ ํํฐ๋งํ๊ณ , ๋์คํฌ ํํฐ์ ์ ์ํธํํ๊ณ , ๋์งํธ ์๋ช ์ ์ฌ์ฉํ์ฌ ํจํค์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ๋น๋ ๋จ๊ณ์์๋ ์คํ ์ค๋ฒํ๋ก, ๋ฒํผ ์ค๋ฒํ๋ก ๋ฐ ๋ฌธ์์ด ํ์ ๋ฌธ์ ์ ๋ํ ๋ณดํธ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค(_FORTIFY_SOURCE, -fstack-protector, -Wformat-security, relro). Linux ์ปค๋์์ ์ง์๋๋ ์ฃผ์ ๊ณต๊ฐ ๋ฌด์์ํ ๋ชจ๋๋ ๋ฌผ๋ก ์ฌ๋ณผ๋ฆญ ๋งํฌ ๊ณต๊ฒฉ, mmap, /dev/mem ๋ฐ /dev/kmem์ ๋ํ ๋ณดํธ ๋ฉ์ปค๋์ฆ๋ ํ์ฑํ๋ฉ๋๋ค. ์ปค๋ ๋ฐ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ์ธ๊ทธ๋จผํธ๊ฐ ํฌํจ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฝ๊ธฐ ์ ์ฉ ๋ชจ๋๋ก ์ค์ ๋๊ณ ์ฝ๋ ์คํ์ด ๊ธ์ง๋ฉ๋๋ค. ์ ํ์ ์ต์ ์ ์์คํ ์ด๊ธฐํ ํ ์ปค๋ ๋ชจ๋ ๋ก๋๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ ๋๋ค. iptables ํดํท์ ๋คํธ์ํฌ ํจํท์ ํํฐ๋งํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ISO ์ด๋ฏธ์ง๋ ์ ๊ณต๋์ง ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํ์ํ ๋ด์ฉ์ ์ง์ ์ ๋ ฅํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค(Ubuntu 18.04์ ๋ํ ์กฐ๋ฆฝ ์ง์นจ์ด ์ ๊ณต๋จ). ์ฌ์ ๊ตฌ์ถ๋ RPM ํจํค์ง ์ ์ฅ์๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ ์ ํ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ ์ฅ์๋ ์ฝ 3300๊ฐ์ ํจํค์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ ์ฒด ISO ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ค๋ฉด ๋ค์์ ์คํํ์ธ์. git clone https://github.com/microsoft/CBL-Mariner.git cd CBL-Mariner/toolkit sudo make iso REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs /์ ์ฒด .json
์์คํ ๊ด๋ฆฌ์ systemd๋ ์๋น์ค๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ถํ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ํจํค์ง ๊ด๋ฆฌ๋ฅผ ์ํด ํจํค์ง ๊ด๋ฆฌ์ RPM ๋ฐ DNF(vmWare์ tdnf ๋ณํ)๊ฐ ์ ๊ณต๋ฉ๋๋ค. SSH ์๋ฒ๋ ์๋์ผ๋ก ์ผ์ง์ง ์์ต๋๋ค. ๋ฐฐํฌํ์ ์ค์นํ๊ธฐ ์ํด ํ ์คํธ ๋ฐ ๊ทธ๋ํฝ ๋ชจ๋์์ ๋ชจ๋ ์๋ํ ์ ์๋ ์ค์น ํ๋ก๊ทธ๋จ์ด ์ ๊ณต๋ฉ๋๋ค. ์ค์น ํ๋ก๊ทธ๋จ์ ์ ์ฒด ๋๋ ๊ธฐ๋ณธ ํจํค์ง ์ธํธ๋ฅผ ์ค์นํ๋ ์ต์ ์ ์ ๊ณตํ๊ณ ๋์คํฌ ํํฐ์ ์ ํ, ํธ์คํธ ์ด๋ฆ ์ ํ ๋ฐ ์ฌ์ฉ์ ์์ฑ์ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ถ์ฒ : opennet.ru