มีการนำเสนอการเปิดตัวโครงการ QEMU 9.0 แล้ว ในฐานะอีมูเลเตอร์ QEMU ช่วยให้คุณสามารถรันโปรแกรมที่คอมไพล์สำหรับแพลตฟอร์มฮาร์ดแวร์เดียวบนระบบที่มีสถาปัตยกรรมที่แตกต่างไปจากเดิมอย่างสิ้นเชิง เช่น รันแอปพลิเคชัน ARM บนพีซีที่รองรับ x86 ในโหมดการจำลองเสมือนใน QEMU ประสิทธิภาพของการเรียกใช้โค้ดในสภาพแวดล้อมแบบแยกจะใกล้เคียงกับระบบฮาร์ดแวร์เนื่องจากการสั่งการโดยตรงบน CPU และการใช้ Xen hypervisor หรือโมดูล KVM ใน Linux หรือโมดูล NVMM ใน เน็ตบีเอสดี.
เดิมทีโปรเจ็กต์นี้สร้างขึ้นโดย Fabrice Bellard เพื่อให้โปรแกรมปฏิบัติการ Linux ที่สร้างขึ้นสำหรับแพลตฟอร์ม x86 ทำงานบนสถาปัตยกรรมที่ไม่ใช่ x86 ในช่วงหลายปีที่ผ่านมาของการพัฒนา มีการเพิ่มการรองรับการจำลองแบบเต็มรูปแบบสำหรับสถาปัตยกรรมฮาร์ดแวร์ 14 แบบ จำนวนอุปกรณ์ฮาร์ดแวร์ที่จำลองมีมากกว่า 400 รายการ ในการเตรียมการสำหรับเวอร์ชัน 9.0 มีการเปลี่ยนแปลงมากกว่า 2700 รายการจากนักพัฒนา 220 คน
การปรับปรุงสำคัญที่เพิ่มเข้ามาใน QEMU 9.0:
- ไดรเวอร์ virtio-blk จัดเตรียมอุปกรณ์บล็อกเสมือนสำหรับ เครื่องเสมือนเพิ่มการรองรับระบบคิวหลายระดับ (multiqueue) ซึ่งช่วยให้สามารถแยกคิวสำหรับอุปกรณ์บล็อกต่างๆ เพื่อให้สามารถเข้าถึงแบบมัลติเธรดบนระบบมัลติคอร์ได้ (คิวต่างๆ ของดิสก์เดียวกันสามารถประมวลผลโดยเธรด I/O ที่แตกต่างกันได้)
- เพิ่มการรองรับสำหรับคุณสมบัติ 'backend_defaults', 'logic_block_size', 'physical_block_size', 'min_io_size', 'opt_io_size' และ 'discard_granularity' ในอุปกรณ์บล็อกที่เก็บข้อมูล usb
- ไลบรารี gdbstub ได้รับการออกแบบมาเพื่อการดีบักแบบรีโมตใน GDB โดยใช้ RSP (Remote Serial Protocol) ได้เพิ่มการรองรับสำหรับโหมด fork-follow การดำเนินการ siginfo:read และการสกัดกั้นการเรียกระบบในพื้นที่ผู้ใช้
- แบ็กเอนด์ที่จัดสรรล่วงหน้าได้รับการปรับให้ทำงานในโหมดมัลติเธรด และตอนนี้สามารถประมวลผลคำขอจากหลายเธรดพร้อมกันได้ -
- มีการเพิ่มโหมด "mapped-ram" ลงในเครื่องมือการย้ายเครื่องเสมือน ซึ่งจะช่วยเพิ่มประสิทธิภาพในการสร้างสแน็ปช็อตของเครื่องเสมือน การตรวจหาหน้าหน่วยความจำศูนย์ได้รับการปรับปรุง ซึ่งช่วยเร่งการโยกย้ายเครื่องเสมือนที่ไม่ได้ใช้งานได้อย่างมาก หากระบบรองรับ multifd เมื่อย้ายตาม VFIO (Virtual Function I/O) จะมีการรองรับการรีสตาร์ทจากสถานะที่บันทึกไว้ (จุดตรวจ-รีสตาร์ท)
- การใช้งานอุปกรณ์ ESP SCSI (am53c974/dc390) ได้รับการเขียนใหม่แล้ว
- เพิ่มการรองรับอัลกอริธึมการเข้ารหัส SM4 และทำให้สามารถใช้งานได้ในไดรเวอร์อุปกรณ์บล็อก 'luks'
- เพิ่มการสนับสนุนสำหรับการสร้างและการใช้ไฟล์ที่มีส่วนหัว LUKS ที่บันทึกไว้ในไดรเวอร์ 'luks'
- โปรแกรมจำลองสถาปัตยกรรม ARM รองรับบอร์ด L475E-IOT01A IoT, mp3-an536 (MPS3 พร้อมเฟิร์มแวร์ AN536) และบอร์ด raspi4b (Raspberry Pi 4 Model B) เพิ่มการรองรับสำหรับการจำลองส่วนขยายตัวประมวลผล ECV (Enhanced Counter Virtualization), NV (Nested Virtualization) และ NV2 (Enhanced Nested Virtualization) ความสามารถของ Freescale i.MX6, Allwinner R40, Bananapi, Raspberry Pi, npcm7xx และโปรแกรมจำลองบอร์ด virt ได้รับการขยาย
- โปรแกรมจำลองสถาปัตยกรรม RISC-V ได้รับการอัปเดตเพื่อรองรับส่วนขยายสถาปัตยกรรมชุดคำสั่ง Zacas, amocas, RVA22, Zaamo, Zalrsc และ Ztso แล้ว เครื่องเสมือน RISC-V รองรับ SMBIOS แล้ว มีการใช้งานการรองรับ ACPI สำหรับ SRAT, SLIT, AIA และ PLIC และมีการอัปเดตการรองรับ RHCT แล้ว
- เฟิร์มแวร์ SeaBIOS-hppa ได้รับการอัพเดตเป็นเวอร์ชัน 16 ในโปรแกรมจำลองสถาปัตยกรรม HPPA ขนาดหน่วยความจำสูงสุดเพิ่มขึ้นจาก 3 GB เป็น 3840 MB เพิ่มการรองรับสำหรับตัวเลือก "--nodedefaults"
- โปรแกรมจำลองสถาปัตยกรรม LoongArch รองรับการเร่งความเร็ว KVM และรองรับการขยายเวกเตอร์ของชุดคำสั่ง LSX/LASX
- ตัวจำลองสถาปัตยกรรม s390x ได้เพิ่มการรองรับคำสั่ง CVDG, CVB, CVBY และ CVBG การจำลอง LAE (Load Address Extended) ได้รับการปรับปรุงแล้ว
- มีการเพิ่มอุปกรณ์ nubus-virtio-mmio ลงในโปรแกรมจำลองสถาปัตยกรรม 68k ซึ่งช่วยให้สามารถเข้าถึงอุปกรณ์ virtio จากเครื่อง q800 ได้
- มีการจัดแอสเซมบลีพร้อมแฟล็ก '-fzero-call-used-regs' ซึ่งช่วยให้คุณป้องกันการรั่วไหลของข้อมูลจากฟังก์ชันและลดจำนวนบล็อกที่เหมาะสมสำหรับการสร้างอุปกรณ์ ROP (การเขียนโปรแกรมที่เน้นการส่งคืน) ในการหาประโยชน์ ที่เพิ่มเข้ามาคือบิลด์ที่มีแฟล็ก '-ftrivial-auto-var-init=zero' เพื่อเริ่มต้นตัวแปรทั้งหมดที่เก็บไว้ในสแต็กให้เป็นศูนย์โดยอัตโนมัติ
- การรัน QEMU ด้วย KVM ต้องใช้เคอร์เนล Linux 4.4 เป็นอย่างน้อย สำหรับโฮสต์ ARM ในอนาคต พวกเขาวางแผนที่จะยกระดับมาตรฐานนี้เป็นเวอร์ชัน 4.19 การสนับสนุนการใช้ Windows 32 บิตเป็นระบบปฏิบัติการโฮสต์ถูกยกเลิกแล้ว
- เพิ่มการรองรับ OpenBSD 7.4
ที่มา: opennet.ru
