QEMU 10.1 มาพร้อมกับการรักษาความปลอดภัยที่ได้รับการปรับปรุง การโยกย้ายข้อมูล และการสนับสนุนที่ขยายเพิ่มเติม

  • การสนับสนุนแขกที่เป็นความลับ: TDX/SEV-SNP, IGVM และ guest_memfd ใน VFIO
  • การโยกย้ายที่รวดเร็วยิ่งขึ้น: multifd + postcopy และ RDMA ผ่าน IPv6
  • สถาปัตยกรรมที่ทันสมัย: คุณสมบัติ ARM ใหม่และส่วนขยาย RISC-V
  • การปรับปรุงในทางปฏิบัติ: GUI/เสียง, NBD, QMP และ PCI hotplug ผ่าน ACPI บน ARM 'virt'

QEMU 10.1

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 เป็นรุ่นที่มีความครอบคลุมมาก ด้วยประสิทธิภาพที่ใช้งานได้จริงมากขึ้น เครื่องมือการจัดการที่ดีขึ้น และฐานเทคโนโลยีที่ทันสมัยอย่างต่อเนื่อง การก้าวกระโดดครั้งนี้จึงคุ้มค่า.

QEMU 10.0
บทความที่เกี่ยวข้อง:
QEMU 10.0 มาพร้อมกับการปรับปรุงในสถาปัตยกรรมที่แตกต่างกันและรองรับ Apple