การเปิดตัวโปรแกรมจำลอง QEMU 4.0

ก่อตัวขึ้น การเปิดตัวโครงการ QEMU 4.0. ในฐานะอีมูเลเตอร์ QEMU ช่วยให้คุณสามารถรันโปรแกรมที่คอมไพล์สำหรับแพลตฟอร์มฮาร์ดแวร์เดียวบนระบบที่มีสถาปัตยกรรมที่แตกต่างไปจากเดิมอย่างสิ้นเชิง เช่น รันแอปพลิเคชัน ARM บนพีซีที่รองรับ x86 ในโหมดการจำลองเสมือนใน QEMU ประสิทธิภาพของการเรียกใช้โค้ดในสภาพแวดล้อมแบบแยกจะใกล้เคียงกับระบบเนทิฟ เนื่องจากการดำเนินการตามคำสั่งโดยตรงบน CPU และการใช้ Xen Hypervisor หรือโมดูล KVM

เดิมทีโปรเจ็กต์นี้สร้างขึ้นโดย Fabrice Bellard เพื่อให้โปรแกรมปฏิบัติการ Linux ที่สร้างขึ้นสำหรับแพลตฟอร์ม x86 ทำงานบนสถาปัตยกรรมที่ไม่ใช่ x86 ในช่วงหลายปีที่ผ่านมาของการพัฒนา มีการเพิ่มการรองรับการจำลองแบบเต็มรูปแบบสำหรับสถาปัตยกรรมฮาร์ดแวร์ 14 แบบ จำนวนอุปกรณ์ฮาร์ดแวร์ที่จำลองมีมากกว่า 400 รายการ ในการเตรียมการสำหรับเวอร์ชัน 4.0 มีการเปลี่ยนแปลงมากกว่า 3100 รายการจากนักพัฒนา 220 คน

สำคัญ การปรับปรุงเพิ่มใน QEMU 4.0:

  • เพิ่มการรองรับส่วนขยายคำสั่ง ARMv8+ ให้กับตัวจำลองสถาปัตยกรรม ARM แล้ว: SB, PredInv, HPD, LOR, FHM, AA32HPD,
    PAuth, JSConv, CondM, FRINT และ BTI เพิ่มการรองรับการเลียนแบบบอร์ด Musca และ MPS2 ปรับปรุงการจำลอง ARM PMU (หน่วยการจัดการพลังงาน) ไปที่แพลตฟอร์ม คุณธรรม เพิ่มความสามารถในการใช้ RAM มากกว่า 255 GB และรองรับอิมเมจ u-boot ด้วยประเภท "noload"

  • ในโปรแกรมจำลองสถาปัตยกรรม x86 ในกลไกการเร่งความเร็วการจำลองเสมือน แฮ็กซ์ (Intel Hardware Accelerated Execution) เพิ่มการรองรับโฮสต์ที่สอดคล้องกับ POSIX เช่น Linux และ NetBSD (ก่อนหน้านี้รองรับเฉพาะแพลตฟอร์ม Darwin เท่านั้น) ในโปรแกรมจำลองชิปเซ็ต Q35 (ICH9) สำหรับพอร์ต PCIe หลัก ขณะนี้สามารถเลือกประกาศความเร็วสูงสุด (16GT/s) และจำนวนสายเชื่อมต่อ (x32) ที่กำหนดในข้อกำหนด PCIe 4.0 ได้ (เพื่อให้มั่นใจถึงความเข้ากันได้ 2.5GT คือ ติดตั้งตามค่าเริ่มต้นสำหรับเครื่อง QEMU ประเภทเก่า /s และ x1) สามารถโหลดอิมเมจ Xen PVH ด้วยตัวเลือก "-kernel" ได้
  • ตัวจำลองสถาปัตยกรรม MIPS ได้เพิ่มการรองรับการจำลองแบบมัลติเธรดโดยใช้ตัวสร้างโค้ด TCG (Tiny Code Generator) แบบคลาสสิก เพิ่มการรองรับการจำลอง CPU I7200 (nanoMIPS32 ISA) และ I6500 (MIPS64R6 ISA) ความสามารถในการประมวลผลคำขอประเภท CPU โดยใช้ QMP (QEMU Management Protocol) เพิ่มการรองรับการลงทะเบียนการกำหนดค่า SAARI และ SAAR ปรับปรุงประสิทธิภาพของเครื่องเสมือนด้วยประเภท Fulong 2E อัปเดตการใช้งานหน่วยการสื่อสาร Interthread;
  • ในโปรแกรมจำลองสถาปัตยกรรม PowerPC ได้เพิ่มการรองรับการจำลองตัวควบคุมขัดจังหวะ XIVE แล้ว การรองรับ POWER9 ได้รับการขยาย และสำหรับซีรีส์ P ได้เพิ่มความสามารถในการเสียบโฮสต์บริดจ์ PCI แบบฮอตปลั๊ก (PHB, บริดจ์โฮสต์ PCI) การป้องกันการโจมตี Spectre และ Meltdown ถูกเปิดใช้งานตามค่าเริ่มต้น
  • เพิ่มการรองรับการจำลอง PCI และ USB ให้กับตัวจำลองสถาปัตยกรรม RISC-V แล้ว ขณะนี้เซิร์ฟเวอร์การดีบักในตัว (gdbserver) รองรับการระบุรายการรีจิสเตอร์ในไฟล์ XML เพิ่มการรองรับฟิลด์สถานะ TSR, TW และ TVM
  • โปรแกรมจำลองสถาปัตยกรรม s390 ได้เพิ่มการรองรับสำหรับรุ่น CPU z14 GA 2 รวมถึงการรองรับการจำลองส่วนขยายคำสั่งสำหรับการดำเนินการจุดลอยตัวและเวกเตอร์ เพิ่มความสามารถให้กับอุปกรณ์ hot-plug ให้กับ vfio-ap;
  • ตัวจำลองโปรเซสเซอร์ตระกูล Tensilica Xtensa ได้ปรับปรุงการรองรับ SMP สำหรับ Linux และเพิ่มการรองรับ FLIX (ส่วนขยายคำสั่งความยาวที่ยืดหยุ่น)
  • ตัวเลือก '-display Spice-app' ได้รับการเพิ่มไปยังอินเทอร์เฟซแบบกราฟิกเพื่อกำหนดค่าและเปิดใช้งานเวอร์ชันของไคลเอ็นต์การเข้าถึงระยะไกล Spice ด้วยการออกแบบที่คล้ายกับอินเทอร์เฟซ QEMU GTK
  • เพิ่มการรองรับการควบคุมการเข้าถึงโดยใช้ตัวเลือก tls-authz/sasl-authz ในการใช้งานเซิร์ฟเวอร์ VNC
  • QMP (QEMU Management Protocol) เพิ่มการรองรับการดำเนินการคำสั่งแบบรวมศูนย์/ภายนอก (นอกย่านความถี่) และใช้คำสั่งเพิ่มเติมสำหรับการทำงานกับอุปกรณ์บล็อก
  • มีการเพิ่มการใช้งานอินเทอร์เฟซ EDID ให้กับ VFIO สำหรับ mdevs ที่รองรับ (Intel vGPUs) ซึ่งช่วยให้คุณเปลี่ยนความละเอียดหน้าจอได้โดยใช้ตัวเลือก xres และ yres
  • มีการเพิ่มอุปกรณ์ 'xen-disk' ใหม่สำหรับ Xen ซึ่งสามารถสร้างแบ็กเอนด์ดิสก์สำหรับ Xen PV ได้อย่างอิสระ (โดยไม่ต้องเข้าถึง xenstore) ประสิทธิภาพของแบ็กเอนด์ดิสก์ Xen PV ได้รับการเพิ่มขึ้น และเพิ่มความสามารถในการเปลี่ยนขนาดดิสก์
  • ความสามารถในการวินิจฉัยและการติดตามได้รับการขยายในอุปกรณ์บล็อกเครือข่าย และความเข้ากันได้ของไคลเอนต์กับการใช้งานเซิร์ฟเวอร์ NBD ที่มีปัญหาได้รับการปรับปรุง เพิ่มตัวเลือก "--bitmap", "--list" และ "--tls-authz" ให้กับ qemu-nbd;
  • เพิ่มการรองรับโหมด PCI IDE ให้กับ IDE/ผ่านอุปกรณ์จำลอง
  • เพิ่มการรองรับการใช้อัลกอริธึม lzfse เพื่อบีบอัดรูปภาพ dmg สำหรับรูปแบบ qcow2 ได้เพิ่มการรองรับการเชื่อมต่อไฟล์ข้อมูลภายนอกแล้ว การดำเนินการคลายแพ็ก qcow2 จะถูกย้ายไปยังเธรดที่แยกจากกัน เพิ่มการรองรับการดำเนินการ "blockdev-create" ในอิมเมจ vmdk
  • อุปกรณ์บล็อก virtio-blk ได้เพิ่มการรองรับการดำเนินการ DISCARD (แจ้งเกี่ยวกับการเปิดตัวบล็อก) และการดำเนินการ WRITE_ZEROES (การทำให้ช่วงของบล็อกลอจิคัลเป็นศูนย์)
  • อุปกรณ์ pvrdma รองรับบริการ RDMA Management Datagram (MAD)
  • มีส่วนร่วม การเปลี่ยนแปลงละเมิดความเข้ากันได้แบบย้อนหลัง เช่น แทนที่จะใช้ตัวเลือก "handle" ใน "-fsdev" และ "-virtfs" คุณควรใช้ตัวเลือก "local" หรือ "proxy" ตัวเลือก “-virtioconsole” (แทนที่ด้วย “-device virtconsole”), “-no-frame”, “-clock”, “-enable-hax” (แทนที่ด้วย “-accel hax”) ถูกลบออก อุปกรณ์ที่ถูกลบ "ivshmem" (ควรใช้ "ivshmem-doorbell" และ "ivshmem-plain") การสนับสนุนการสร้างด้วย SDL1.2 ถูกยกเลิกแล้ว (คุณต้องใช้ SDL2)

ที่มา: opennet.ru

เพิ่มความคิดเห็น