Apple Silicon 與虛擬機器:突破 2 台虛擬機器限制

Hacker News·大約 4 小時前

這篇文章探討了我如何透過修改 XNU 核心並使用特定的啟動參數,來繞過 macOS 軟體授權協議中關於 Apple Silicon 主機只能同時運行兩台 macOS 虛擬機器的限制。

背景

在 Apple Silicon 架構的 Mac 上,開發者若使用 Apple 官方的虛擬化框架(Virtualization.framework)執行 macOS 虛擬機器,會面臨一個令人沮喪的技術限制:系統最多僅允許同時運行兩台 macOS 訪客虛擬機。這項限制源自於 Apple 的軟體授權協議(SLA),而本文作者透過深入研究 macOS 核心(XNU),發現了隱藏在核心中的配額檢查機制,並分享了如何透過更換開發版核心與調整引導參數,成功突破此限制以同時運行多達九台虛擬機。

社群觀點

針對 Apple 施加的虛擬機數量限制,Hacker News 社群展開了熱烈討論,多數開發者認為這種一刀切的限制極為荒謬。有網友指出,Apple 應根據硬體規格的強弱來調整配額,例如入門級晶片維持兩台限制,但 Pro 或 Max 等級的晶片應允許更高數量的虛擬實境環境,以符合其專業定位。這種人為設定的技術障礙,被視為對專業開發流程的干擾,尤其是在需要大規模自動化測試或模擬多節點環境時,兩台的上限顯得捉襟見肘。

關於 Apple 為何要設置此限制,社群中出現了不同的猜測。有觀點認為這可能是為了防止單一硬體被用於建立大規模的線上身分農場或自動化帳號操作,透過限制虛擬化數量來增加濫用成本。然而,這種做法也引發了關於 Apple 作為開發平台定位的爭論。部分評論者批評 macOS 雖然硬體優質,但本質上仍是以消費者為導向的封閉系統,開發者往往是因為必須為 Apple 生態系編寫軟體才不得不使用其硬體,而非因為其開發環境優於 Linux 等其他開放系統。

此外,也有資深用戶從歷史角度切入,認為 macOS 追求的是商業 POSIX 實作的穩定性,而非模仿 Linux。對於技術細節,社群成員也提出了一些有趣的延伸思考,例如在 M3 系列晶片之後,Apple 開始支援嵌套虛擬化(Nested Virtualization),這是否能成為繞過核心配額限制的另一種途徑,引起了技術愛好者的好奇。整體而言,社群對作者挖掘出核心隱藏參數的技術能力表示讚賞,但對 Apple 透過軟體手段限制硬體潛能的做法普遍感到無奈。

延伸閱讀

在討論過程中,有網友提到 Lume 這款工具,它同樣是基於 Apple Virtualization.framework 所開發的輕量化包裝工具。社群成員認為,只要透過本文提到的核心修改方法解除系統限制,Lume 等第三方虛擬化軟體應該也能同步受益,實現多開虛擬機的功能。此外,針對核心層級的探索,也有人推薦關注 Hack Different Discord 社群,該處常有關於 macOS 內部機制與硬體底層的研究討論。

https://khronokernel.com/macos/2023/08/08/AS-VM.html