因為想要用Xcode編譯一些東西,所以有了在Linux電腦裝MacOS虛擬機的念頭。
過去Ivon會採用Virtualbox或VMware裝虛擬機,不過對新版macOS的支援度都不太好。最近幾年Ivon改採用Github上一個很受歡迎的解決方案:Dhiru Kholia開發的OSX-KVM,簡單易用。
OSX-KVM提供多種版本的macOS映像檔,目前支援到macOS Ventura (13.2.1)。虛擬機系統除依賴硬體的功能以外一切正常運作,可以跑Xcode,也可以連接iPhone/iPad進行偵錯。
OSX-KVM方案好處在於,不需要Mac電腦製作ISO也能安裝虛擬機,利用Apple內部的機制就可以從macOS Base System還原安裝完整macOS。
如果嫌圖形性能不佳的,還可以直通顯示卡給虛擬機。
就合法性而言,其實這就是虛擬機版的「黑蘋果」(hackintosh),作者宣稱虛擬機的Apple-OSK金鑰網路上到處都找得到,因此不保證合法性。
1. 安裝前置依賴套件
- 電腦主機板要進入BIOS啟用CPU虛擬化支援。用以下指令檢查CPU是否支援虛擬化,回傳值不為0。
|
|
- 用以下指令確認CPU是否支援KVM,還有KVM核心模組是否有載入:
|
|
|
|
- 將使用者加入KVM群組
|
|
2. 複製OSX-KVM儲存庫
- 複製OSX-KVM儲存庫
|
|
- 執行下載指令稿,選擇macOS版本,輸入6,下載最新版macOS Ventura。此階段只會下載600MB的macOS Base System。
|
|
- 將DMG轉成IMG:
|
|
- 建立一個虛擬硬碟,建議至少128GB。
|
|
3. 開始安裝macOS虛擬機
- 用
OpenCore-Boot.sh
指令稿開機
|
|
如果QEMU視窗沒跳出來,只看到
(qemu) VNC server running on ::1:5900
訊息的話,請安裝遠端軟體Remmina,並在地址欄位選取VNC,輸入localhost:5900
存取桌面。點一下方向鍵移動到Base System,按下Enter
點選磁碟工具(Disk Utility),Continue。
選取剛剛建立的虛擬硬碟,點選Erase開始格式化
給硬碟取名,Format選擇macOS Extended (Journal),虛擬機不要選APFS
關閉磁碟工具,回到主畫面,點選"Reinstall macOS Ventura",按Continue。
接著按照螢幕指示完成安裝,下載檔案和安裝系統要2小時以上,慢慢等吧。
安裝期間可能需要反覆重開虛擬機才能順利裝完,之後會進到以下畫面。
設定好時間、語言、使用者帳號。進入桌面之後點選系統設定 → 系統更新,讓系統跑完更新。
日後要開機請執行OpenCore-Boot.sh
指令稿並選取macOS硬碟開機。
4. 將macOS虛擬機加到Virt Manager
(選擇性步驟)將macOS虛擬機資訊匯入到Virt Manager,就不需要用指令稿開機了。
安裝完虛擬機後,將macOS關機。
修改XML,並用virt-xml工具驗證是否合法
|
|
- 用macOS的XML建立虛擬機
|
|
- 設定目錄權限
|
|
- 這樣macOS就會出現在Virt Manager列表了,可以直接從這裡開機。注意macOS硬體檢查比較嚴格,在改虛擬機參數前請先閱讀作者的文件。
5. 顯示卡直通
以下內容需要您對黑蘋果有點概念。
雖然QEMU/KVM技術執行虛擬機算快了,可是圖形效能低落,只能勉強編譯些程式,不能做圖形設計。條件允許的用戶可以考慮顯示卡直通(GPU Passthrough)給虛擬機強化3D性能。
顯示卡推薦AMD或Intel的,Nvidia驅動在新版本macOS幾乎不能用了。
請看開發者的Note
如果您的螢幕有HDMI輸出,也能順便解決虛擬機沒音效的問題。
以Intel UHD Graphics 630為例,可以參考我之前寫的直通教學將GPU綁給VFIO。
調整權限
|
|
編輯/etc/security/limits.conf
,加入以下內容:
|
|
編輯OpenCore-Boot.sh
或用boot-passthrough.sh
,QEMU參數直接加上去。host=00:02.0
即Intel硬體的代號,可以從Virt Manager → 新增PCI裝置觀察
|
|
接著參考Dortania’s Guide和WhateverGreen修補OSX-KVM目錄下的OpenCore/config.plist
,在DeviceProperties加入對應的顯示卡數值。ProperTree有提供Linux版本。
修改config.plist
後要重新生成qcow2
|
|
之後嘗試啟動虛擬機。