「あのかぼ」のスピンオフサイト「ゼロかぼ」ができました。 詳しくはこちら>

【あのかぼ版】OpenCore Legacy Patcher のパッチの内容 ~まずは基礎!OpenCoreの設定編~

Mac

【あのかぼ版】OpenCore Legacy Patcher のパッチの内容 ~まずは基礎!OpenCoreの設定編~

これまで「あのかぼ」ではOpenCore Legacy Patcher (OCLP)を使用したインストールガイドや、OCLPを使用したMacのブートシーケンスについて解説するページを公開していきました。

この「OpenCore Legacy Patcher のパッチの内容」シリーズでは、Dortaniaの「Explaining the patches in OpenCore Legacy Patcher(英語)」で紹介されているパッチの解説を「OpenCoreの設定」と「注入される Kext」、「ルートパッチ」の3つに分けて時より注釈を入れながら分かりやすく解説しています。

※ 弊サイトの他のシリーズと比べると少々…マニアックな記事です。

原文を忠実(?)に翻訳したものはOpenCore Legacy Patcherの専門サイト「OCLP.net」に掲載しました。
OpenCore Legacy Patcher のパッチの内容 (OCLP.net)

この記事ではOpenCore Legacy Patcherで中心的な役割を果たす「OpenCore」によるパッチがサポートされなくなってしまったMacにどのような効果をもたらすのかについて解説します。

目次

OpenCoreの設定

OpenCoreはサポートされなくなってしまったMacにmacOSのネイティブなサポートを追加するOpenCore Legacy Patcherにおける主なロジックになっています。

なお、ここで紹介する「OpenCoreの設定」はOpenCoreを開発するAcidantheraのOpenCorePkg内DortaniaのOpenCoreドキュメントにも言及があります。

用語の解説などは先日公開しました「【あのかぼ版】OpenCore Legacy Patcher で使われる用語集」をご覧ください。

ACPI -> Add

  • SSDT-CPBG
    • 理由: Big Sur の初期ビルドにおける Arrandale Macでのカーネルパニックを解決するため
    • ロジック: ACPIでダミーのCPBGデバイスを無効化
    • モデル: MacBookPro6,x および iMac11,x
  • SSDT-PCI
    • 理由: SandyおよびIvy BridgeのWindowsオーディオサポートを修正するため
    • ロジック: PCI0 の 32 ビット割り当て制限を削除
    • モデル: すべての Sandy および Ivy Bridge Mac (MacPro6,1 を除く)
  • SSDT-DGPU
    • 理由: 2011年のMacBook ProでソフトウェアベースのdeMUXを利用しdGPUを無効化
    • ロジック: ACPI経由で電源オフ要求をdGPUに送信
    • モデル: デッド dGPU を搭載した MacBookPro8,2 および MacBookPro8,3

ACPI -> Patch

  • EHCxXHC1パッチ
    • 理由: 正常なUSB動作に必要なため
    • ロジック: 新しいモデルの USB マップによる USB ポート機能の接続と破壊を回避
    • モデル: ModerateまたはAdvanced SMBIOSでスプーフィングする場合は、すべてのモデルが必要
  • BUF0からBUF1パッチ
    • 理由: SSDT-PCI とペアリングするため
  • _INIからXINIパッチ
    • 理由: SSDT-DGPU とペアリングするため

Booter -> Patch

  • HW_BIDからOC_BIDへのリルート
    • 理由: サポートされていないモデルで macOS インストーラーを使用できるようにするため
    • ロジック: Board IDのmacOS チェックをカスタム変数にリルート
    • モデル: VMM スプーフィングを使用するすべてのシステム

Booter -> Quirks (癖)

  • ForceBooterSignature
    • 理由: 休止状態(ハイバネーション)のサポートをを確実にするため
    • ロジック: boot.efi を騙して OpenCoreをApple のファームウェアと認識させる
    • モデル: すべてのモデルで必要

DeviceProperties -> Add

  • PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)
  • PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)
    • 理由: アップグレードされたiMacの明るさ制御を確実にするため
    • ロジック: AppleBackLight プロパティを設定
    • モデル: NVIDIA Metal GPUにアップグレードされたiMac11,xおよびiMac12,x
  • PciRoot(0x0)/Pci(0x2,0x0)
    • 理由: アップグレードされた iMac のスリープ問題を解決するために内部 GPU を無効化
    • ロジック: macOSにiGPUを汎用PCIデバイスとして認識させる
    • モデル: Metal GPUにアップグレードされたiMac12,x

Kernel -> Patch

  • SMCパッチ
    • 理由: SMC ファームウェアのアップデートを回避するために必要
    • ロジック: AppleSMC.kext 内のsmc-versionをパッチし、完全な機能を使用するには SMC-Spoof.kext が必要
    • モデル: SMBIOS をスプーフィングする場合はすべてのモデルが必要
  • IOHIDFamilyパッチ
    • 理由: 古いハードウェア上のmacOSでのHID周辺機器サポートのために必要
    • ロジック: IOHIDFamilyに常にリカバリを起動していると認識させる
    • モデル: Penryn CPU (Core2 シリーズ)
  • Force FileVault on Broken Sealパッチ (壊れたシールに FileVault を強制)
    • 理由: ルートパッチが適用されたMacでFileVaultを使用可能にするため
    • ロジック: APFS.kextにFileVaultサポートを常にtrue (真)と返すよう強制する
    • モデル: ルート パッチが必要なすべてのモデル
  • Library Validation Enforcementパッチ(ライブラリ検証適用パッチ)の無効化
    • 理由: 非Metal ルート ボリューム パッチがライブラリ検証テストに合格しないため
    • ロジック: ライブラリ検証関数を常に不要と返すように強制する
    • モデル: 非Metal GPU
  • SurPlusパッチ
    • 理由: macOS 11.3 ~ 12.0.1 は安定した起動のためにCPUのRDRANDサポートを必要とするため
    • ロジック: RDRANDコードを事前定義された値を返すように強制する
    • モデル: Ivy Bridge 以前のすべての Mac
  • kern.hv_vmm_presentパッチのリルート
    • 理由: サポートされていないハードウェアでmacOSのインストールと更新を可能にするため
    • ロジック: ユーザースペースにシステムが仮想マシンであると認識させる
    • モデル: VMM スプーフィングを使用するすべてのモデル

Kernel -> Quirks (癖)

  • ThirdPartyDrives
    • 理由: サードパーティ製ドライブでの休止状態(ハイバネーション)解除の問題を回避するため
    • ロジック: AppleAHCIPort.kext をパッチしてサポートする
    • モデル: 標準 SATA ポートを備えたすべてのモデル
  • PanicNoKextDump
    • 理由: カーネルパニック時のkextダンプを回避し、カーネルのデバッグを容易にするため
    • ロジック: 不要な情報をダンプしないようにカーネルにパッチを適用
    • モデル: ユーザーがVerbose Bootを有効にした場合のみ設定

Misc -> Security

  • SecureBootModel
    • 理由: T2 モデルのスプーフィングでネイティブ OS アップデートを許可するため
    • ロジック: T2 のセキュア エンクレーブ識別子を設定します。
    • モデル: Minimal以上でT2モデルをスプーフィングするすべてのモデル

NVRAM -> Add

  • -v keepsyms=1 debug=0x100
    • 理由: macOSのカーネルおよびkextのデバッグ情報を表示し、パニック時の再起動を回避するため
    • ロジック: NVRAM に引数を追加
    • モデル: ユーザーがVerbose Bootを有効にした場合のみ設定
  • -liludbgall
    • 理由: Lilu とプラグインのデバッグ ログを有効にするため
    • ロジック: NVRAM に引数を追加
    • モデル: ユーザーがKext DEBUGを有効にした場合のみ設定
  • msgbuf=1048576
    • 理由: メッセージ バッファ サイズを 1MB に設定し、ブート ログが確実に保持されるようにするため
    • ロジック: NVRAM に引数を追加
    • モデル: ユーザーがKext DEBUGを有効にした場合のみ設定
  • agdpmod=pikera
    • 理由: MacBookPro9,x の GPU 切り替えを修正するため
    • ロジック: NVRAM に引数を追加
    • モデル: MacBookPro9,x
  • shikigva=80 unfairgva=1
  • shikigva=128 unfairgva=1 -wegtree
    • 理由: アップグレードされた AMD Metal GPU を搭載したモデルの DRM サポートを修正するため
    • ロジック: NVRAM に引数を追加
    • モデル: アップグレードされた AMD Metal GPU を搭載したモデル
  • -revasset
    • 理由: VMM スプーフィングを使用するときにコンテンツ キャッシュを有効にするため
    • ロジック: NVRAM に引数
    • モデル: VMM スプーフィングを使用するすべてのモデル
  • amfi=0x80
    • 理由: Apple Mobile File Integrity を無効にして、ルート パッチを許可にするため
    • ロジック: NVRAM に引数
    • モデル: 署名されていないルートパッチを必要とするすべてのモデル

UEFI -> ProtocolOverrides

  • GopPassThrough
    • 理由: UGA ファームウェアで GOP GPU を搭載したマシンで適切な出力を行うため
    • ロジック: UGAプロトコルインスタンスの上にGOPプロトコルインスタンスを提供
    • モデル: MacPro3,1、iMac7,1-8,1

補足: UGAとGOP

UGAはEFI 1.xのグラフィックスプロトコルで、古いMacモデルで使用されています。GOPはUEFI 2.x以降の新しいグラフィックスプロトコルで、より新しいMacやPCで使用されています。

GopPassThroughは、UGA(Universal Graphics Adapter)ファームウェアしかサポートしていない古いMacモデルでも、GOP(Graphics Output Protocol)を使用してグラフィック出力を行えるようにするための設定です。

結局「OpenCoreの設定」とは何なのか?

OpenCore Legacy Patcherでサポート対象外となったMacに最新のmacOS をインストールし、快適な操作を実現するためには主に3種類のパッチがあります。

この中の1つである「OpenCoreの設定」はどんな役割があるのでしょうか?

「OpenCoreの設定」は3つのうち1番初めにMacに影響を与えOSのサポートでは最も重要な役割を果たします。この「OpenCoreの設定」ではより起動に関する内容やハードウェアサポートの基礎に関する変更を加えるものでシステム全体のブートプロセスを制御し、基本的なハードウェア動作を調整する役割があります。

もっと知りたい方へ

「OpenCoreの設定」をはじめとする「注入されるKext」、「ルートパッチ」のそれぞれの違いは「OCLP.net」版のパッチの説明ページで説明しています。(5月下旬公開予定です!)
OpenCore Legacy Patcher のパッチの内容 (OCLP.net)

また、弊サイト(あのかぼ)では「OCLPの用語集」や「OCLPのブートプロセス」について解説した記事もあります。ぜひチェックしてみてください!

まとめ

お疲れさまでした!

ここまでOpenCore Legacy Patcherがサポート対象外のMacに当てるパッチの説明のうち、「OpenCoreの設定」部分について解説していきました。

「OpenCoreの設定」では、config.plistファイルに記載された設定に基づき、ACPIテーブルの修正をはじめとするハードウェアの動作やブートプロセスを制御します。これにより、システムの起動に関する内容や初期のハードウェアサポートに焦点を当てた重要な変更がメモリ上で行われます。

続ては「注入されるKext」編
「注入されるKext」編ではESPに格納されたKextを使って特定のハードウェアや機能に対するサポートを追加や修正についての詳細を紹介しています。

最後までお読みいただきありがとうございました!
またお会いしましょう!

弊ブログ(あのかぼ)と姉妹メディア(おんかぼ)では引き続き、OpenCore Legacy Patcherの最新情報やmacOS Sonoma関連のニュースを紹介していきます。記事の更新については、かぼしーのTwitterアカウントで紹介しますので、ぜひフォローいただけると幸いです。

また、現在OpenCore Legacy Patcher専門サイト「OCLP.net」でも執筆中です。ぜひ合わせてご覧ください。

Anokabo v0.0.3 (7/11/2023, 6:08:50 PMをベースにしています。)

改定履歴

v0.0.3 2024.05.24 「ルートパッチ編」と「OCLP.net版」へのリンクを追加
v0.0.2 2024.05.18 「注入される Kext」へのリンクを追加
v0.0.1 2024.05.17 公開