Microsoft๋ ํด๋ผ์ฐ๋ ์ธํ๋ผ, ์ฃ์ง ์์คํ ๋ฐ ๋ค์ํ Microsoft ์๋น์ค์์ ์ฌ์ฉ๋๋ Linux ํ๊ฒฝ์ ์ํ ๋ฒ์ฉ ๊ธฐ๋ฐ ํ๋ซํผ์ผ๋ก ๊ฐ๋ฐ๋๊ณ ์๋ ์๋ก์ด ๋ฐฐํฌ ๋ธ๋์น CBL-Mariner 2.0(Common Base Linux Mariner)์ ์ฒซ ๋ฒ์งธ ์์ ์ ์ธ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐํํ์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ Microsoft Linux ์๋ฃจ์ ์ ํตํฉํ๊ณ ๋ค์ํ ๋ชฉ์ ์ ์ํด ์ต์ Linux ์์คํ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ํ๋ก์ ํธ์ ๊ฐ๋ฐ์ MIT ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. aarch64 ๋ฐ x86_64 ์ํคํ ์ฒ์ ๋ํ ํจํค์ง ๋น๋๊ฐ ์์ฑ๋ฉ๋๋ค.
์ ๋ฆด๋ฆฌ์ค๋ ํ๋ก๊ทธ๋จ ๋ฒ์ ์ ์ค์ํ ์ ๋ฐ์ดํธ๋ก ์ ๋ช ํฉ๋๋ค. Linux ์ปค๋ 5.15(1.0 ๋ธ๋์น์์๋ 5.4 ์ปค๋์ด ์ฌ์ฉ๋จ)์ ์ ๋ฐ์ดํธ ๋ฒ์ ํฌํจ, systemd 250, glibc 2.35, GCC 11.2, clang 12, Python 3.9, ruby โโโโ3.1.2, rpm 4.17, qemu 6.1, perl 5.34 , ์ค์คํธ๋ฆฌ 2022.1. ํต์ฌ ์ ์ฅ์์๋ ์ด์ ์ ๋ณ๋์ coreui ์ ์ฅ์์ ์ ๊ณต๋์๋ Wayland 1.20, Mesa 21.0, GTK 3.24 ๋ฐ X.Org Server 1.20.10๊ณผ ๊ฐ์ GUI ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ค์๊ฐ ์์คํ ์์ ์ฌ์ฉํ๊ธฐ ์ํด PREEMPT_RT ํจ์น๊ฐ ํฌํจ๋ ์ปค๋ ๋น๋๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
CBL-Mariner ๋ฐฐํฌํ์ ํด๋ผ์ฐ๋ ์ธํ๋ผ ๋ฐ ์ฃ์ง ์ฅ์น์์ ์คํ๋๋ ์ปจํ ์ด๋, ํธ์คํธ ํ๊ฒฝ ๋ฐ ์๋น์ค์ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋ณดํธ์ ์ธ ๊ธฐ๋ฐ ์ญํ ์ ํ๋ ์์ ํ์ค ๊ธฐ๋ณธ ํจํค์ง ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. CBL-Mariner ์์ ์ถ๊ฐ ํจํค์ง๋ฅผ ์ถ๊ฐํ๋ฉด ๋ ๋ณต์กํ๊ณ ์ ๋ฌธ์ ์ธ ์๋ฃจ์ ์ ๋ง๋ค ์ ์์ง๋ง ์ด๋ฌํ ๋ชจ๋ ์์คํ ์ ๊ธฐ๋ณธ์ ๋์ผํ๊ฒ ์ ์ง๋๋ฏ๋ก ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ ๋ฐ์ดํธ๊ฐ ๋ ์ฝ์ต๋๋ค. ์๋ฅผ ๋ค์ด CBL-Mariner๋ WSL2(Linux์ฉ Windows ํ์ ์์คํ ) ํ์ ์์คํ ๊ธฐ๋ฐ ํ๊ฒฝ์์ Linux GUI ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ๊ทธ๋ํฝ ์คํ ๊ตฌ์ฑ ์์๋ฅผ ์ ๊ณตํ๋ WSLg ๋ฏธ๋ ๋ฐฐํฌํ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. WSLg์ ํ์ฅ๋ ๊ธฐ๋ฅ์ Weston Composite Server, XWayland, PulseAudio ๋ฐ FreeRDP์ ์ถ๊ฐ ํจํค์ง๋ฅผ ํฌํจํจ์ผ๋ก์จ ์คํ๋ฉ๋๋ค.
CBL-Mariner ๋น๋ ์์คํ ์ ์ฌ์ฉํ๋ฉด SPEC ํ์ผ๊ณผ ์์ค ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฐ๋ณ RPM ํจํค์ง๋ฟ๋ง ์๋๋ผ rpm-ostree ํดํท์ ์ฌ์ฉํ์ฌ ์์ฑ๋๊ณ ๋ณ๋์ ํจํค์ง๋ก ๋ถํ ํ์ง ์๊ณ ์์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ๋ชจ๋๋ฆฌ์ ์์คํ ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ ์์ฑํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ณ ํจํค์ง ์ ๋ฐ์ดํธ์ ์ ์ฒด ์์คํ ์ด๋ฏธ์ง ์ฌ๊ตฌ์ถ ๋ฐ ์ ๋ฐ์ดํธ๋ผ๋ ๋ ๊ฐ์ง ์ ๋ฐ์ดํธ ์ ๋ฌ ๋ชจ๋ธ์ด ์ง์๋ฉ๋๋ค. ๊ตฌ์ฑ ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฒด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ฝ 3000๊ฐ์ ์ฌ์ ๋น๋๋ RPM ํจํค์ง ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐฐํฌํ์๋ ๊ฐ์ฅ ํ์ํ ๊ตฌ์ฑ ์์๋ง ํฌํจ๋์ด ์์ผ๋ฉฐ ์ต์ํ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋์คํฌ ๊ณต๊ฐ ์๋น์ ๋์ ๋ก๋ฉ ์๋์ ์ต์ ํ๋์ด ์์ต๋๋ค. ์ด ๋ฐฐํฌํ์๋ ๋ณด์์ ๊ฐํํ๊ธฐ ์ํ ๋ค์ํ ์ถ๊ฐ ๋ฉ์ปค๋์ฆ์ด ํฌํจ๋ ์ ๋ ์ฃผ๋ชฉํ ๋งํฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ "๊ธฐ๋ณธ์ ์ผ๋ก ์ต๋ ๋ณด์" ์ ๊ทผ ๋ฐฉ์์ ์ทจํฉ๋๋ค. seccomp ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์์คํ ํธ์ถ์ ํํฐ๋งํ๊ณ , ๋์คํฌ ํํฐ์ ์ ์ํธํํ๊ณ , ๋์งํธ ์๋ช ์ ์ฌ์ฉํ์ฌ ํจํค์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
Linux ์ปค๋์์ ์ง์๋๋ ์ฃผ์ ๊ณต๊ฐ ๋ฌด์์ํ ๋ชจ๋๋ ๋ฌผ๋ก ์ฌ๋ณผ๋ฆญ ๋งํฌ ๊ณต๊ฒฉ, mmap, /dev/mem ๋ฐ /dev/kmem์ ๋ํ ๋ณดํธ ๋ฉ์ปค๋์ฆ๋ ํ์ฑํ๋ฉ๋๋ค. ์ปค๋ ๋ฐ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ์ธ๊ทธ๋จผํธ๊ฐ ํฌํจ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฝ๊ธฐ ์ ์ฉ ๋ชจ๋๋ก ์ค์ ๋๊ณ ์ฝ๋ ์คํ์ด ๊ธ์ง๋ฉ๋๋ค. ์ ํ์ ์ต์ ์ ์์คํ ์ด๊ธฐํ ํ ์ปค๋ ๋ชจ๋ ๋ก๋๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ ๋๋ค. iptables ํดํท์ ๋คํธ์ํฌ ํจํท์ ํํฐ๋งํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋น๋ ๋จ๊ณ์์๋ ์คํ ์ค๋ฒํ๋ก, ๋ฒํผ ์ค๋ฒํ๋ก ๋ฐ ๋ฌธ์์ด ํ์ ๋ฌธ์ ์ ๋ํ ๋ณดํธ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค(_FORTIFY_SOURCE, -fstack-protector, -Wformat-security, relro).
์์คํ
๊ด๋ฆฌ์ systemd๋ ์๋น์ค๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ถํ
ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ํจํค์ง ๊ด๋ฆฌ๋ฅผ ์ํด RPM ๋ฐ DNF ํจํค์ง ๊ด๋ฆฌ์๊ฐ ์ ๊ณต๋ฉ๋๋ค. SSH ์๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค. ๋ฐฐํฌํ์ ์ค์นํ๊ธฐ ์ํด ํ
์คํธ ๋ฐ ๊ทธ๋ํฝ ๋ชจ๋์์ ๋ชจ๋ ์๋ํ ์ ์๋ ์ค์น ํ๋ก๊ทธ๋จ์ด ์ ๊ณต๋ฉ๋๋ค. ์ค์น ํ๋ก๊ทธ๋จ์ ์ ์ฒด ๋๋ ๊ธฐ๋ณธ ํจํค์ง ์ธํธ๋ฅผ ์ค์นํ๋ ์ต์
์ ์ ๊ณตํ๊ณ ๋์คํฌ ํํฐ์
์ ํ, ํธ์คํธ ์ด๋ฆ ์ ํ ๋ฐ ์ฌ์ฉ์ ์์ฑ์ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ถ์ฒ : opennet.ru