
QEMU 10.1 พร้อมให้บริการแล้ว และมาพร้อมกับการเปลี่ยนแปลงเล็กๆ น้อยๆ ที่สำคัญสำหรับทั้งนักพัฒนาและผู้ติดตั้งเครื่องเสมือนขนาดใหญ่ คุณสมบัติที่โดดเด่นที่สุดได้แก่ คุณสมบัติใหม่ด้านความปลอดภัย การไมเกรชันสด การสนับสนุนสถาปัตยกรรม และการปรับปรุงอุปกรณ์ดังนั้นจึงควรพิจารณาทบทวนอย่างใจเย็น
ก่อนที่เราจะลงรายละเอียด ขอแจ้งให้ทราบเพื่อหลีกเลี่ยงความสับสน: QEMU ใช้การกำหนดหมายเลขตามเวลา ซึ่งหมายความว่าหมายเลขรุ่นสูงสุดไม่ได้บ่งชี้ขอบเขตของการเปลี่ยนแปลงในตัวมันเอง นโยบายของโครงการอนุญาตให้มีการเปลี่ยนแปลงที่เข้ากันไม่ได้หลังจากช่วงเวลาเลิกใช้พร้อมคำเตือนในเวอร์ชันก่อนหน้าอย่างน้อยสองเวอร์ชันดังนั้นอย่าคิดว่าการข้ามเวอร์ชันหลักจะหมายถึงการปฏิวัติ
QEMU 10.1 ความพร้อมใช้งาน บริบท และปรัชญา
โครงการ โฆษณา 10.1.0 ในวันที่ 26 สิงหาคม 2025 โดยมีการลงนามมากกว่า 2700 รายการโดยผู้เขียน 226 ราย คุณสามารถดาวน์โหลดไฟล์ tarball ได้จากเว็บไซต์อย่างเป็นทางการและตรวจสอบบันทึกการเปลี่ยนแปลงฉบับเต็มเพื่อดูรายละเอียดทั้งหมดเช่นเคย ขอขอบคุณอย่างยิ่งแก่ผู้ที่ร่วมสนับสนุนโค้ด การทดสอบ CI เอกสารประกอบ และรายงานจุดบกพร่อง
สอดคล้องกับปรัชญาของ QEMU มีการกล่าวถึงฟีเจอร์ที่ถูกลบออกและตัวเลือกที่ไม่รองรับหลายครั้ง หากคุณพึ่งพาสิ่งที่เก่ากว่า ให้ตรวจสอบส่วน 'คุณลักษณะที่ถูกลบออก' และบท 'คุณลักษณะที่ไม่สนับสนุน' ในคู่มือผู้ใช้การจำลองระบบซึ่งแนะนำให้ทดแทนด้วย
ไฮไลท์แบบคร่าวๆ
เพื่อให้คุณเริ่มต้นได้ สรุปโดยย่อของ 10.1 ครอบคลุมถึงความปลอดภัย ประสิทธิภาพการทำงาน และการจัดการขั้นสูง มีการสนับสนุน VFIO เบื้องต้นสำหรับแขกที่เป็นความลับ การปรับปรุงการโยกย้ายที่มีประสิทธิภาพ และความสามารถของตัวแทนแขกใหม่.
- VFIO และความลับ:การสนับสนุนเบื้องต้นสำหรับการเข้าถึง/การแมปหน่วยความจำแขกที่ละเอียดอ่อนเมื่อใช้ guest_memfd เปิดใช้งานการส่งผ่านบน SEV-SNP/TDX
- การโยกย้ายแบบสด:multifd เร่งความเร็วในการปรับแต่งหลังการคัดลอก ก่อนการคัดลอก และรองรับ RDMA ผ่าน IPv6
- ตัวแทนรับเชิญ: : คำสั่งใหม่ 'guest-get-load' เพื่อค้นหาโหลดบน Windows
- สถาปัตยกรรม:ฟีเจอร์ใหม่ของ ARM (FEAT_SME2, SME2p1, SVE2p1 และอื่นๆ) ขยายการรองรับ RISC-V และการรวม KVM สำหรับ TDX บน x86
สถาปัตยกรรมและเครื่องจักร: มีการเปลี่ยนแปลงอะไรบ้าง
QEMU 10.1 ขัดเกลาและขยายการจำลองและเสมือนจริงในตระกูล CPU หลายตระกูล จาก ARM ไปจนถึง RISC-V และ x86 ผ่าน LoongArch, HPPA หรือ Microblaze มีความก้าวหน้าที่เป็นรูปธรรม ซึ่งควรจะต้องแบ่งออกไป
ARM
บน ARM, QEMU 10.1 เพิ่มคุณลักษณะทางสถาปัตยกรรม CPU มากมาย: FEAT_SME2, FEAT_SME2p1, FEAT_SME_B16B16, FEAT_SME_F16F16, FEAT_SVE_B16B16 และ FEAT_SVE2p1, การเสริมความแข็งแกร่งการสนับสนุนการประมวลผลเวกเตอร์และเมทริกซ์
ในส่วนของเครื่องจักรก็มีฟีเจอร์ใหม่ที่เกี่ยวข้องหลายประการ บอร์ด 'max78000fthr' (Analog Devices max78000 Cortex-M4) ได้ถูกรวมไว้แล้ว'AST2700FC' ซึ่งเป็น SoC หลายตัวใหม่กำลังจะมา พร้อมกับเครื่อง 'Catalina-BMC' (Meta) และ 'GB200-BMC' (NVIDIA) และกำลังเพิ่มการรองรับเฟิร์มแวร์ให้กับ AST2700 EVB
บอร์ด 'virt' ยอดนิยมก็กำลังเติบโตเช่นกัน: ตอนนี้รองรับ CXL, PCI hotplug ผ่าน ACPI และภายใต้เคอร์เนลโฮสต์ล่าสุด การจำลองเสมือนแบบซ้อนกับ KVM โดยเปิดใช้งาน 'virtualization=on'หมายเหตุ: โมเดล 'highbank' และ 'midway' ไม่ได้รับการสนับสนุนอีกต่อไป และจะมีการประกาศยกเลิกรุ่น 'ast2700a0-evb' แล้ว
RISC-V
ระบบนิเวศ RISC-V ได้รับรายละเอียดมากมายเกี่ยวกับ ISA เครื่องจักร และการแก้ไข รองรับส่วนขยายการดึงข้อมูลแบบอะตอมมิก (Ziccif) เพิ่ม 'Svrsw60t59b' และปรับแต่งกรณีขอบสำหรับคำสั่งเวกเตอร์.
- ISA และส่วนขยาย:คำสั่งหลอก 'tail' สำหรับการเรียกเข้าคิว การลบคุณสมบัติ CPU ที่มีตัวพิมพ์ใหญ่ 'Z' max_satp_mode จากโฮสต์ การตั้งค่าและการขยายจำนวนภูมิภาค PMP (สูงสุด 64) ตัวเลือกในการตั้งค่า 'vill' ให้ใช้ vsetvli ที่สงวนไว้
- เครื่องจักร:รองรับ RIMT ใน ACPI 'virt' การปรับปรุงการปรับแต่งบน Microchip PolarFire SoC และ ซีพียูและแพลตฟอร์ม Kunminghu ใหม่อัปเดตเวอร์ชัน FADT และ MADT ในตาราง ACPI
- การแก้ไขและอื่นๆ: ไม่อนุญาตให้ PMP RLB ข้ามสิทธิ์ การแก้ไข CSR ใน KVM, sstc, ลำดับ zama16b, การจัดการโปรไฟล์, การแก้ไขข้อยกเว้น/การปิดบัง (MEPC/SEPC สำหรับ IALIGN), การแก้ไขการวนรอบในช่วง PMP 0, การแก้ไขลูปการแปลแบบไม่มีที่สิ้นสุดของบิ๊กเอนเดียน และการแก้ไขความล้มเหลวในการไมเกรชันเมื่อ AIA ถูกตั้งค่าเป็น aplic-imsic
นอกจากนี้ เพิ่มฟีเจอร์ที่มีชื่อที่หายไป แก้ไขบันทึกการตอบสนองการแปล PPN และหลีกเลี่ยงความล่าช้าไม่สิ้นสุดในการส่งข้อมูลแบบอะซิงโครนัสซึ่งช่วยเพิ่มเสถียรภาพในสถานการณ์ที่รุนแรง
x86 (KVM และ TCG)
ใน x86 มีจุดดีสองประการที่ผู้ดูแลระบบจะต้องตระหนัก บิต CPUID เฉพาะของผู้จำหน่ายจะถูกละเว้นเมื่อไม่ได้กำหนดโดยผู้จำหน่าย CPU แขกเพื่อหลีกเลี่ยงความสับสนและโปรไฟล์ปลอม
ทางด้าน KVM เพิ่มการรองรับ TDX (ต้องใช้ Linux 6.16 ขึ้นไป)และอนุญาตให้เริ่มเครื่อง TDX หรือ SEV-SNP จากไฟล์ IGVM ซึ่งเป็นขั้นตอนสำคัญสำหรับการจัดเตรียมแบบปลอดภัย
ในโปรแกรมแปล TCG รองรับบิตดัก TSSการปรับปรุงความเที่ยงตรงของเส้นทางการดำเนินการบางอย่างโดยไม่ต้องเร่งด้วยฮาร์ดแวร์
ลุงอาร์ช
LoongArch ก้าวไปข้างหน้าด้วยการสนับสนุนจาก irqchip ในเคอร์เนลแก้ไขบิ๊กเอนเดียนด้วยตาราง MCFG แก้ไขการเริ่มต้นที่ล้มเหลวเมื่อ 'smp cpu' < 'smp maxcpus' ภายใต้ KVM และขัดเกลารายละเอียดคำสั่งเช่น VLDI แขก KVM จะได้รับแจ้งและมีการเพิ่มการตรวจสอบ 'fcond'.
ไมโครเบลซ
ผู้ที่ทำงานกับ Microblaze จะสามารถควบคุมได้มากขึ้น: เครื่อง 'petalogix_s3adsp1800' ช่วยให้คุณสามารถสลับ endianness ได้โดยใช้คุณสมบัติ 'endianness'ตัวแปร big-endian ของ ml605 และ xlnx-zynqmp-pmu กำลังถูกยกเลิกการใช้งาน และโมเดลเหล่านี้กำลังถูกแปลงเป็น little-endian ใน qemu-system-microblaze นอกจากนี้ ไบนารี 'qemu-system-microblazeel' กำลังถูกยกเลิกการใช้งานและจะถูกลบออกในอนาคต
MIPS
มีการแก้ไขที่เฉพาะเจาะจงมากแต่ได้รับการชื่นชมอย่างมาก: แก้ไข BSOD เมื่อบูต Windows NT MIPS บนเครื่อง Magnum (ปัญหา #2464)มีประโยชน์สำหรับผู้ที่ค้นคว้าหรือบำรุงรักษาซอฟต์แวร์ประวัติศาสตร์
HPPA
มันเคยเป็น ปรับปรุงการจำลองข้อยกเว้นจุดลอยตัว (FPE) ทั้งในโหมดผู้ใช้และโหมดระบบ เสริมความแม่นยำของสถาปัตยกรรมรุ่นเก๋านี้
สถาปัตยกรรมอื่นๆ
นอกเหนือจากส่วนต่างๆ ข้างต้นแล้ว ยังมีบทสำหรับ 68k, Alpha, AVR, Hexagon, OpenRISC, PowerPC, Renesas RX/SH, s390x, SPARC, Tricore และ Xtensa อีกด้วย แม้ว่าจะไม่มีหัวข้อข่าวสำคัญใดๆ อยู่ใน 10.1 สำหรับทุกคน แต่การบำรุงรักษาและการปรับแต่งยังคงดำเนินต่อไปโดยกล่าวถึง s390x เป็นพิเศษในเวอร์ชันล่าสุดสำหรับคำจำกัดความ CPU ใหม่และการปรับปรุง virtio-mem
อุปกรณ์ I/O และระบบย่อย
QEMU 10.1 นำเนื้อหาที่สำคัญในด้าน VFIO, เครือข่าย, กราฟิก, เสียง และ I/O การเปลี่ยนแปลงเหล่านี้ส่งผลโดยตรงต่อประสิทธิภาพ ความเข้ากันได้ และการดำเนินการในแต่ละวัน.
วีเอฟไอโอ
มีการแนะนำ การสนับสนุนเบื้องต้นสำหรับแบ็กเอนด์หน่วยความจำแบบ guest-memfd ในแขกที่เป็นความลับ (CoCo)อัปเดตเอกสาร IGD passthrough และแก้ไขการขัดข้องของ L2 บนเครื่อง pseries
มันยังเปิดใช้งานได้ OpRegion สำหรับ IGD passthrough โดยอัตโนมัติการตรวจจับได้รับการปรับปรุงแล้ว และ QEMU สามารถรายงานการเปลี่ยนแปลงการกำหนดค่า vfio-ap ได้แล้ว
เกินกว่านั้นก็ไปถึง ไคลเอนต์ผู้ใช้ vfio, การสนับสนุนของ อัปเดตสด (CPR), การไมเกรชัน VFIO ด้วย multifd บน aarch64และทรัพย์สินสำหรับ บังคับใช้รหัสคลาส PCI ของอุปกรณ์. ในที่สุดก็ได้มีการประกาศเป็นทางการแล้ว รองรับ VFIO บน TDX และ SNP VM.
เครือข่ายและการจัดเก็บข้อมูล
มีแบ็คเอนด์ใหม่สำหรับอุปกรณ์เครือข่าย: 'ผ่าน'ออกแบบมาสำหรับสถานการณ์การรวมระบบและการแซนด์บ็อกซ์ นอกจากนี้ เมื่อใช้ NBD บนซ็อกเก็ต Unix QEMU พยายามเจรจาเรื่องบัฟเฟอร์ที่ใหญ่ขึ้น เพื่อปรับปรุงประสิทธิภาพให้ดีขึ้นอย่างมาก
PCI/PCIe และ virtio
บอร์ด ARM 'virt' เพิ่ม PCI hotplug ผ่าน ACPI และ acpi-index สำหรับอุปกรณ์ PCI โดยเปิดใช้งานตัวเลือกทั่วโลก '-global acpi-ged.acpi-pci-hotplug-with-bridge-support=on'
ในกราฟิกเสมือนจริง virtio-gpu อนุญาตให้ใส่ชื่อ EDIDมีประโยชน์สำหรับการทดสอบความเข้ากันได้และการทำงานอัตโนมัติ
9pfs และแบ็กเอนด์อื่น ๆ
สำหรับ 9pfs อัลกอริทึมการกู้คืนตัวอธิบายไฟล์ เมื่อคุณใกล้ถึงขีดจำกัดของระบบและหลายกรณีของ ใช้หลังยกเลิกการเชื่อมโยง (การดำเนินการหลังจากการลบไฟล์) ที่อาจทำให้เกิดข้อผิดพลาดเล็กๆ น้อยๆ ได้
เสียง
ระบบย่อยเสียงจะปรับค่าเริ่มต้นและความเข้ากันได้: ใน ALSA 'try-poll' จะเป็นเท็จตามค่าเริ่มต้น และตัวแปลงเอนเดียนจะถูกเพิ่มสำหรับตัวอย่างจุดลอยตัว
อินเทอร์เฟซกราฟิกและตัวแทน
มีเรื่องมากมายที่ต้องพูดคุยใน GUI: spice/dbus รองรับ dmabuf แบบหลายระนาบและ gl=on ยังสามารถเปิดใช้งานกับไคลเอนต์ระยะไกล/ไม่ใช่ท้องถิ่นได้
ตัวแทน vdagent เพิ่ม การสนับสนุนการย้ายถิ่นฐานGTK ปรับปรุงการจัดการมาตราส่วนและเพิ่มตัวเลือก 'รักษาอัตราส่วนภาพ' และ 'มาตราส่วน'
ใน VNC ได้รับการแก้ไขแล้ว อัปเดตปัญหาการเข้ารหัส เมื่อไคลเอนต์และเซิร์ฟเวอร์มีความแตกต่างกันในเรื่องเอนเดียน ทั้งในการเข้ารหัสที่ไม่แน่นหนาและใน 8/16 bpp ปัญหาดังกล่าวยังได้รับการแก้ไขด้วย หน้าจอหยุดชั่วคราวหลังจากการโยกย้าย.
I/O และการดีบัก
ที่ชั้น I/O แบ็กเอนด์ TCP หลายตัวในปัจจุบันอนุญาตให้คุณกำหนดค่าพารามิเตอร์ TCP keepalive ได้มีประโยชน์มากในสภาพแวดล้อมที่มีไฟร์วอลล์หรือ NAT ที่เข้มงวด
GDBStub เพิ่ม รองรับ qGDBServerVersion ใช้โดยไคลเอนต์ที่ไม่ใช่ GDB เพื่อปรับปรุงการทำงานร่วมกัน
ปลั๊กอิน TCG ได้รับการเอาใจใส่: ปลั๊กอิน 'ips' รองรับ การปรับขนาดและคำสั่งที่กำหนดค่าได้ต่อควอนตัม; นอกจากนี้ยังมีฟีเจอร์ใหม่สำหรับ เขียนบันทึก, เขียนใน ที่อยู่เสมือน (ด้วยความระมัดระวัง) และ อ่าน/เขียนที่อยู่ฮาร์ดแวร์ปลั๊กอินทดสอบ 'แพทช์' ได้ถูกรวมไว้แล้ว และ sparc64 และ alpha เปิดเผยรายละเอียดการบันทึกให้กับปลั๊กอิน.
การย้ายข้อมูลสดและงานบล็อก
10.1 ขันสกรูบน VM mobility ให้แน่น การย้าย RDMA รองรับ IPv6 แล้ว และการคัดลอกภายหลังได้รับการปรับให้เหมาะสมสำหรับการเข้าถึงแบบต่อเนื่อง (กรณีทั่วไปเช่นการสตรีมวิดีโอ)
ข่าวดี: ตอนนี้สามารถเปิดใช้งาน Multifd และ postcopy ได้ในเวลาเดียวกันแล้ว (ตอนนี้ multifd เปิดใช้งานแล้วในระหว่างการคัดลอกล่วงหน้า) แก้ไขการโยกย้าย VFIO ด้วย multifd เมื่อเปิดใช้งาน TCP Zerocopy และลดลง หน้าต่างเวลาหยุดทำงานในสำเนาล่วงหน้า หลีกเลี่ยง LOG_CLEAR ที่ไม่จำเป็น
ใน QMP กระจกบล็อกเดฟ เปิดตัวแฟล็กบูลีน 'target-is-zero' เพื่อเพิ่มประสิทธิภาพ กระจก ไปยังจุดหมายปลายทางที่อ่านเป็นศูนย์แล้ว ยิ่งไปกว่านั้น แม้จะไม่มีแฟล็กนั้น งานที่ทำบนบล็อกต้นทางที่อ่านเป็นศูนย์ก็น้อยลง การสำรองข้อมูล blockdev เพิ่มตัวเลือก 'on-cbw-error' เพื่อตัดสินใจว่าจะจัดการกับข้อผิดพลาด I/O ในระหว่างการคัดลอกก่อนเขียนอย่างไร
ในการทำงานแบบบล็อก บล็อกคอมมิทไม่ได้ใช้งาน ได้รับการปรับให้เหมาะสมเพื่อรักษาความเบาบาง และมิเรอร์/การสำรองข้อมูลสืบทอดการปรับปรุงก่อนหน้านี้สำหรับบล็อกศูนย์และตัวเลือกใหม่
ตัวแทนรับเชิญ
QEMU Guest Agent เติบโตบน Windows: 'guest-get-load' ได้ถูกนำไปใช้งานแล้ว เพื่อสอบถามโหลดระบบแขก
นอกจากนี้ใน Windows ก็มีการเพิ่ม ลองใหม่อีกครั้งเมื่อยกเลิกการลงทะเบียนผู้ให้บริการ VSS และเผยแพร่ข้อผิดพลาดในการติดตั้งจากผู้ให้บริการ VSS ไปยังตัวติดตั้ง MSI ทำให้การวินิจฉัยง่ายขึ้น
โหมดผู้ใช้และ TCG
ในการจำลองโหมดผู้ใช้มี การอัปเดตเอกสารย่อย การชี้แจงข้อจำกัด ครอบคลุมถึงพื้นที่ของสัญญาณ รันไทม์ และ binfmt_misc เช่นเดียวกับเป้าหมายอัลฟ่า arm/aarch64 HPPA LongArch PowerPC s390 และ x86
งานยังคงดำเนินต่อไปที่ TCG LoongArch และ RISC-V และการสนับสนุนจาก บันทึก/เล่นซ้ำแม้ว่าจะไม่มีการเปลี่ยนแปลงใดๆ ต่อหัวข้อข่าวเลยนอกเหนือจากส่วนโกง TSS ดังที่กล่าวมาข้างต้น
การรวบรวม การอ้างอิง และแพลตฟอร์ม
ในกระบวนการสร้าง เอกสารจะได้รับการอัปเดตด้วย ตัวอย่าง b4 และตอนนี้ซับโมดูล edk2 ทั้งหมดก็พร้อมใช้งานแล้ว รวมอยู่ในไฟล์ tarball ของเฟิร์มแวร์.
เกี่ยวกับ Rust เวอร์ชันที่รองรับขั้นต่ำเพิ่มเป็น 1.77บน Debian มี bookworm อยู่ในแพ็กเกจ rustc-web ยกเว้น mips64el (สำหรับวัตถุประสงค์นี้ จำเป็นต้องใช้ Debian trixie หรือใหม่กว่า) บน Ubuntu 22.04 และ 24.04 แพ็กเกจ rust-1.77 จะถูกใช้โดยการตั้งค่าตัวแปร RUSTC/RUSTDOC เป็น /usr/bin/rustc-1.77 และ /usr/bin/rustdoc-1.77
การสนับสนุน Rust ยังคงดำเนินต่อไป ทดลองและไม่เสถียรไม่แนะนำให้ใช้เพื่อจุดประสงค์อื่นใดนอกจากการพัฒนา เมื่อเปิดใช้งาน Rust แล้ว QEMU จะต้องใช้ Meson 1.8.1มีการรวมสคริปต์ ('scripts/get-wraps-from-cargo-registry.py') เพื่อเติมข้อมูล 'subprojects/' จากรีจิสทรีภายในเครื่อง (เช่น /usr/share/cargo/registry)
บนแพลตฟอร์มโฮสต์ Debian Bullseye ไม่ได้รับการสนับสนุนอีกต่อไปและ Ninja 1.9 กลายเป็นสิ่งจำเป็น (มีอยู่แล้วในทุกระบบที่รองรับด้วย QEMU 10.0) นอกจากนี้ยังมาถึง การสนับสนุนเชิงทดลองสำหรับการคอมไพล์เป็น WASM ด้วย Emscripten.
ไม่มีหัวข้อข่าวเฉพาะเจาะจงเกี่ยวกับ Windows ในภาคนี้ นอกเหนือจากสิ่งที่ตัวแทนรับเชิญได้กล่าวถึงไปแล้ว แผนงาน 10.1 อยู่ในหน้าการวางแผน/10.1 หากคุณต้องการติดตามรายละเอียด
หากคุณกำลังรอการอัพเกรด การผสมผสานระหว่างการรองรับแขกที่เป็นความลับ (TDX/SEV-SNP กับ IGVM และ guest_memfd) การไมเกรชันที่เร็วขึ้น (multifd + postcopy, RDMA IPv6) และการปรับปรุงทั่วสถาปัตยกรรมและระบบย่อยทำให้ QEMU 10.1 เป็นรุ่นที่มีความครอบคลุมมาก ด้วยประสิทธิภาพที่ใช้งานได้จริงมากขึ้น เครื่องมือการจัดการที่ดีขึ้น และฐานเทคโนโลยีที่ทันสมัยอย่างต่อเนื่อง การก้าวกระโดดครั้งนี้จึงคุ้มค่า.
