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

์ง€๋ฉ˜์Šค ํšŒ์‚ฌ ะพะฟัƒะฑะปะธะบะพะฒะฐะปะฐ ๋ฌด๋ฃŒ ํ•˜์ดํผ๋ฐ”์ด์ € ๋ฆด๋ฆฌ์Šค ๊ต๋„์†Œ 0.11. ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” 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.11 ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

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

  • Marvell MACCHIATObin, Xilinx Ultra96์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    Microsys mirac SBC-LS1046A ๋ฐ Texas Instruments AM654 IDK;

  • ๊ฐ CPU ์ฝ”์–ด์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์นด๋ฉ”๋ผ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ PCI ์žฅ์น˜๊ฐ€ ์žฌ์„ค์ •๋˜๋„๋ก ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์žฅ์น˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ์ตœ์‹  Linux ์ปค๋„ ๋ฆด๋ฆฌ์Šค์— ๋งž๊ฒŒ ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ARM ๋ฐ ARM64 ํ”Œ๋žซํผ์— ๋Œ€ํ•œ Spectre v2 ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. qemu-arm64 ์„ค์ •์€ ์ตœ์‹  QEMU ๋ฆด๋ฆฌ์Šค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. Orange Pi Zero ๋ณด๋“œ์—์„œ PSCI ํŽŒ์›จ์–ด๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • x86 ํ”Œ๋žซํผ์˜ ๊ฒฝ์šฐ ๋ฐ๋ชจ ํ™˜๊ฒฝ(์ˆ˜๊ฐ์ž) ์‹คํ–‰ ์‹œ SSE ๋ฐ AVX ๋ช…๋ น์–ด ์‚ฌ์šฉ์ด ํ™œ์„ฑํ™”๋˜๊ณ  ์˜ˆ์™ธ ๋ณด๊ณ ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

ํ–ฅํ›„ ๊ณ„ํš์—๋Š” ์˜ค๋žซ๋™์•ˆ ๊ธฐ๋‹ค๋ ค์˜จ IOMMUv3 ์ง€์›์ด ํฌํ•จ๋˜์–ด ํ”„๋กœ์„ธ์„œ ์บ์‹œ ์‚ฌ์šฉ ํšจ์œจ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค(์บ์‹œ ์ƒ‰์น ), AMD Ryzen ํ”„๋กœ์„ธ์„œ์˜ APIC ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ivshmem ์žฅ์น˜๋ฅผ ์žฌ์ž‘์—…ํ•˜๊ณ , ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ธฐ๋ณธ ์ปค๋„๋กœ ์Šน๊ฒฉํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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