2020/12/03 2020/12/04
今夢を見続けているRyzen9 3900X + KVM(Intel偽装)のHackintoshについてKVM hostpassthrough化を検討しており、その一環でWindowsメインPC用でゲットした5950X環境を使って動作検証を取ってみることにしました。
結果として第一段階のRyzenでのHackintosh構築は問題無かったので、備忘録ついでに対応内容を残しておきます。
動作検証環境としては以下となります。
CPU | Ryzen9 5950X |
---|---|
メモリ | 32GB(CORSAIR CMK32GX4M2D3200C16) |
マザー | GIGABYTE X570 AORUS ELITE |
ストレージ | SSD 1TB(Crucial CT1000MX500SSD1) |
グラボ | MSI RADEON RX560 ITX 4G OC |
OS | MacOS Big Sur(11.0.1) |
RX560ですが、オクでジャンクで出てたのを動確用でゲットしました。
前に持ってたの売らなきゃよかった・・・
今回はCloverではなく、最近流行りのOpenCoreでやりました。
最初はOC Gen-Xで環境準備をしたのですが、OSインストーラーは起動はするもののなぜか1分程度経過するとリセットがかかるという意味不明な事象に悩まされ、結局はOpenCoreのドキュメント通りに基本従って作業したところ、うまくいきました。
なお、構築準備の作業はMacBook Proで行っています。
mkdir ~/5950hackin
cd ~/5950hackin
git clone https://github.com/corpnewt/ProperTree
cd ~/5950hackin
git clone https://github.com/corpnewt/GenSMBIOS
まずUSBメモリを用意し、ディスクユーティリティでUSBメモリに対して消去を行います。
その際の設定内容は以下となります。
名前 | USB |
---|---|
フォーマット | MacOS拡張(ジャーナリング) |
方式 | GUIDパーミッションマップ |
次にターミナルから以下コマンドでUSBメモリにOSインストーラーを転送します。
sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/USB
パスワードを聞かれたら自身のアカウントパスワードを入力し、
「If you wish to continue type (Y) then press return:」表示になったら「y」を入力します。
「Install media now available at “/Volumes/Install macOS Big Sur”」と出たら完了です。
ここからHackintoshとしてのメイン作業となるconfig.plistのカスタマイズになります。
cd ~/5950hackin/propertree
./propertree.command
でpropertreeを起動し、デスクトップのEFI/OC/config.plistを開きます。
ドキュメントにあるGetting started with ACPI→Choosing the SSDTsへ進み、AMD(17h)にあるSSDT-EC-USBX→Prebuilt→SSDT-EC-USBX-DESKTOPに進んでDownloadし、取得できたSSDT-EC-USBX-DESKTOP.amlをデスクトップのEFI/OC/ACPI配下に配置します。
配置後、propertreeのFile→OC Clean Snapshot (Cmd+Shift+R)を選択し、表示されたダイアログでデスクトップのEFI/OCを指定すると、表示されているconfig.plistのACPI/AddセクションにSSDT-EC-USBX-DESKTOP.amlに関する記述が追記されます。
そう、これがpropertreeが必須である理由です。
必要なファイルを置いてOC Clean Snapshotをするだけでconfig.plistを自動更新してくれます(保存は必要です)。
次はBooter/Quirksセクションの設定値の修正になります。
基本はドキュメントに従いました。
EnableWriteUnprotector | falseに変更 |
---|---|
RebuildAppleMemoryMap | trueに変更 |
SetupVirtualMap | falseに変更(trueだと起動直後に固まりました) |
SyncRuntimePermissions | trueに変更 |
DevicePropertiesについてはデフォルトで内蔵GPUの記述が書かれており、ワタシの環境では不要なためDeviceProperties/Add配下のPciRoot関連の記述を削除しました。
(DeviceProperties/Add配下を空にする)
KernelについてはまずKernel/Emulateセクションの設定値を修正します。
DummyPowerManagement | trueに変更 |
---|
次にKernel/Patchセクションに対し、Intel CPUしか動かないMacOSに対しRyzenでも動けるようにするためのパッチを当てます。
ドキュメントにあるRyzen/Threadripper(17h and 19h)よりpatches.plistを取得します。
もう一つProperTreeを起動し、patches.plistを開きます。
ドキュメントにも説明アニメーションがありますが、以下を行いconfig.plistのKernel/Patchをpatches.plistのKernel/Patchに置き換えます。
あとはKernel/Quirksの設定値を変更します。
PanicNoKextDump | trueに変更 |
---|---|
PowerTimeoutKernelPanic | trueに変更 |
XhciPortLimit | trueに変更 |
Misc配下も一部設定値の変更を行います。
Debug/AppleDebug | trueに変更 |
---|---|
Debug/ApplePanic | trueに変更 |
Debug/DisableWatchDog | trueに変更 |
Debug/Target | 67に変更 |
Security/AllowNvramReset | trueに変更 |
Security/AllowSetDefault | trueに変更 |
Security/ScanPolicy | 0に変更 |
Security/SecureBootModel | Defaultに変更 |
Security/Vault | Optionalに変更 |
NVRAM/Add/7C436110-AB2A-4BBB-A880-FE41995C9F82セクション配下の設定を修正します。
boot-args | -v keepsyms=1 debug=0x100 npci=0x2000 alcid=1に変更 |
---|---|
csr-active-config | 00000000に変更 |
run-efi-updater | falseに変更 |
prev-lang:kbd | TypeをStringに変更した上でen-US:0に変更 |
NVRAM/Deleteセクション配下の設定も以下について修正します。
WriteFlash | trueに変更 |
---|
PlatformInfoについてはGenSMBIOSをまず使用し、登録のための製品情報を生成します。
cd ~/5950hackin/GenSMBIOS
./GenSMBIOS.command
控えた内容をもとにPlatformInfo/Genericセクション配下の設定を修正します。
MLB | Board Serialの内容に変更 |
---|---|
SystemProductName | 「MacPro7,1」に変更 |
SystemSerialNumber | Serialの内容に変更 |
SystemUUID | SmUUIDの内容に変更 |
まず、必須のVirtualSMC.kextとlilu.kextを導入します。
ドキュメントにあるVirtualSMCよりVirtualSMC-1.1.8-RELEASE.zipをダウンロードし、解凍した中にあるVirtualSMC.kextをデスクトップのEFI/OC/Kexts配下にコピーします。
同様にLiluよりLilu-1.4.9-RELEASE.zipをダウンロードし、解凍した中にあるLilu.kextをデスクトップのEFI/OC/Kexts配下にコピーします。
あとは以下を同様にダウンロードしデスクトップのEFI/OC/Kexts配下にコピーします
Audio : AppleALCよりAppleALC-1.5.4-RELEASE.zip(AppleALC.kext)
Ethernet : SmallTreeIntel82576.kextよりSmallTree I211-AT patch 1.3.0のSmallTreeIntel82576.kext.zip(SmallTreeIntel82576.kext)
Graphics : WhateverGreenよりWhateverGreen-1.4.4-RELEASE.zip(WhateverGreen.kext)
コピー完了したらProperTreeよりOC CleanSnapShotを実行します。
→これでKernel/Addセクション配下に書くkextの記述が追加されます。
なお、順番が一定大事のようなので、以下のような順番にしておきました。
(順番はDictionary行をドラッグ&ドロップすることで変更できます)
Lilu.kext → VirtualSMC.kext → AppleALC.kext → SmallTreeIntel82576.kext → WhateverGreen.kext
ここまできたらCommand + sでconfig.plistを保存します。
Clover Configuratorを開き、TOOLS→Mount EFI→EFI PartitionsよりUSBメモリをMount Partitionします。
マウントできたらOpen Partitonを開きます。
開かれたフォルダにデスクトップのEFIフォルダをフォルダごとコピーします。
あとはUSBメモリをUnmount Partitionし、FinderからもUSBメモリのマウントを解除したらUSBメモリを抜き、インストール対象のマシンへ刺します
マシンを起動し、Delete連打でBIOS設定画面に入ります。
以下設定項目を変更します。
Adobe 4G Decoding | Disabledに |
---|---|
Port 60/64 Emulation | Disabledに |
CSM Support | Disabledに |
Secure Boot | Disabledに(これはしなくてもいけました) |
あとはSave Exit & Setupで保存します。
再起動を始めたらF12連打でブートデバイス選択に移り、UEFI USBを選択すればインストーラーが起動を始めます!
手順としては多いですが、意外と簡単にできてしまってビックリでした。
なお、うまくいかない場合はSanity Checkerを使うとconfig.plistの整合性は確認取れます。
ここからは個人的に別DiskにArch Linuxを入れてKVMからインストール済のSSDをHostPassthroughで起動できるか試してみようと思います〜
KVMでもCPUパススルーで稼働しました!
別のパラメータ(+invtsc)の書き漏れでした…
Tさん、コメントありがとうございます!
一旦KVMでの確認は進めているのですが、結果としては稼働できていない状況です。
(LOG:EXITBS:STARTのところで固まる)
ご提示頂いた手順では私の環境ではダメでした…
AuthenticAMDの指定は目から鱗だったのでこれだ!と思ったのですが、状況変わらず…
引き続き色々試してみます。
こんにちは。
当方Ryzen 5 3500 + GeForce GT710でOSX-KVM(VFIO&OpenCore 0.6.3)を行ってますが、
① OpenCoreのconfig.plistにRyzenパッチを適用
② 仮想マシンのxmlでCPUをhost-passthrough、Penrynをhost、GenuineIntelをAuthenticAMDに変更
この2つの手順のみでBig Surが起動しました。
config.plistにパッチを当てない状態で-cpu host,kvm=on,vendor=GenuineIntel… としても起動しCPUパススルーが行われていました。
参考までに