本篇文章更新時間:2026/01/17
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
內容目錄
OpenBSD 終於能在 Apple Hypervisor 上順跑了
從驅動補強到 MTU 支援,讓 Apple Silicon 使用者的一大步
編輯前言:如果你跟我一樣在 Apple Silicon 上折騰虛擬化,那你可能一直在等待這一天。OpenBSD/arm64 終於能夠穩定地在 Apple Hypervisor 下運行了,而這次的進展來自一連串看似低調、但意義重大的驅動修補。
本文整理自 Undeadly 的報導:OpenBSD-current now runs as guest under Apple Hypervisor
核心觀點 (Key Takeaways)
- OpenBSD/arm64 現在可作為 Apple Hypervisor 的 guest OS 執行。
- 兩個關鍵修正:viogpu 與 virtio-net 驅動的改良,使圖形與網路行為趨於穩定。
- 這些更新已進入 snapshots,適合擁有 Apple Silicon 硬體的人實際測試。
深入解析
這次更新主要來自 helg@ 與 sf@ 的兩組 commit,它們分別處理了不同層面的相容性問題。看似細節,但每一項都直擊 OpenBSD 在 Apple Hypervisor 上無法順利運作的核心原因。
helg@ 的 commit 修正了 viogpu 的記憶體處理方式,避免 X11 只顯示黑畫面,並防止在 Apple Hypervisor 上直接 panic。
1. viogpu:從黑畫面到正常顯示的關鍵修正
這段更新處理的是 viogpu_wsmmap() 的回傳值。原本它回傳的是 KVA,但實際上應該回傳的是透過 bus_dmamem_mmap(9) 取得的 physical address。
結果是什麼?
- 在 QEMU 上會出現黑畫面,X11 起不來。
- 在 Apple Hypervisor 上更嚴重:直接 kernel panic。
修正後,再加上 bus_dmamap_sync(9) 的同步處理,確保 framebuffer 的更新能被其他 CPU 正常看到,顯示輸出自然也回歸穩定。
2. virtio-net:加入 MTU feature 支援
sf@ 的更新則讓網路堆疊變得更完整。他加入了 VIRTIO_NET_F_MTU 支援,這讓客端 OS 能從 hypervisor 取得正確的硬體 MTU。
幾個重點:
- MTU 會與 hypervisor 建議值一致(與 Linux 相同做法)。
- 將上限調整為
ETHER_MAX_HARDMTU_LEN,這比原本沿用的MAXMCLBYTES更合理。 - 若 hypervisor 提供過大的 MTU,就會重新協商並移除 MTU feature,避免錯誤設定。
sf@ 明確指出:這項修正讓 OpenBSD 終於能夠在 Apple Virtualization 上正常運作。
筆者心得與啟發
對我來說,這是 OpenBSD 在 Apple Silicon 生態的一個重要里程碑。之前雖然可以透過 UTM、QEMU 等方式跑起來,但總有一些邊角問題讓人無法真正「日常使用」。
這次的更新顯示兩個趨勢:
- OpenBSD 開發者真的在意 原生 Apple Hypervisor 的支援,而不只是靠 QEMU 兼容層。
- virtio 家族(gpu、net)正逐步在 Apple 平台上成熟,這也意味著未來可能有更多 ARM64 的虛擬化情境能被 OpenBSD 拿下。
如果你目前手上有 M1/M2/M3/M4 的機器,我真心建議你下載最新 snapshot 測試看看。一來能幫助回報問題,二來你會發現 OpenBSD 在 Apple Silicon 上的體驗正越來越接近主流虛擬機平台。
對於我自己,我開始重新思考未來是否可以把某些服務轉移到 Apple Hypervisor 上跑的 OpenBSD guest,不再只依賴 QEMU 這種較重的中介層。未來一年,這領域應該會非常精彩。
