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

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

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

การปรับปรุงสำคัญที่เพิ่มเข้ามาใน QEMU 6.0:

  • ตัวจำลองคอนโทรลเลอร์ NVMe ได้รับการปรับปรุงให้สอดคล้องกับข้อกำหนด NVMe 1.4 และมาพร้อมกับการรองรับการทดลองสำหรับเนมสเปซแบบแบ่งโซน, I/O แบบหลายเส้นทาง และการเข้ารหัสข้อมูลจากต้นทางถึงปลายทางบนไดรฟ์
  • เพิ่มตัวเลือกการทดลอง “-machine x-remote” และ “-device x-pci-proxy-dev” เพื่อย้ายการจำลองอุปกรณ์ไปยังกระบวนการภายนอก ในโหมดนี้ รองรับเฉพาะการจำลองอะแด็ปเตอร์ lsi53c895 SCSI เท่านั้น
  • เพิ่มการสนับสนุนการทดลองสำหรับการสร้างสแน็ปช็อตของเนื้อหา RAM
  • เพิ่มโมดูล FUSE สำหรับการส่งออกอุปกรณ์บล็อก ซึ่งช่วยให้คุณสามารถเมานต์สถานะของอุปกรณ์บล็อกใดๆ ที่ใช้ในระบบเกสต์ได้ การส่งออกดำเนินการผ่านคำสั่ง QMP block-export-add หรือผ่านตัวเลือก “--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) เพื่อเข้ารหัสการลงทะเบียนโปรเซสเซอร์ที่ใช้ในระบบเกสต์ ทำให้เนื้อหาของการลงทะเบียนไม่สามารถเข้าถึงได้ในสภาพแวดล้อมของโฮสต์ เว้นแต่ระบบเกสต์จะอนุญาตการเข้าถึงอย่างชัดเจน
  • เมื่อจำลองระบบ x86 เครื่องสร้างโค้ด TCG (Tiny Code Generator) แบบคลาสสิกจะใช้การรองรับกลไก PKS (Protection Keys Supervisor) ซึ่งสามารถใช้เพื่อป้องกันการเข้าถึงหน้าหน่วยความจำที่มีสิทธิ์
  • มีการเพิ่มเครื่องจำลองประเภทใหม่ “virt” ให้กับโปรแกรมจำลองสถาปัตยกรรม MIPS ที่รองรับโปรเซสเซอร์ Loongson-3 ของจีน
  • ในโปรแกรมจำลองสถาปัตยกรรม PowerPC สำหรับเครื่องจำลอง “powernv” มีการเพิ่มการรองรับตัวควบคุม BMC ภายนอก สำหรับเครื่อง pseries ที่จำลอง จะมีการแจ้งเตือนความล้มเหลวเมื่อพยายามถอดหน่วยความจำและ CPU ออก
  • เพิ่มการรองรับการจำลองโปรเซสเซอร์ Qualcomm Hexagon ด้วย DSP
  • เครื่องสร้างโค้ด TCG (Tiny Code Generator) แบบคลาสสิกรองรับสภาพแวดล้อมโฮสต์ macOS บนระบบที่มีชิป Apple M1 ARM ใหม่
  • โปรแกรมจำลองสถาปัตยกรรม RISC-V สำหรับบอร์ด Microchip PolarFire รองรับแฟลช QSPI NOR
  • ขณะนี้โปรแกรมจำลอง Tricore รองรับบอร์ด TriBoard รุ่นใหม่ ซึ่งจำลอง SoC ของ Infineon TC27x
  • โปรแกรมจำลอง 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 snapshots
  • ช่องโหว่ CVE-2020-35517 และ CVE-2021-20263 ได้รับการแก้ไขแล้ว ปัญหาแรกช่วยให้สามารถเข้าถึงสภาพแวดล้อมโฮสต์จากระบบเกสต์โดยการสร้างไฟล์อุปกรณ์พิเศษในระบบเกสต์โดยผู้ใช้ที่มีสิทธิ์ในไดเร็กทอรีที่แชร์กับสภาพแวดล้อมโฮสต์ ปัญหาที่สองเกิดจากข้อบกพร่องในการจัดการแอตทริบิวต์เพิ่มเติมในตัวเลือก 'xattrmap' และอาจทำให้สิทธิ์ในการเขียนถูกละเว้นและสิทธิ์ในการยกระดับสิทธิ์ภายในระบบของแขก

ที่มา: opennet.ru

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