Microsoft๋Š” Linux ๋ฐฐํฌํŒ CBL-Mariner 2.0์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€