- OpenBSD/arm64 สามารถทำงานเป็นระบบปฏิบัติการ guest บนสภาพแวดล้อม Apple Hypervisor ได้แล้ว
- ผ่านชุดคอมมิตที่แก้ไขและปรับปรุง การประมวลผลกราฟิกและความสามารถด้านเครือข่าย จึงแก้ปัญหา kernel panic และปัญหาหน้าจอดำของ X11 ได้
- ตอนนี้ทำงานได้อย่างสมบูรณ์ในสภาพแวดล้อม Apple Virtualization และใช้งานได้บน Apple Silicon Mac รุ่นล่าสุด
การรองรับ OpenBSD/arm64 บน Apple Hypervisor
- จากคอมมิตล่าสุด ทำให้ OpenBSD/arm64 สามารถรันเป็นระบบปฏิบัติการ guest บน Apple Hypervisor ได้
- คอมมิตที่เกี่ยวข้องดำเนินการโดย Helg Bredow(
helg@) และ Stefan Fritsch(sf@)
การแก้ไข viogpu ของ Helg Bredow
- มีการแก้ไขฟังก์ชัน viogpu_wsmmap() ในไฟล์
sys/dev/pv/viogpu.c
- เดิมทีฟังก์ชันนี้คืนค่า kernel virtual address (kva) แต่ตอนนี้คืนค่า physical address ผ่าน bus_dmamem_mmap(9)
- การแก้ไขนี้ช่วยแก้ ปัญหาหน้าจอดำ ตอนรัน X11 บน QEMU และ kernel panic บน Apple Hypervisor
- เพิ่มการเรียก bus_dmamap_sync(9) ก่อนส่งเฟรมบัฟเฟอร์ไปยังหน่วยความจำของโฮสต์
- ทำให้โฮสต์ที่กำลังรันอยู่บน CPU อื่นสามารถรับรู้การอัปเดตของเฟรมบัฟเฟอร์ได้
- kettenis@ เป็นผู้ตรวจทานและให้ข้อเสนอแนะ ส่วนการอนุมัติ (ok) มาจาก sf@
การแก้ไขเครือข่าย virtio ของ Stefan Fritsch
- เพิ่มการรองรับ VIRTIO_NET_F_MTU ในไฟล์
sys/dev/pv/if_vio.c
- ดึงค่า hardmtu จากไฮเปอร์ไวเซอร์ แล้วตั้งค่า MTU ปัจจุบันให้เท่ากัน
- แม้มาตรฐาน virtio จะไม่ชัดเจนนัก แต่เลือกใช้ แนวทางเดียวกับ Linux
- ใช้ ETHER_MAX_HARDMTU_LEN เป็นค่าขีดจำกัดบน ซึ่งแม่นยำกว่าการใช้ MAXMCLBYTES แบบเดิม
- หากไฮเปอร์ไวเซอร์ร้องขอ MTU ที่ใหญ่กว่านี้ จะทำ การเจรจาใหม่โดยไม่ใช้ความสามารถ VIRTIO_NET_F_MTU
- คอมมิตนี้ทำให้ OpenBSD ทำงานได้อย่างสมบูรณ์ในสภาพแวดล้อม Apple Virtualization
- helg@ เป็นผู้ให้ข้อมูลและทดสอบ ส่วนการอนุมัติ (ok) มาจาก jan@
คำแนะนำสำหรับผู้ใช้และการทดสอบ
- การเปลี่ยนแปลงนี้มีประโยชน์อย่างยิ่งสำหรับผู้ใช้ Apple Silicon Mac รุ่นล่าสุด
- ขณะนี้สามารถทดสอบได้ใน เวอร์ชัน snapshot และมีการขอความคิดเห็นจากผู้ใช้
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เพราะสเปกกำกวม Linux เลยใช้งานได้เลย แต่ OpenBSD ต้องใส่แพตช์แยกเพื่อจัดการข้อจำกัด MTU แบบตายตัว
ด้วยประสิทธิภาพ single-thread ของชิป M4/M5 ทำให้ OpenBSD guest เหมาะมากสำหรับการทดสอบการตั้งค่า pf หรือรันเมลเซิร์ฟเวอร์แบบแยกขาด
ตอนนี้สามารถใช้ viogpu ได้อย่างเสถียรแล้ว จึงไม่จำเป็นต้องพึ่งแค่ serial console เวลาติดตั้ง VM แบบรวดเร็วอีกต่อไป
ขอปรบมือดัง ๆ ให้ Helg และ Stefan
บั๊กนี้ทำให้ OpenBSD ค้างตอนเริ่ม X บน arm64 และเป็นปัญหาที่เกิดขึ้นหลังการเปลี่ยนแปลงเฟรมบัฟเฟอร์ในเวอร์ชัน 7.3
ทางแก้เดียวก่อนหน้านี้คือปิดไดรเวอร์เคอร์เนล แต่ตอนนี้น่าจะมีคนลองใช้ OpenBSD ได้แบบไม่มีปัญหามากขึ้น
OpenBSD ใช้งานได้กับชุด Hypervisor.framework + QEMU มานานแล้ว
ถ้านี่เป็นปัญหาจริงก็อยากรู้ว่ามีการปรับปรุงหรือยัง
ในทางกลับกัน การที่ guest เชื่อว่าตัวเองมี RAM 4GiB แต่จริง ๆ แล้ว host ค่อยจัดสรรเมื่อมีการเข้าถึงนั้นง่ายกว่ามาก
VM เป็นสิ่งที่ต่างจากคอนเทนเนอร์โดยสิ้นเชิง
อยากให้รองรับโปรโตคอลของไฮเปอร์ไวเซอร์ตัวอื่นด้วย (เช่น libvirtd, bhyve)
อยากรู้ว่ามันแยกจาก host ได้ถึงขั้นที่ host ไม่สามารถเจาะเข้าไปได้ในเชิงคณิตศาสตร์หรือไม่ น่าจะเหมาะกับการจัดการคีย์มาก
ถ้ามีฮาร์ดแวร์ที่เหมาะสมก็สามารถแยกได้ดีพอสมควร
มีพูดถึงเรื่องนี้ในงานนำเสนอ BSDCan 2025 ด้วย
ใช้ได้แค่ RDP/VNC เท่านั้น หวังว่าการปรับปรุงครั้งนี้จะทำให้เฟรมบัฟเฟอร์ใช้งานได้