QEMU 6.0 ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์ถœ์‹œ

QEMU 6.0 ํ”„๋กœ์ ํŠธ์˜ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ์„œ QEMU๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์™„์ „ํžˆ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ€์ง„ ์‹œ์Šคํ…œ์—์„œ ํ•˜๋‚˜์˜ ํ•˜๋“œ์›จ์–ด ํ”Œ๋žซํผ์šฉ์œผ๋กœ ๊ตฌ์ถ•๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด x86 ํ˜ธํ™˜ PC์—์„œ ARM ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. QEMU์˜ ๊ฐ€์ƒํ™” ๋ชจ๋“œ์—์„œ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ์˜ ์ฝ”๋“œ ์‹คํ–‰ ์„ฑ๋Šฅ์€ CPU์—์„œ ์ง์ ‘ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  Xen ํ•˜์ดํผ๋ฐ”์ด์ € ๋˜๋Š” KVM ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋“œ์›จ์–ด ์‹œ์Šคํ…œ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” ์›๋ž˜ x86 ํ”Œ๋žซํผ์šฉ์œผ๋กœ ๋นŒ๋“œ๋œ Linux ์‹คํ–‰ ํŒŒ์ผ์ด ๋น„ x86 ์•„ํ‚คํ…์ฒ˜์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก Fabrice Bellard๊ฐ€ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋…„๊ฐ„์˜ ๊ฐœ๋ฐœ์„ ํ†ตํ•ด 14๊ฐœ์˜ ํ•˜๋“œ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์—๋ฎฌ๋ ˆ์ด์…˜ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์˜ ์ˆ˜๋Š” 400๊ฐœ๋ฅผ ์ดˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 6.0์„ ์ค€๋น„ํ•˜๋ฉด์„œ 3300๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ 268๊ฐœ ์ด์ƒ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

QEMU 6.0์— ์ถ”๊ฐ€๋œ ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ:

  • NVMe ์ปจํŠธ๋กค๋Ÿฌ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” NVMe 1.4 ์‚ฌ์–‘์„ ์ค€์ˆ˜ํ•˜๋ฉฐ ๊ตฌ์—ญํ™”๋œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค, ๋‹ค์ค‘ ๊ฒฝ๋กœ I/O ๋ฐ ๋“œ๋ผ์ด๋ธŒ์˜ ์ข…๋‹จ ๊ฐ„ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”์— ๋Œ€ํ•œ ์‹คํ—˜์  ์ง€์›์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์žฅ์น˜ ์—๋ฎฌ๋ ˆ์ด์…˜์„ ์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ—˜์  ์˜ต์…˜ "-machine x-remote" ๋ฐ "-device x-pci-proxy-dev"๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ์—์„œ๋Š” ํ˜„์žฌ lsi53c895 SCSI ์–ด๋Œ‘ํ„ฐ์˜ ์—๋ฎฌ๋ ˆ์ด์…˜๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค.
  • RAM ์ฝ˜ํ…์ธ ์˜ ์Šค๋ƒ…์ƒท ์ƒ์„ฑ์„ ์œ„ํ•œ ์‹คํ—˜์  ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ธ”๋ก ์žฅ์น˜๋ฅผ ๋‚ด๋ณด๋‚ด๊ธฐ ์œ„ํ•œ FUSE ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๋ธ”๋ก ์žฅ์น˜์˜ ์ƒํƒœ ์กฐ๊ฐ์„ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ณด๋‚ด๊ธฐ๋Š” QMP ๋ช…๋ น block-export-add ๋˜๋Š” qemu-storage-daemon ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ "--export" ์˜ต์…˜์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ARM ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ARMv8.1-M 'Helium' ์•„ํ‚คํ…์ฒ˜์™€ Cortex-M55 ํ”„๋กœ์„ธ์„œ๋Š” ๋ฌผ๋ก  ํ™•์žฅ๋œ ARMv8.4 TTST, SEL2 ๋ฐ DIT ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ARM ๋ณด๋“œ mps3-an524 ๋ฐ mps3-an547์— ๋Œ€ํ•œ ์ง€์›๋„ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx ๋ฐ sabrelite ๋ณด๋“œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์žฅ์น˜ ์—๋ฎฌ๋ ˆ์ด์…˜์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ARM์˜ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ๋ฐ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ ์ˆ˜์ค€์˜ ์—๋ฎฌ๋ ˆ์ด์…˜ ๋ชจ๋“œ์—์„œ ARMv8.5 MTE(MemTag, Memory Tagged Extension) ํ™•์žฅ์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ž‘์—…์— ํƒœ๊ทธ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๊ณ  ๋‹ค์Œ ์ž‘์—… ์‹œ ํฌ์ธํ„ฐ ํ™•์ธ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ํƒœ๊ทธ์™€ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์— ๋Œ€ํ•œ ์•ก์„ธ์Šค, ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ, ์ดˆ๊ธฐํ™” ์ „ ์•ก์„ธ์Šค, ํ˜„์žฌ ์ปจํ…์ŠคํŠธ ์™ธ๋ถ€ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์  ์•…์šฉ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 68k ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—๋Š” virtio ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ ์‹œ์Šคํ…œ "virt"์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • x86 ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” AMD SEV-ES(Secure Encrypted Virtualization) ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์— ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ์„ธ์„œ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์ด ๋ช…์‹œ์ ์œผ๋กœ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š๋Š” ํ•œ ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ๋ ˆ์ง€์Šคํ„ฐ ์ฝ˜ํ…์ธ ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • x86 ์‹œ์Šคํ…œ์„ ์—๋ฎฌ๋ ˆ์ด์…˜ํ•  ๋•Œ ๊ธฐ์กด TCG(Tiny Code Generator) ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ๋Š” ๊ถŒํ•œ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” PKS(Protection Keys Supervisor) ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ์ง€์›์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ์ค‘๊ตญ Loongson-3 ํ”„๋กœ์„ธ์„œ๋ฅผ ์ง€์›ํ•˜๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ ๋จธ์‹  "virt"๊ฐ€ MIPS ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ ์‹œ์Šคํ…œ "powernv"์šฉ PowerPC ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— ์™ธ๋ถ€ BMC ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ p์‹œ๋ฆฌ์ฆˆ ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ CPU๋ฅผ ํ•ซ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‹คํŒจ ์•Œ๋ฆผ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • DSP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Qualcomm Hexagon ํ”„๋กœ์„ธ์„œ๋ฅผ ์—๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํด๋ž˜์‹ TCG(Tiny Code Generator) ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ๋Š” ์ƒˆ๋กœ์šด Apple M1 ARM ์นฉ์ด ํƒ‘์žฌ๋œ ์‹œ์Šคํ…œ์—์„œ macOS ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • Microchip PolarFire ๋ณด๋“œ์šฉ RISC-V ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” QSPI NOR ํ”Œ๋ž˜์‹œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ œ Tricore ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” Infineon TC27x SoC๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ์ƒˆ๋กœ์šด TriBoard ๋ณด๋“œ ๋ชจ๋ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ACPI ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” PCI ๋ฒ„์Šค์— ์—ฐ๊ฒฐ๋œ ์ˆœ์„œ์™€ ๊ด€๊ณ„์—†์ด ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ๋„คํŠธ์›Œํฌ ์–ด๋Œ‘ํ„ฐ์— ์ด๋ฆ„์„ ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • virtiofs๋Š” ๊ฒŒ์ŠคํŠธ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด FUSE_KILLPRIV_V2 ์˜ต์…˜์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • VNC์—๋Š” ์ปค์„œ ํˆฌ๋ช…๋„์— ๋Œ€ํ•œ ์ง€์›๊ณผ ์ฐฝ ํฌ๊ธฐ์— ๋”ฐ๋ผ virtio-vga์˜ ํ™”๋ฉด ํ•ด์ƒ๋„ ์กฐ์ • ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • QMP(QEMU Machine Protocol)์—๋Š” ๋ฐฑ์—… ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋น„๋™๊ธฐ์‹ ๋ณ‘๋ ฌ ์•ก์„ธ์Šค์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • USB ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—๋Š” USB ์žฅ์น˜๋กœ ์ž‘์—…ํ•  ๋•Œ ์ƒ์„ฑ๋œ ํŠธ๋ž˜ํ”ฝ์„ Wireshark์—์„œ ํ›„์† ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด ๋ณ„๋„์˜ pcap ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • qcow2 ์Šค๋ƒ…์ƒท์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด QMP ๋ช…๋ น load-snapshot, save-snapshot ๋ฐ delete-snapshot์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ทจ์•ฝ์  CVE-2020-35517 ๋ฐ CVE-2021-20263์ด virtiofs์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ๊ณผ ๊ณต์œ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๊ถŒํ•œ ์žˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์— ํŠน์ˆ˜ ์žฅ์น˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” 'xattrmap' ์˜ต์…˜์˜ ํ™•์žฅ ์†์„ฑ ์ฒ˜๋ฆฌ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋ฉฐ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ๋ฌด์‹œ๋˜๊ณ  ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ๊ถŒํ•œ ์ƒ์Šน์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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