QEMU 5.2 ได้ถูกปล่อยออกมาแล้วและเวอร์ชันใหม่นี้มีการเปลี่ยนแปลงมากกว่า 3200 รายการจากนักพัฒนา 216 คนรวมถึงการรองรับการย้ายระบบแบบเรียลไทม์สำหรับ RISC-V การรองรับไฮเปอร์ไวเซอร์ RISC-V ในเชิงทดลอง การรองรับบอร์ดต่างๆ มากขึ้น และอื่นๆ อีกมากมาย
สำหรับผู้ที่ไม่คุ้นเคยกับ QEMU มันคือโปรแกรมจำลองที่ช่วยให้คุณสามารถเรียกใช้โปรแกรมที่สร้างขึ้นสำหรับแพลตฟอร์มฮาร์ดแวร์หนึ่ง บนระบบที่มีสถาปัตยกรรมที่แตกต่างกันอย่างสิ้นเชิงตัวอย่างเช่น การเรียกใช้แอปพลิเคชัน ARM บนพีซีที่เข้ากันได้กับ x86
ในโหมดเวอร์ชวลไลเซชันใน QEMU ประสิทธิภาพของการรันโค้ดในสภาพแวดล้อมแบบแยกจะใกล้เคียงกับระบบฮาร์ดแวร์เนื่องจากการดำเนินการคำสั่งโดยตรงบน CPU และการใช้ Xen ไฮเปอร์ไวเซอร์หรือโมดูล KVM
ความแปลกใหม่หลักของ QEMU 5.2
ระบบการสร้างโปรแกรมมีการเปลี่ยนแปลงการคอมไพล์ QEMU ในปัจจุบันจำเป็นต้องติดตั้งชุดเครื่องมือ ninja ก่อน
มีการเพิ่มการสนับสนุนสำหรับไดรเวอร์อุปกรณ์บล็อกเพื่อให้สามารถใช้กระบวนการ qemu-storage-daemon ในพื้นหลังเป็นแบ็กเอนด์สำหรับ vhost-user-blkรวมถึงคำสั่ง QMP ใหม่ 'block-export-add' ซึ่งแทนที่คำสั่ง 'nbd-server-add' และให้การสนับสนุน 'qemu-storage-daemon'
สำหรับอิมเมจ qcow2 นั้น ได้เพิ่มการรองรับรีจิสเตอร์ L2 แบบขยายทำให้สามารถจัดสรรพื้นที่ให้กับกลุ่มที่ไม่สมบูรณ์ (ซับคลัสเตอร์) ได้ หากต้องการเปิดใช้งาน L2 เมื่อสร้างอิมเมจ คุณต้องระบุตัวเลือก "extended_l2 = on"
สิ่งที่น่าสนใจอีกอย่างคือ การปรับปรุงการสนับสนุนการใช้งาน qemu ในฐานะไคลเอ็นต์ NBDซึ่งช่วยลดจำนวนสถานการณ์ที่นำไปสู่การหมดเวลาเมื่อแลกเปลี่ยนข้อมูลผ่านเครือข่าย ซึ่งทำให้ระบบปฏิบัติการแขกถูกบล็อก Qemu-nbd ยังมีคุณสมบัติในการระบุตัวเลือก '-B name' หลายรายการเพื่อระบุบิตแมปที่เปลี่ยนแปลงหลายรายการพร้อมกันได้
การเปลี่ยนแปลงที่สำคัญอีกประการหนึ่งคือโหมดการย้ายข้อมูลประสิทธิภาพสูงแบบใหม่พร้อมการถ่ายโอนข้อมูลที่เข้ารหัสโดยใช้ TLS และ multifd ขีดจำกัดแบนด์วิดท์การย้ายข้อมูลเริ่มต้นได้เพิ่มขึ้นเป็น 1 Gbps
ได้เพิ่ม พารามิเตอร์การย้ายข้อมูล 'block-bitmap-mapping' ซึ่งช่วยให้ควบคุมการถ่ายโอนบิตแมปได้ละเอียดมากขึ้น พารามิเตอร์นี้ใช้งานได้แม้ว่าชื่อโฮสต์จะแตกต่างจากต้นทางที่ปลายทางก็ตาม
นอกจากนี้ ยังมีการเพิ่มฟังก์ชันใหม่ 'calc-dirty-rate' และ 'query-dirty-rate'เพื่อทำนายอัตราการอัปเดตในระหว่างการย้ายข้อมูล โดยคำนึงถึงภาระงานที่เกี่ยวข้องกับการดำเนินการใน RAM ด้วย
นอกจากนี้ เรา ยัง จะ พบการรองรับสำหรับบอร์ด mp2-an386, mp2-an500, raspi3ap (Raspberry Pi 3 รุ่น A+), raspi0 (Raspberry Pi Zero), raspi1ap (Raspberry Pi A+) และ npcm750-evb/quanta-gsj ด้วย
สำหรับสถาปัตยกรรม AArch32 จะมีการใช้งานส่วนขยาย ARMv8.2 FEAT_FP16 (จุด flaoting ที่มีความแม่นยำปานกลาง)
สุดท้ายนี้ ยังมีการกล่าวถึงตัวเลือกใหม่สำหรับ virtiofsd เพื่อควบคุมการแสดงผลชื่อแอตทริบิวต์ xattr ที่ขยายเพิ่มเติมบนระบบเกสต์ การเชื่อมต่อพาร์ติชันแยกต่างหากที่มีจุดเชื่อมต่อต่างกันบนระบบโฮสต์ และการระบุกลไกการแยกแซนด์บ็อกซ์ซึ่งเป็นทางเลือกอื่นนอกเหนือจาก pivot_root ด้วย
และรองรับการย้ายระบบแบบเรียลไทม์ไปยังอีมูเลเตอร์สถาปัตยกรรม RISC-Vรวมถึงการสนับสนุนไฮเปอร์ไวเซอร์แบบทดลองสำหรับ RISC-V ที่ได้รับการอัปเดตเป็นเวอร์ชัน 0.6.1 เพิ่มการสนับสนุนซ็อกเก็ต NUMA บนระบบ virt/Spike
การเปลี่ยนแปลงที่สำคัญอื่นๆในเวอร์ชันใหม่นี้ ได้แก่:
- คำสั่ง guest-get-devices, guest-get-disks และ guest-ssh- {get, add-remove} -authorized-keys ถูกเพิ่มลงใน QEMU guest agent (qemu-ga)
- เพิ่มการสนับสนุนสำหรับการทำบัญชีตามเวลา kvm
- โปรแกรมจำลองสถาปัตยกรรม HPPA รองรับการบูต NetBSD และลีนุกซ์รุ่นเก่ามากเช่น Debian 0.5 และ 0.6.1
- โปรแกรมจำลองสถาปัตยกรรม PowerPC ได้ปรับปรุงการสนับสนุนสำหรับระยะห่างที่ผู้ใช้กำหนดสำหรับโทโพโลยี NUMA
- ตัวจำลองสถาปัตยกรรม s390 สำหรับ KVM เพิ่มการรองรับคำแนะนำในการวินิจฉัย 0x318
- โปรแกรมสร้างโค้ดคลาสสิก TCG (Tiny Code Generator) รองรับคำสั่ง z14 เพิ่มเติม
- บนอุปกรณ์ vfio-pci ข้อมูลเกี่ยวกับการทำงานของคอมพิวเตอร์จริงจะมีให้แทนคุณสมบัติที่เลียนแบบ
- โปรแกรมจำลองสถาปัตยกรรม Xtensa เพิ่มการรองรับสำหรับโปรเซสเซอร์ร่วม DFPU ด้วย opcodes จุดลอยตัวที่มีความแม่นยำเดียวและสองเท่า