Corpnewtさんのhackintoshデスクトップのためのバニラガイドから、今回は「Kaby Lakeマシンのためのconfig.plistの作り方」のページをご紹介します。
ちなみにこのガイドでは、
のconfig.plistの作り方が解説してあります。他のCPUを使う場合はそれを見てください。また、Config.plistの基礎編もご覧ください。
世代の近いCPUではそれぞれかなりの部分が共通です。Kaby Lakeは実際のMacのモバイルモデルで採用されているので、互換性が高く特殊な設定はありません。
(ここから抄訳)
(訳注:元記事ではClover Configuratorのスクリーンショットも多数掲載されていますが、config.plistだけを紹介します。Configuratorの操作は元記事を見てください。)
Table of Contents
ACPI
CloverのACPIデフォルト設定は、多すぎで、やりすぎなところがあります。そのために問題を引き起こす可能性があります。そこで、できるだけ単純に書き直します。
<key>ACPI</key> <dict> <key>DSDT</key> <dict> <key>Fixes</key> <dict> <key>FixHPET</key> <true/> <key>FixIPIC</key> <true/> <key>FixRTC</key> <true/> <key>FixShutdown</key> <true/> <key>FixTMR</key> <true/> </dict> <key>Patches</key> <array> <dict> <key>Comment</key> <string>change XHCI to XHC</string> <key>Disabled</key> <false/> <key>Find</key> <data> WEhDSQ== </data> <key>Replace</key> <data> WEhDXw== </data> </dict> <dict> <key>Comment</key> <string>change XHC1 to XHC</string> <key>Disabled</key> <false/> <key>Find</key> <data> WEhDMQ== </data> <key>Replace</key> <data> WEhDXw== </data> </dict> <dict> <key>Comment</key> <string>change SAT0 to SATA</string> <key>Disabled</key> <false/> <key>Find</key> <data> U0FUMA== </data> <key>Replace</key> <data> U0FUQQ== </data> </dict> </array> </dict> <key>DropTables</key> <array> <dict> <key>Signature</key> <string>DMAR</string> </dict> <dict> <key>Signature</key> <string>MATS</string> </dict> </array> <key>FixHeaders</key> <true/> <key>SSDT</key> <dict> <key>Generate</key> <dict> <key>PluginType</key> <true/> </dict> </dict> </dict>
Fixes:
Fixesでは以下を指定しました。
- FixShutdown – いくつかのマザーボードでシャットダウンしようとしても再起動してしまう問題を解決します。これをtrueにすると、今度は逆にシャットダウンの問題を引き起こすこともあります。その場合はdsableにします。
- このほか、IRQの衝突を解消するなどの指定がしてあります。これらは全てのハードウェアに必要ではないかもしれませんが、適用しても大きな害はありません。
Patches:
Patchesセクションでは、DSDTのパーツをCloverにより動的に改名します。本物のMacを使っているわけではないうえ、macOSは特定のDSDTパーツ名を前提にしていません。そこでmacOSが稼働するように、名前を非破壊的に変更します。ここでは以下の改名をしています。
- XHCI を XHCに変更 – これによりbuilt-in USB injectorsとの衝突を避けます
- XHC1 を XHCに変更 – これによりbuilt-in USB injectorsとの衝突を避けます
- SAT0 を SATAに変更 – 潜在的なSATA 互換性を改善します
Drop Tables:
PatchesセクションではDSDTに軽い変更を施します。SSDTはDSDTの一部分を置き換えるものです。Drop Tablesは、特定のSSDTテーブルを起動時に無視するよう指定します。先に述べたように、MacとATXマザーボードは異なるので、macOSが問題を起こすのです。ここでは以下の2個を追加しています。
- DMAR – これはVt-dに関する問題を防止します。Vt-dは仮想マシンのためのPCIパススルーで、Hackintoshではほぼ全く機能しません。
- MATS – High Sierra以降で、このテーブルが読み込まれると印刷不可能なキャラクタによりカーネルパニックする可能性があります。
FixHeadersとSSDT:
ここでは以下の指定をします。
- FixHeaders – MATSテーブルをドロップことに加えて念の為に設定します。 これをtrueにするとCloverは印刷不可能なキャラクタによるカーネルパニックを防止します。
- PluginType – X86PlatformPlugin をロードするためにいくつかのDSDTデータをインジェクトします。これにより、ネイティブなCPU電力制御を実現する手助けになります。この設定はHawell以降のCPUでのみ機能します。
Boot
ここではあまり重要な項目はありません。
<key>Boot</key> <dict> <key>Arguments</key> <string>keepsyms=1 dart=0 debug=0x100 shikigva=40 -v</string> <key>DefaultVolume</key> <string>LastBootedVolume</string> <key>Timeout</key> <integer>5</integer> </dict>
Arguments:
いくつかの起動オプションを追加しました。
- -v – verboseモードになり、Apple logoとプログレスバーの裏側に表示されるメッセージが見えるようになります。Hackintoshする人に貴重な情報です。
- dart=0 -Vt-d問題に対するもう一つの対策です。なくても良いです。
- debug=0x100 – カーネルパニック時の再起動を防止します。運が良ければカーネルパニックに至った原因を発見できるかもしれません。
- keepsyms=1 – これはdebug=0x100と一緒に設定し、macOSがカーネルパニック画面にシンボルも表示するよう設定します。これでカーネルパニックの原因追求の手助けになるかもしれません。
- shikigva=40 – これはiGPU専用の設定です。Shiki関係の設定を行います。これにより以下のことが可能になります。
- 8 – AddExecutableWhitelist – whitelistがパッチされる
- 32 – ReplaceBoardID – AppleGVAで使うboard-idが別の値に置き換えられる
DefaultBootVolume と Timeout:
- DefaultBootVolume – NVRAMが次に起動するドライブを覚えておくために使用します。
- Timeout – DefaultBootVolumeで起動するまでの待ち時間の秒数です。負の値にするとタイムアウトしません。0にするとGUI画面をスキップします。
Boot Graphics
特に設定することはありません。
Cpu
ここも特に設定することはありません。
Devices
WhateverGreenのための設定と音声の基本的な設定をします。
<key>Devices</key> <dict> <key>Audio</key> <dict> <key>Inject</key> <integer>1</integer> <key>ResetHDA</key> <true/> </dict> <key>Properties</key> <dict> <key>PciRoot(0x0)/Pci(0x2,0x0)</key> <dict> <key>AAPL,ig-platform-id</key> <data> AAASWQ== </data> <key>framebuffer-patch-enable</key> <data> AQAAAA== </data> <key>framebuffer-stolenmem</key> <data> AAAwAQ== </data> </dict> </dict> <key>USB</key> <dict> <key>FixOwnership</key> <true/> </dict> </dict>
Fake ID(上のconfig.plistからは削除済み):
このセクションは空白で良いです。昔は、HD4400のようなほぼサポートされているiGPUをサポートされたiGPUに見せかけるためにこの機能を使っていました。でも、今は、そのような目的には、よりクリーンなPropertiesセクションを使います。
Audio:
ここではaudioにinject Layout 1を指定します。これは皆さんが使っているマザーボードのコーデックで動く値ではないかもしれません。その場合は、AppleALCのSupported Codec Pageで番号を調べてください。
ここではさらにResetHDAを有効にしています。これはmacOSを再起動した後に、コーデックをニュートラルに戻してくれます。別のOSを起動してmacOSに戻ってきたときに発生する問題を解決します。
USB:
このセクションでは、FixOwnershipを指定します。 これで、-vオプションで表示されるEnabling Legacy Matchingメッセージの真ん中あたりで止まってしまう問題を解決します。この問題は、HCI Hand OffをBIOSでセットしても解決します。
Properties:
このセクションの設定にはHeadkazeさんの Intel Framebuffer Patching Guideを参考にしました。そして、 ig-platform-idというプロパティを一つだけ記述しました。ここでは16進数の値の順番を入れ替えています。つまりig-plat が 0xAABBCCDDの場合、この記述でこれを0xDDCCBBAAにします。
ここで使う二つのig-platform-idは以下です。
- 0x59120000 – これはiGPUがディスプレイを使用する場合に使われます。
- 16進数を入れ替えると00001259になります。
- 入れ替えたバージョンをBase 64で表すとAAASWQ== になります。
- 0x59120003 – これはiGPUが計算タスクにだけ使用される場合(表示には使われない場合)に使われます。
- 16進数を入れ替えると03001259 になります。
- 入れ替えたバージョンをBase 64で表すとAwASWQ== になります。
このほか、2つのプロパティを追加しました。framebuffer-patch-enable と framebuffer-stolenmemです。前者はWhateverGreen.kext経由でのパッチ当てを有効にし、後者は最小流用メモリを19MBにします。
Disable Drivers
ここでは特に設定することはありません。
Gui
<key>GUI</key> <dict> <key>Scan</key> <dict> <key>Entries</key> <true/> <key>Tool</key> <true/> </dict> </dict>
Scan:
Scan settingsを変更します。この設定でブート出来ないエントリーを除外します。
Hide Volumes:
起動時に表示したくないボリュームを書いておきます。今回は何も指定しませんでした。以下が現れて困るようでしたらついかしておきます。
- Preboot
- VM
名前以外にUUIDもつかえます。これを知るには、以下のようにします。diskXsYのXとYは実際のボリューム番号にします。
diskutil info diskXsY | grep -i "Partition UUID" | rev | cut -d' ' -f 1 | rev
Theme:
新しいテーマをテストしたかったら (lover-next-blackがおすすめ)、 /Volumes/EFI/EFI/CLOVER/themes ディレクトリに置いて、Themeフィールドに名前を書いておけば良いです。
Graphics
昔は、iGPUをここで設定していましたが、DeviceセクションのPropertiesですでに設定しましたので、ここでは何もする必要はありません。Cloverが、インテルのiGPUを検出すると、config.plistにGraphicsセクションが無くても、自動的にIntel Injectionを有効にします。もしインテルiGPUを無効にしたい場合は、下のように明示的に書くことで無効にできます。
<key>Graphics</key> <dict> <key>Inject</key> <false/> </dict>
Kernel And Kext Patches
<key>KernelAndKextPatches</key> <dict> <key>KernelPm</key> <true/> <key>KextsToPatch</key> <array> <dict> <key>Comment</key> <string>Port limit increase</string> <key>Disabled</key> <false/> <key>Find</key> <data> g710////EA== </data> <key>InfoPlistPatch</key> <false/> <key>MatchOS</key> <string>10.12.x</string> <key>Name</key> <string>com.apple.driver.usb.AppleUSBXHCI</string> <key>Replace</key> <data> g710////Gw== </data> </dict> <dict> <key>Comment</key> <string>Port limit increase (RehabMan)</string> <key>Disabled</key> <false/> <key>Find</key> <data> g32IDw+DpwQAAA== </data> <key>InfoPlistPatch</key> <false/> <key>MatchOS</key> <string>10.13.x</string> <key>Name</key> <string>com.apple.driver.usb.AppleUSBXHCI</string> <key>Replace</key> <data> g32ID5CQkJCQkA== </data> </dict> <dict> <key>Comment</key> <string>Port limit increase (PMHeart)</string> <key>Disabled</key> <true/> <key>Find</key> <data> g/sPD4MDBQAA </data> <key>InfoPlistPatch</key> <false/> <key>MatchOS</key> <string>10.14.0</string> <key>Name</key> <string>com.apple.driver.usb.AppleUSBXHCI</string> <key>Replace</key> <data> g/sPkJCQkJCQ </data> </dict> <dict> <key>Comment</key> <string>Port limit increase (Ricky)</string> <key>Disabled</key> <false/> <key>Find</key> <data> g/sPD4OPBAAA </data> <key>InfoPlistPatch</key> <false/> <key>MatchOS</key> <string>10.14.x</string> <key>Name</key> <string>com.apple.driver.usb.AppleUSBXHCI</string> <key>Replace</key> <data> g/sPkJCQkJCQ </data> </dict> <dict> <key>Comment</key> <string>External Icons Patch</string> <key>Disabled</key> <false/> <key>Find</key> <data> RXh0ZXJuYWw= </data> <key>InfoPlistPatch</key> <false/> <key>Name</key> <string>AppleAHCIPort</string> <key>Replace</key> <data> SW50ZXJuYWw= </data> </dict> </array> </dict>
このセクションでは、いくつかの設定とkextパッチを行なっています。Clover Configuratorを使う場合は、以下の項目にチェックを入れます。
- Apple RTC – これにより再起動でBIOSがリセットされてしまう現象を防止します。
- KernelPM – これにより、this setting prevents writing to MSR 0xe2に書き込みをしてしまうことを防ぎ、ブート時のカーネルパニックを防止します。
KextsToPatch:
ここでは4個の異なるkextパッチを設定しています。そのうち3個はUSBポート数制限に関するものです。1個はオレンジアイコン問題への対処です。これは内部ドライブがホットプラグ可能と判断されてオレンジ色のアイコンの外部ドライブとして現れてしまう問題です。
USBポート数制限のパッチにはMatchOS値が設定されています。実際に使用するOSバージョンのものだけを残しておいて、それ以外は削除して良いです。
RtVariables と SMBIOS
<key>RtVariables</key> <dict> <key>BooterConfig</key> <string>0x28</string> <key>CsrActiveConfig</key> <string>0x3E7</string> <key>MLB</key> <string>C02726902CDH69F1M</string> <key>ROM</key> <string>UseMacAddr0</string> </dict> <key>SMBIOS</key> <dict> <key>BoardSerialNumber</key> <string>C02726902CDH69F1M</string> <key>ProductName</key> <string>iMac18,1</string> <key>SerialNumber</key> <string>C02TX0VDH7JY</string> <key>SmUUID</key> <string>91492A73-595C-4D97-A6FC-2B5D3ED1B54D</string> </dict>
SMBIOS情報の設定に関して私は、acidantheraの macserial アプリケーションを使っています。私は、同様なpythonスクリプトを書きました。これはconfig.plistに自動保存します。多くの項目は空白であってもCloverが自動的に埋めてくれます。これは、書き込むべき値にアップデートが必要になった時に自動的に書き換えてくれるということを意味します。
このCoffee Lakeの例では、互換性のためにiMac18,1 のSMBIOSを使いました。Kaby Lakeと互換性の高いSMBIOSは以下の2種類です。
- iMac18,1 – これはiGPUを表示に使用するコンピュータで使われます。
- iMac18,3 – これはdGPUを表示に使用し、iGPUは計算のみに使用するコンピュータで使われます
macserialアプリケーションででSMBIOS情報を取得するために、これを-aオプションで起動します。これによりシリアル番号とボードシリアル番号を生成します。またgrepコマンドで検索するSMBIOSタイプを制約できます。 iMac18,1の例では、次のようにmacserialアプリケーションを起動します。
macserial -a | grep -i iMac18,1
これにより以下の結果を得られます。
iMac18,1 | C02T8SZNH7JY | C02707101J9H69F1F iMac18,1 | C02VXBYDH7JY | C02753100GUH69FCB iMac18,1 | C02T7RY6H7JY | C02706310GUH69FA8 iMac18,1 | C02VD07ZH7JY | C02737301J9H69FCB iMac18,1 | C02TQPYPH7JY | C02720802CDH69FAD iMac18,1 | C02VXYYVH7JY | C02753207CDH69FJC iMac18,1 | C02VDBZ0H7JY | C02737700QXH69FA8 iMac18,1 | C02VP0H6H7JY | C02746300CDH69FJA iMac18,1 | C02VL0W9H7JY | C02743303CDH69F8C iMac18,1 | C02V2NYMH7JY | C02728600J9H69FAD
順番は、以下です。
Product | Serial | Board Serial (MLB)
- iMac18,1の部分はSMBIOS -> Product Nameにコピーします。
- Serialの部分はSMBIOS -> Serial Numberにコピーします。
- Boardの部分はSMBIOS -> Board Serial Number と Rt Variables -> MLBにコピーします。
SmUUIDの値はターミナルのuuidgenコマンドで得られます。もしくは私のPlist-Toolスクリプトで自動生成できます。この結果を、SMBIOS -> SmUUIDにコピーします。
Rt Variables -> ROM を UseMacAddr0 に設定しました。これを設定するとオンボードのMACアドレスを流用してくれます。
BooterConfigは0x28に、CsrActiveConfigは0x3e7に設定しました。これで効果的にSIPを無効にしてくれます。このほか、よく使われる値は以下です。
- 0x0 – SIPを完全に有効にする
- 0x3 – 署名のないkextsの使用と保護されたディレクトリへの書き込みを許可する
- 0x3e7 – SIPを完全に無効にする
System Parameters
<key>SystemParameters</key> <dict> <key>InjectKexts</key> <string>Yes</string> <key>InjectSystemID</key> <true/> </dict>
Inject Kexts:
この設定には3種類が可能です。ここではYesを使用しました。
- Yes – CloverがEFIのkextを使用するよう指定する。
- No – CloverがEFIのkextを使用しないよう指定する。
- Detect – FakeSMC.kextがkextキャッシュに存在していない時だけkextを使用するよう、Cloverに指定する。
InjectSystemID:
この設定は、ブート時に、SmUUIDをsystem-idに設定するようCloveに指示します。これはiMessageなどに重要です。
まとめ
以上のconfig.plistを全部まとめたものをこちらで公開しておきます。