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

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

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

์—ด์‡  ๊ฐœ๋Ÿ‰QEMU 5.1์— ์ถ”๊ฐ€๋จ:

  • ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜ CPU ์—๋ฎฌ๋ ˆ์ด์…˜ ์ง€์› ์ถ”๊ฐ€ AVR. Arduino Duemilanove(ATmega168), Arduino Mega 2560(ATmega2560) ๋ณด๋“œ์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    ์•„๋‘์ด๋…ธ ๋ฉ”๊ฐ€(ATmega1280) ๋ฐ ์•„๋‘์ด๋…ธ UNO(ATmega328P).

  • ARM ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—๋Š” ํ•ซ ํ”Œ๋Ÿฌ๊ทธ โ€‹โ€‹๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋Šฅ๊ณผ ACPI๊ฐ€ ์žˆ๋Š” ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ํ•ซ ํ”Œ๋Ÿฌ๊ทธ โ€‹โ€‹nvdimm ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ARMv8.2 ํ™•์žฅ์— ๋Œ€ํ•œ ์ง€์› ๊ตฌํ˜„ TTS2UXN ะธ ARMv8.5 MemTag. sonorapass-bmc ๋ณด๋“œ์— ๋Œ€ํ•œ ์ง€์›์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Loongson 3A CPU(R1 ๋ฐ R4)์— ๋Œ€ํ•œ ์ง€์›์ด MIPS ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. FPU ๋ฐ MSA ๋ช…๋ น์–ด ์—๋ฎฌ๋ ˆ์ด์…˜์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • SiFive E34 ๋ฐ Ibex CPU์— ๋Œ€ํ•œ ์ง€์›์ด RISC-V ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. HiFive1 revB ๋ฐ OpenTitan ๋ณด๋“œ์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ŠคํŒŒ์ดํฌ ๋จธ์‹ ์€ ๋‘˜ ์ด์ƒ์˜ CPU๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • PowerPC ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ์ด์ œ FWNMI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ์˜ค๋ฅ˜ ๋ณต๊ตฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • s390 ์•„ํ‚คํ…์ฒ˜์˜ ๊ฒฝ์šฐ ๋ณด์•ˆ ๊ฐ€์ƒํ™”(๋ณด์•ˆ ์‹คํ–‰ ๋ชจ๋“œ)๋ฅผ ์œ„ํ•ด KVM ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • x86 ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” Windows ACPI Emulated Device Table(WAET)์„ ์ œ๊ณตํ•˜์—ฌ ์ ์‘๋˜์ง€ ์•Š์€ Windows ๊ฒŒ์ŠคํŠธ ๊ฐ€์ƒํ™”์— ๋”ฐ๋ฅธ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. ํ–ฅ์ƒ๋œ ๊ฐ€์† ์ง€์› HVF macOS์šฉ.
  • ์ด์ œ ๋ธ”๋ก ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„๋Š” ํฌ๊ธฐ๊ฐ€ 2MB์ธ ๋…ผ๋ฆฌ์  ๋ฐ ๋ฌผ๋ฆฌ์  ๋ธ”๋ก์ด ์žˆ๋Š” ๊ฐ€์ƒ ์ €์žฅ ์žฅ์น˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด "secret-keyring" ์œ ํ˜•์˜ ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Linux ์ปค๋„ ํ‚ค๋ง์„ ํ†ตํ•ด QEMU์— ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ์ „์†กํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • qcow2 ํ˜•์‹์€ ์ด์ œ zstd ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • qcow2 ํŒŒ์ผ์˜ ์˜๊ตฌ ๋น„ํŠธ๋งต์„ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด qemu-img ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์ƒˆ๋กœ์šด 'bitmap' ๋ช…๋ น์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. qemu-img๋Š” ๋˜ํ•œ LUKS ํ‚ค ๊ด€๋ฆฌ(ํ‚ค์Šฌ๋กฏ)๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  "map"(--start-offset, -max-length) ๋ฐ "convert"(-bitmaps) ๋ช…๋ น์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ "measure" ๋ช…๋ น์€ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. qcow2 ํŒŒ์ผ์˜ ์˜๊ตฌ ๋น„ํŠธ๋งต ํฌ๊ธฐ์— ๋Œ€ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค.
  • NVMe ๋“œ๋ผ์ด๋ฒ„๋Š” ์ด์ œ NVMe 1.4 ์‚ฌ์–‘์— ๋„์ž…๋œ ์˜๊ตฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์กด TCG(Tiny Code Generator) ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ๋ฅผ ๊ฐ–์ถ˜ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์šฉ Virtio์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค ์‚ฌ์šฉ ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ ์‚ฌ์šฉ์ž, virtiofsd๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS ํ™•์žฅ์ด vhost-user์— ์ถ”๊ฐ€๋˜์–ด 8๊ฐœ ์ด์ƒ์˜ RAM ์Šฌ๋กฏ์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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