์ง€๋ฉ˜์Šค๋Š” Jailhouse 0.12 ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง€๋ฉ˜์Šค ํšŒ์‚ฌ ะพะฟัƒะฑะปะธะบะพะฒะฐะปะฐ ๋ฌด๋ฃŒ ํ•˜์ดํผ๋ฐ”์ด์ € ๋ฆด๋ฆฌ์Šค ๊ต๋„์†Œ 0.12. ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” VMX+EPT ๋˜๋Š” SVM+NPT(AMD-V) ํ™•์žฅ์ด ์žˆ๋Š” x86_64 ์‹œ์Šคํ…œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ€์ƒํ™” ํ™•์žฅ์ด ์žˆ๋Š” ARMv7 ๋ฐ ARMv8/ARM64 ํ”„๋กœ์„ธ์„œ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฐˆ๋ผ์ ธ ๊ฐœ๋ฐœ ์ค‘ ์ง€์›๋˜๋Š” ์žฅ์น˜์— ๋Œ€ํ•œ Debian ํŒจํ‚ค์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋œ Jailhouse ํ•˜์ดํผ๋ฐ”์ด์ €์šฉ ์ด๋ฏธ์ง€ ์ƒ์„ฑ๊ธฐ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๋ฐฐํฌ์ž GPLv2์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” Linux ์ปค๋„์šฉ ๋ชจ๋“ˆ๋กœ ๊ตฌํ˜„๋˜๋ฉฐ ์ปค๋„ ์ˆ˜์ค€์—์„œ ๊ฐ€์ƒํ™”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์šฉ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๊ธฐ๋ณธ Linux ์ปค๋„์— ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฉ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์‹  CPU์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ฐ€์ƒํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Jailhouse์˜ ํŠน์ง•์€ ๊ฐ€๋ฒผ์šด ๊ตฌํ˜„์ด๋ฉฐ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๊ณ ์ • CPU, RAM ์˜์—ญ ๋ฐ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์— ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ๋ฌผ๋ฆฌ์  ๋‹ค์ค‘ ํ”„๋กœ์„ธ์„œ ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ ์ž‘๋™์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ ํ™˜๊ฒฝ์€ ์ž์ฒด ํ”„๋กœ์„ธ์„œ ์ฝ”์–ด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

CPU์— ๊ธด๋ฐ€ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜๋ฉด ๋ณต์žกํ•œ ๋ฆฌ์†Œ์Šค ํ• ๋‹น ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ํ•˜์ดํผ๋ฐ”์ด์ €์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ตœ์†Œํ™”๋˜๊ณ  ๊ตฌํ˜„์ด ํฌ๊ฒŒ ๋‹จ์ˆœํ™”๋ฉ๋‹ˆ๋‹ค. ๋ณ„๋„์˜ CPU ์ฝ”์–ด๋ฅผ ํ• ๋‹นํ•˜๋ฉด ์ด CPU์—์„œ ๋‹ค๋ฅธ ์ž‘์—…์ด ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. . ์ด ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์žฅ์ ์€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์„ฑ๋Šฅ์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Jailhouse๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ๋‹จ์ ์€ CPU ์ฝ”์–ด ์ˆ˜์— ๋”ฐ๋ผ ํ™•์žฅ์„ฑ์ด ์ œํ•œ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ์˜ฅ ์šฉ์–ด์—์„œ๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ "์นด๋ฉ”๋ผ"(๊ต๋„์†Œ ๋งฅ๋ฝ์—์„œ๋Š” ์…€)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์นด๋ฉ”๋ผ ๋‚ด๋ถ€์˜ ์‹œ์Šคํ…œ์€ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋‹จ์ผ ํ”„๋กœ์„ธ์„œ ์„œ๋ฒ„์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‹ซ๋‹ค ์ „์šฉ CPU ์ฝ”์–ด์˜ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์นด๋ฉ”๋ผ๋Š” ์ž„์˜์˜ ์šด์˜ ์ฒด์ œ ํ™˜๊ฒฝ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋„๋ก ํŠน๋ณ„ํžˆ ์ค€๋น„๋œ ๊ฐœ๋ณ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ํ™˜๊ฒฝ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์€ ๋‹ค์Œ์—์„œ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. .cell ํŒŒ์ผ, ํ™˜๊ฒฝ์— ํ• ๋‹น๋œ CPU, ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๋ฐ I/O ํฌํŠธ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์ง€๋ฉ˜์Šค๋Š” Jailhouse 0.12 ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ

  • Raspberry Pi 4 Model B ๋ฐ Texas Instruments J721E-EVM ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์žฌ์ž‘์—…๋จ ivshmem ์žฅ์น˜๋Š” ์…€ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ivshmem ์œ„์— VIRTIO์šฉ ์ „์†ก์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ง€๋ฉ˜์Šค๋Š” Jailhouse 0.12 ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ทจ์•ฝ์  ์ฐจ๋‹จ์„ ์œ„ํ•ด ๋Œ€์šฉ๋Ÿ‰ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€(hugepage) ์ƒ์„ฑ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. CVE-2018-12207 Intel ํ”„๋กœ์„ธ์„œ์—์„œ๋Š” ๊ถŒํ•œ์ด ์—†๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์„œ๋น„์Šค ๊ฑฐ๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ "๋จธ์‹  ๊ฒ€์‚ฌ ์˜ค๋ฅ˜" ์ƒํƒœ์—์„œ ์‹œ์Šคํ…œ์ด ์ •์ง€๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ARM64 ํ”„๋กœ์„ธ์„œ๊ฐ€ ํƒ‘์žฌ๋œ ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ SMMUv3(์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์žฅ์น˜) ๋ฐ TI PVU(์ฃผ๋ณ€ ์žฅ์น˜ ๊ฐ€์ƒํ™” ์žฅ์น˜)์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด ์œ„์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ(๋ฒ ์–ด๋ฉ”ํƒˆ)์— ๋Œ€ํ•œ PCI ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฃจํŠธ ์นด๋ฉ”๋ผ์šฉ x86 ์‹œ์Šคํ…œ์—์„œ๋Š” Intel ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ œ๊ณตํ•˜๋Š” CR4.UMIP(์‚ฌ์šฉ์ž ๋ชจ๋“œ ๋ช…๋ น์–ด ๋ฐฉ์ง€) ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ SGDT, SLDT, SIDT์™€ ๊ฐ™์€ ํŠน์ • ๋ช…๋ น์–ด์˜ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ์‹คํ–‰์„ ๊ธˆ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. , ๊ณต๊ฒฉ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” SMSW ๋ฐ STR์€ ์‹œ์Šคํ…œ์˜ ๊ถŒํ•œ์„ ๋†’์ด๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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