มีการนำเสนอการเปิดตัวโครงการ QEMU 6.0 ในฐานะโปรแกรมจำลอง QEMU อนุญาตให้คุณเรียกใช้โปรแกรมที่สร้างขึ้นสำหรับแพลตฟอร์มฮาร์ดแวร์เดียวบนระบบที่มีสถาปัตยกรรมที่แตกต่างกันโดยสิ้นเชิง เช่น เรียกใช้แอปพลิเคชัน ARM บนพีซีที่รองรับ x86 ในโหมดการจำลองเสมือนใน QEMU ประสิทธิภาพของการเรียกใช้โค้ดในสภาพแวดล้อมแบบแยกจะใกล้เคียงกับระบบฮาร์ดแวร์ เนื่องจากการดำเนินการคำสั่งโดยตรงบน CPU และการใช้ Xen hypervisor หรือโมดูล KVM
โปรเจกต์นี้ถูกสร้างขึ้นโดย Fabrice Bellard เพื่อให้สามารถเรียกใช้ไฟล์ปฏิบัติการที่คอมไพล์สำหรับแพลตฟอร์ม x86 ได้ Linux บนสถาปัตยกรรมอื่นที่ไม่ใช่ x86 ตลอดระยะเวลาการพัฒนาหลายปี ได้มีการเพิ่มการสนับสนุนการจำลองแบบเต็มรูปแบบสำหรับสถาปัตยกรรมฮาร์ดแวร์ 14 แบบ และจำนวนอุปกรณ์ฮาร์ดแวร์ที่จำลองได้มีมากกว่า 400 รายการ ในการเตรียมเวอร์ชัน 6.0 มีการเปลี่ยนแปลงมากกว่า 3300 รายการจากนักพัฒนา 268 คน
การปรับปรุงสำคัญที่เพิ่มเข้ามาใน QEMU 6.0:
- อีมูเลเตอร์คอนโทรลเลอร์ NVMe ได้รับการอัปเดตเพื่อให้เป็นไปตามข้อกำหนด NVMe 1.4 และรวมถึงการสนับสนุนเชิงทดลองสำหรับเนมสเปซแบบแบ่งโซน I/O แบบมัลติพาธ และการเข้ารหัสข้อมูลแบบครบวงจรบนไดรฟ์
- เพิ่มตัวเลือกทดลอง "-machine x-remote" และ "-device x-pci-proxy-dev" เพื่อแปลงอุปกรณ์ให้เป็นอุปกรณ์ภายนอก โหมดนี้รองรับเฉพาะการจำลองอะแดปเตอร์ SCSI lsi53c895 เท่านั้น
- เพิ่มการสนับสนุนเชิงทดลองสำหรับการสร้างสแนปช็อตของเนื้อหา RAM
- มีการเพิ่มโมดูล FUSE สำหรับการส่งออกอุปกรณ์บล็อก ซึ่งช่วยให้คุณสามารถเมาท์สไลซ์สถานะของอุปกรณ์บล็อกใดๆ ที่ใช้ในระบบเกสต์ได้ การส่งออกสามารถทำได้ผ่านคำสั่ง block-export-add QMP หรือตัวเลือก "--export" ในยูทิลิตี้ qemu-storage-daemon
- ขณะนี้โปรแกรมจำลอง 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 Tagging Extension) มาใช้ในโหมดจำลองทั้งระดับระบบและระดับผู้ใช้ ส่วนขยายนี้ช่วยให้สามารถเชื่อมโยงแท็กกับการจัดสรรหน่วยความจำแต่ละครั้ง และช่วยให้มั่นใจว่าตัวชี้จะเชื่อมโยงกับแท็กที่ถูกต้องระหว่างการเข้าถึงหน่วยความจำ ส่วนขยายนี้สามารถใช้เพื่อป้องกันการใช้ประโยชน์จากช่องโหว่ที่เกิดจากการเข้าถึงบล็อกหน่วยความจำที่ว่างแล้ว การล้นบัฟเฟอร์ การเข้าถึงก่อนการเริ่มต้นระบบ และการใช้งานนอกบริบทปัจจุบัน
- ปัจจุบันอีมูเลเตอร์สถาปัตยกรรม 68k รองรับเครื่องจำลองประเภทใหม่ที่เรียกว่า "virt" ซึ่งใช้อุปกรณ์ virtio เพื่อเพิ่มประสิทธิภาพการทำงาน
- ปัจจุบันอีมูเลเตอร์สถาปัตยกรรม x86 รองรับเทคโนโลยี AMD SEV-ES (Secure Encrypted Virtualization) เพื่อเข้ารหัสรีจิสเตอร์โปรเซสเซอร์ที่ใช้ในระบบแขก ทำให้เนื้อหาของรีจิสเตอร์ไม่สามารถเข้าถึงได้โดยสภาพแวดล้อมโฮสต์ เว้นแต่ระบบแขกจะให้สิทธิ์การเข้าถึงอย่างชัดเจน
- เครื่องสร้างโค้ด TCG (Tiny Code Generator) แบบคลาสสิก เมื่อจำลองระบบ x86 จะใช้การรองรับกลไก PKS (Protection Keys Supervisor) ซึ่งสามารถใช้เพื่อป้องกันการเข้าถึงเพจหน่วยความจำที่มีสิทธิพิเศษได้
- มีการเพิ่มเครื่องจำลองประเภทใหม่ "virt" ลงในเครื่องจำลองสถาปัตยกรรม MIPS ซึ่งรองรับโปรเซสเซอร์ Loongson-3 ของจีน
- เพิ่มการรองรับตัวควบคุม BMC ภายนอกลงในโปรแกรมจำลองสถาปัตยกรรม PowerPC "powernv" สำหรับเครื่องจำลองแล้ว สำหรับเครื่องจำลอง Pseries ขณะนี้จะมีการแจ้งเตือนเกี่ยวกับความล้มเหลวระหว่างการพยายามถอดหน่วยความจำและ CPU แบบ Hot-removed
- เพิ่มการรองรับการจำลองโปรเซสเซอร์ Qualcomm Hexagon ด้วย DSP
- В классическом генераторе кода TCG (Tiny Code Generator) реализована поддержка хост-окружений macOS на системах с новым ARM-чипом Apple M1.
- อีมูเลเตอร์สถาปัตยกรรม RISC-V สำหรับบอร์ด Microchip PolarFire รองรับแฟลช QSPI NOR แล้ว
- ตอนนี้อีมูเลเตอร์ Tricore รองรับรุ่น TriBoard ใหม่ที่จำลอง Infineon TC27x SoC แล้ว
- โปรแกรมจำลอง ACPI ช่วยให้สามารถกำหนดชื่อให้กับอะแดปเตอร์เครือข่ายในระบบแขกที่ไม่ขึ้นอยู่กับลำดับที่เชื่อมต่อกับบัส PCI
- virtiofs เพิ่มการรองรับสำหรับตัวเลือก FUSE_KILLPRIV_V2 เพื่อปรับปรุงประสิทธิภาพของแขก
- ปัจจุบัน VNC รองรับความโปร่งใสของเคอร์เซอร์และรองรับการปรับขนาดความละเอียดหน้าจอ virtio-vga ตามขนาดหน้าต่าง
- QMP (QEMU Machine Protocol) รองรับการเข้าถึงแบบขนานแบบอะซิงโครนัสเมื่อดำเนินการงานสำรองข้อมูลแล้ว
- ตอนนี้โปรแกรมจำลอง USB มีความสามารถในการบันทึกการรับส่งข้อมูลที่สร้างขึ้นเมื่อทำงานกับอุปกรณ์ USB ลงในไฟล์ pcap แยกต่างหากสำหรับการตรวจสอบในภายหลังใน Wireshark
- เพิ่มคำสั่ง QMP ใหม่ load-snapshot, save-snapshot และ delete-snapshot สำหรับการจัดการสแนปช็อต qcow2
- ช่องโหว่ CVE-2020-35517 และ CVE-2021-20263 ได้รับการแก้ไขแล้วใน virtiofs ปัญหาแรกทำให้สามารถเข้าถึงสภาพแวดล้อมโฮสต์จากระบบเกสต์ได้โดยการสร้างไฟล์อุปกรณ์พิเศษในไดเรกทอรีที่ผู้ใช้ที่มีสิทธิ์ใช้งานในระบบเกสต์แชร์กับระบบโฮสต์ ปัญหาที่สองเกิดจากข้อผิดพลาดในการจัดการแอตทริบิวต์แบบขยายในตัวเลือก 'xattrmap' ซึ่งอาจนำไปสู่การละเว้นสิทธิ์การเขียนและการยกระดับสิทธิ์ภายในระบบเกสต์
ที่มา: opennet.ru
