Ryzen9 5950XでBig Sur

2020/12/03 2020/12/04

今夢を見続けているRyzen9 3900X + KVM(Intel偽装)のHackintoshについてKVM hostpassthrough化を検討しており、その一環でWindowsメインPC用でゲットした5950X環境を使って動作検証を取ってみることにしました。

結果として第一段階のRyzenでのHackintosh構築は問題無かったので、備忘録ついでに対応内容を残しておきます。

動作検証環境としては以下となります。

CPURyzen9 5950X
メモリ32GB(CORSAIR CMK32GX4M2D3200C16)
マザーGIGABYTE X570 AORUS ELITE
ストレージSSD 1TB(Crucial CT1000MX500SSD1)
グラボMSI RADEON RX560 ITX 4G OC
OSMacOS Big Sur(11.0.1)

RX560ですが、オクでジャンクで出てたのを動確用でゲットしました。
前に持ってたの売らなきゃよかった・・・

今回はCloverではなく、最近流行りのOpenCoreでやりました。
最初はOC Gen-Xで環境準備をしたのですが、OSインストーラーは起動はするもののなぜか1分程度経過するとリセットがかかるという意味不明な事象に悩まされ、結局はOpenCoreのドキュメント通りに基本従って作業したところ、うまくいきました。

なお、構築準備の作業はMacBook Proで行っています。

必要なツールの準備

  • OSインストーラーダウンロード
    App Store上からbig surで検索し「macOS Big Sur」を「入手」します。
    ダウンロードが完了するとインストーラー画面が表示されますが、Command + qで終了させます。
    これでローカルストレージ上にはインストーラーが保存されている形になります。
  • Clover Configuratorダウンロード/インストール
    今回Cloverではないですが、EFIのマウント操作用でインストールします。
    他のEFIマウンタを使う場合は不要です。
  • ProperTreeダウンロード
    config.plistを操作するためのエディタです。これがないと完全手打ち作成になるので必須です。
    ワタシは今回用のディレクトリを作ってそこにcloneしました。
mkdir ~/5950hackin
cd ~/5950hackin
git clone https://github.com/corpnewt/ProperTree
  • GenSMBIOSダウンロード
    ハードウェアシリアルナンバー生成コマンドをダウンロードしておきます。
cd ~/5950hackin
git clone https://github.com/corpnewt/GenSMBIOS
  • OpenCoreダウンロード
    現時点で表向き公開されているのは0.6.3ですが、Ryzen5000シリーズ対応版?の0.6.4がamd-osx.comで公開されていたのでユーザー登録してダウンロードしてきました。
    https://forum.amd-osx.com/index.php?threads/ryzen-5000-series-opencore-update.1164/
    OpenCore-0.6.4-RELEASE.zipをダウンロードし、解凍した中のX64/EFIフォルダをデスクトップにコピーします。
    同じくDocs/Sample.plistをデスクトップのEFI/OC配下にconfig.plistにリネームしてコピーします。

USBメモリにOSインストーラーをインストール

まず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”」と出たら完了です。

config.plist編集(ACPI)

ここからHackintoshとしてのメイン作業となるconfig.plistのカスタマイズになります。

cd ~/5950hackin/propertree
./propertree.command

でpropertreeを起動し、デスクトップのEFI/OC/config.plistを開きます。

ドキュメントにあるGetting started with ACPIChoosing the SSDTsへ進み、AMD(17h)にあるSSDT-EC-USBXPrebuiltSSDT-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を自動更新してくれます(保存は必要です)。

config.plist編集(Booter)

次はBooter/Quirksセクションの設定値の修正になります。
基本はドキュメントに従いました。

EnableWriteUnprotectorfalseに変更
RebuildAppleMemoryMaptrueに変更
SetupVirtualMapfalseに変更(trueだと起動直後に固まりました)
SyncRuntimePermissionstrueに変更

config.plist編集(DeviceProperties)

DevicePropertiesについてはデフォルトで内蔵GPUの記述が書かれており、ワタシの環境では不要なためDeviceProperties/Add配下のPciRoot関連の記述を削除しました。
(DeviceProperties/Add配下を空にする)

config.plist編集(Kernel)

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に置き換えます。

  • config.plist側のKernel/Patch自体を削除
  • patches.plist側のPatchをコピー
  • config.plist側のKernelに対しペースト

あとはKernel/Quirksの設定値を変更します。

PanicNoKextDumptrueに変更
PowerTimeoutKernelPanictrueに変更
XhciPortLimittrueに変更

config.plist編集(Misc)

Misc配下も一部設定値の変更を行います。

Debug/AppleDebugtrueに変更
Debug/ApplePanictrueに変更
Debug/DisableWatchDogtrueに変更
Debug/Target67に変更
Security/AllowNvramResettrueに変更
Security/AllowSetDefaulttrueに変更
Security/ScanPolicy0に変更
Security/SecureBootModelDefaultに変更
Security/VaultOptionalに変更

config.plist編集(NVRAM)

NVRAM/Add/7C436110-AB2A-4BBB-A880-FE41995C9F82セクション配下の設定を修正します。

boot-args-v keepsyms=1 debug=0x100 npci=0x2000 alcid=1に変更
csr-active-config00000000に変更
run-efi-updaterfalseに変更
prev-lang:kbdTypeをStringに変更した上でen-US:0に変更

NVRAM/Deleteセクション配下の設定も以下について修正します。

WriteFlashtrueに変更

config.plist編集(PlatformInfo)

PlatformInfoについてはGenSMBIOSをまず使用し、登録のための製品情報を生成します。

cd ~/5950hackin/GenSMBIOS
./GenSMBIOS.command
  • メニューが表示されたら「3. Generate SMBIOS」を選択
  • 「Please type the SMBIOS to gen and the number of times to generate [max 20] (i.e. iMac18,3 5):」となったら「MacPro7,1」を入力
  • Type, Serial, Board Serial, SmUUIDが表示されたら内容を控える

控えた内容をもとにPlatformInfo/Genericセクション配下の設定を修正します。

MLBBoard Serialの内容に変更
SystemProductName「MacPro7,1」に変更
SystemSerialNumberSerialの内容に変更
SystemUUIDSmUUIDの内容に変更

config.plist編集(UEFI)

  • デスクトップのEFI/OC/Drivers配下のファイルをOpenRuntime.efi以外削除します
  • ドキュメントにあるHfsPlus.efiよりDownloadしたHfsPlus.efiをデスクトップのEFI/OC/Drivers配下にコピーします
  • ProperTreeよりOC Clean Snapshotを実行します
    →これでUEFI/Driversセクション配下がHfsPlus.efiとOpenRuntime.efiの記述のみとなります

config.plist編集(KEXT)

まず、必須の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を保存します。

USBメモリにEFIを書き込み

Clover Configuratorを開き、TOOLS→Mount EFI→EFI PartitionsよりUSBメモリをMount Partitionします。

マウントできたらOpen Partitonを開きます。

開かれたフォルダにデスクトップのEFIフォルダをフォルダごとコピーします。

あとはUSBメモリをUnmount Partitionし、FinderからもUSBメモリのマウントを解除したらUSBメモリを抜き、インストール対象のマシンへ刺します

マシン起動&BIOS設定

マシンを起動し、Delete連打でBIOS設定画面に入ります。

以下設定項目を変更します。

Adobe 4G DecodingDisabledに
Port 60/64 EmulationDisabledに
CSM SupportDisabledに
Secure BootDisabledに(これはしなくてもいけました)

あとはSave Exit & Setupで保存します。

インストーラー起動

再起動を始めたらF12連打でブートデバイス選択に移り、UEFI USBを選択すればインストーラーが起動を始めます!

手順としては多いですが、意外と簡単にできてしまってビックリでした。

なお、うまくいかない場合はSanity Checkerを使うとconfig.plistの整合性は確認取れます。

ここからは個人的に別DiskにArch Linuxを入れてKVMからインストール済のSSDをHostPassthroughで起動できるか試してみようと思います〜

関連記事

コメントとトラックバック

  • T 2020/12/09 15:50:13 返信

    こんにちは。
    当方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パススルーが行われていました。
    参考までに

    • hrn(管理人) 2020/12/13 01:17:05 返信

      KVMでもCPUパススルーで稼働しました!
      別のパラメータ(+invtsc)の書き漏れでした…

    • hrn(管理人) 2020/12/12 22:02:29 返信

      Tさん、コメントありがとうございます!
      一旦KVMでの確認は進めているのですが、結果としては稼働できていない状況です。
      (LOG:EXITBS:STARTのところで固まる)
      ご提示頂いた手順では私の環境ではダメでした…
      AuthenticAMDの指定は目から鱗だったのでこれだ!と思ったのですが、状況変わらず…
      引き続き色々試してみます。

  • hrn(管理人) へ返信する コメントをキャンセル

    CAPTCHA


    トラックバックURLhttps://e-tune-mt.net/ylab/5025/trackback