サイトアイコン Boot macOS

corpnewtさんのバニラガイド~Kaby Lake用config.plist

Corpnewtさんのhackintoshデスクトップのためのバニラガイドから、今回は「Kaby Lakeマシンのためのconfig.plistの作り方」のページをご紹介します。

ちなみにこのガイドでは、

のconfig.plistの作り方が解説してあります。他のCPUを使う場合はそれを見てください。また、Config.plistの基礎編もご覧ください。
世代の近いCPUではそれぞれかなりの部分が共通です。Kaby Lakeは実際のMacのモバイルモデルで採用されているので、互換性が高く特殊な設定はありません。

(ここから抄訳)


(訳注:元記事ではClover Configuratorのスクリーンショットも多数掲載されていますが、config.plistだけを紹介します。Configuratorの操作は元記事を見てください。)

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では以下を指定しました。

Patches:

Patchesセクションでは、DSDTのパーツをCloverにより動的に改名します。本物のMacを使っているわけではないうえ、macOSは特定のDSDTパーツ名を前提にしていません。そこでmacOSが稼働するように、名前を非破壊的に変更します。ここでは以下の改名をしています。

Drop Tables:

PatchesセクションではDSDTに軽い変更を施します。SSDTはDSDTの一部分を置き換えるものです。Drop Tablesは、特定のSSDTテーブルを起動時に無視するよう指定します。先に述べたように、MacとATXマザーボードは異なるので、macOSが問題を起こすのです。ここでは以下の2個を追加しています。

FixHeadersとSSDT:

ここでは以下の指定をします。

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:

いくつかの起動オプションを追加しました。

DefaultBootVolume と Timeout:

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は以下です。

このほか、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:

起動時に表示したくないボリュームを書いておきます。今回は何も指定しませんでした。以下が現れて困るようでしたらついかしておきます。

名前以外に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を使う場合は、以下の項目にチェックを入れます。

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種類です。

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)

SmUUIDの値はターミナルのuuidgenコマンドで得られます。もしくは私のPlist-Toolスクリプトで自動生成できます。この結果を、SMBIOS -> SmUUIDにコピーします。

Rt Variables -> ROM を UseMacAddr0 に設定しました。これを設定するとオンボードのMACアドレスを流用してくれます。

BooterConfigは0x28に、CsrActiveConfigは0x3e7に設定しました。これで効果的にSIPを無効にしてくれます。このほか、よく使われる値は以下です。

System Parameters

    <key>SystemParameters</key>
    <dict>
        <key>InjectKexts</key>
        <string>Yes</string>
        <key>InjectSystemID</key>
        <true/>
    </dict>

Inject Kexts:

この設定には3種類が可能です。ここではYesを使用しました。

InjectSystemID:

この設定は、ブート時に、SmUUIDをsystem-idに設定するようCloveに指示します。これはiMessageなどに重要です。

まとめ

以上のconfig.plistを全部まとめたものをこちらで公開しておきます。

モバイルバージョンを終了