OC Gen-XでESPを作る

OpenCoreの設定を行うツールOC Gen-Xを使ってみました。Z390 + 9800Kで構成したマシンのために、このツールでEFIフォルダを作成しました。多少の手直しは必要ですが、そのまま起動するEFIフォルダが出来上がりました。

OC Gen-X

フォーラムで便利だったという話をお聞きして、試してみることにしました。夢日記にも紹介されてます。OpenCoreの設定を楽にするツールは、いくつかあるらしいですが、Dortaniaさんのガイドに、configuratorは使うな、手作業で設定せよ、と書いてあったので、避けてました。OC Gen-Xは、そのDortaniaさんのガイドに準拠したconfig.plistを生成するとの説明があるので、良いのかもしれないと思い、試してみることにしました。以下からダウンロードできます。

現用マシンと同じ設定をする

今使っているASUS ROG MAXIMUS XI HERO + 9800Kの構成でインストールしたOpenCore 0.6.3 Big Surの組み合わせで使っている構成を目指して同じように設定を試みました。

OC Gen Xを起動して、タブを選んで項目を選択していきます。最初はプロセッサーです。Z390 + 9800KなのでCoffee Lakeを選びます。

次はKextです。使用中のKextを選びました。Lilu, VirtualSMC, SMCProcessor, SMCSuperIO, WhateverGreen, AppleALC, IntelMausiを選びます。Kext選択は、システムに依存しますし、知識も必要なので、初見で簡単に決められる作業ではないですね。さらに、自前で作ったUSBポートの設定kextは、当然ですがここでは選択できないです。

Firmware Driversは、OpenRuntimeとHfsPlusを選びます。今はVBoxHfsを使っているのですが、HfsPlusの方が高速なはずです。外に、ブートの見た目をよくするためにOpenCanopyを使ってますが、これは選択肢に出てこないです。

次はSMBIOSの設定です。System Model, Serial Number, MLB, UUIDに、今使っているそのままの値を入れました。System Model (機種ID) はiMac19,1です。

起動オプションも、現用と同じ

-v keepsyms=1

を書き込んでおきました。

これでGerate EFIボタンを押すと、デスクトップにEFIフォルダが出来上がります。

完成したEFIフォルダを確認

デスクトップに作られたEFIフォルダを確認します。config.plistが出来上がっていて、OpenCore関連のファイル類も入ってます。またKextsとDriversフォルダには設定したファイルが入っていました。下の図のように、OC Gen-X.appの中のContents/Resourcesの中に、OpenCoreとkext類の一式が入っています。これがそのままコピーされたのだと思います。OpenCore, kext, efiの最新版が出ていたらこちらを差し替えれば良いと思いました。

ただし、ACPIフォルダは空です。これも用意してくれれば良いのにと思いました。ここは手作業で入れておきます。Coffee Lakeに必要なACPI類は、

  • SSDT-PMC.aml
  • SSDT-PLUG.aml
  • SSDT-EC-USBX.aml
  • SSDT-AWAC.aml

です。ACPIフォルダにamlファイルを追加したので、config.plistにも反映しておかねばなりません。ProperTreeの機能を使いました。元々はACPIの記述は何もありません。

ProperTreeのShapShot機能を使うと、今追加した4個のamlファイルが追加されました。

起動するかどうかを試す

ここまで行ったステップは、

  1. OC Gen-Xを使ってEFIフォルダを作る
  2. ACPIファイル(aml)を追加する
  3. ProperTreeのsnap shot機能を使う

の3ステップです。使用すべきkextファイルがわかっているとか、シリアル番号などは決めてあるとか、使用すべきamlファイルが手元にあるとか、ProperTreeを用意しておくなど、下拵えは必要ですが、それが準備できていれば、3分くらいでEFIフォルダが完成すると思います。

では、このEFIフォルダで起動するでしょうか?

HFS+でフォーマットしたUSBメモリを用意して、これのEFIフォルダに書き込んで試しました。BIOSでUSBメモリを設定して起動したところ、なんと問題なく起動しました!

  • USBの15個対応のkextを入れてないのでUSBの一部が動かない
  • その関係でBluetoothが動かない
  • サウンドの設定をしていなかったので音はまだ出ない

などの問題はあるものの、これは設定を行えば済むことです。とりあえず起動を目指すには、便利なツールだと思いました。

config.plistを比較する

自動生成されたconfig.plistを、いろいろ調整して作っていた自家製config.plistと比較しました。以下の項目は、実質的に同じ内容でした。

  • ACPI
  • Booter
  • UEFI

以下の項目で自動生成版と自家製版config.plistが違いました。

DeviceProperties

自動生成されたconfig.plistのDevicePropertiesにはデバイスの記述がありません。自家製config.plistには、サウンドとiGPUの設定がしてあります。音が出なかった原因はこの設定がなかったことです。iGPUは設定なしでも起動できましたが、構成によっては(特にiGPUを使う場合)起動しない可能性があります。DevicePropertiesに記述がないと動かないデバイス(特定のLANチップなど)があるとその機能は動かないことになります。

Kernel

いろいろ工夫して加えていたkernelパッチ(光ディスクのスリープ対策とリムーバブルベイのホットプラグ対策)が自動作成版に無かったのは当然ですが、これらは起動には問題ない項目です。

Quirksは、いくつか違ってました。自動作成版はDortaniaガイドのデフォルトに従っています。自家製設定と比較すると、ガイドの一部を変更していた項目が違ってました。以下にそれを示します。でも、いずれも起動には問題なかったです。

  • AppleCpuPmCfgLock: BIOS設定で設定したのでここで対応する必要がなく、デフォルトを変更してfalseにしてます。
  • AppleXcpmCfgLock: BIOS設定で設定したのでここで対応する必要がなく、デフォルトを変更してfalseにしてます。
  • DisableIoMapper: デフォルトを変更してfalseにしてます。
  • DisableRtcChecksum: デフォルトを変更してtrueにしてます。
  • XhciPortLimit: USB 15個制限を無理やり回避する項目です。ちゃんと対策してfalseにすべき項目です。デフォルトではtrueですが、今回の実験ではそれでも一部のUSBポートが機能してませんでした。対応するkextを作ってデフォルトを変更してfalseにしてます。

Misc

Debugカテゴリーのうち、自家製版では、AppleDebug, ApplePanic, DisableWatchDogのデフォルトを変更してfalseにしてます。またDisplayLevelを2147483648にしてます。

Securityカテゴリーでは、ExposeSensitiveDataを7に、ScanPolicyを19858179にしてましたが、これは大した違いではないです。自動生成版では、SecureBootModelがdisabledになっていますが、0.6.3からはSecureBootModelはdefaultで良いようです。でもどちらでも起動はします。

NVRAM

自動生成では、prev-lang:kbdがデフォルトのロシア語になってます。自家製版では、これを英語(16進数で656E2D55533A30)にしてます。

PlatformInfo

自動生成版ではmemoryに関する記述が増えています。ただ、システムの値を自動的に使う設定にもなっているので、ここは無駄なところかと思いました。それ以外は、手作業で設定していたconfig.plistと同じでした。

まとめ

OpenCoreのEFIフォルダ内容を作成するツール、OC Gen-Xを使ってみました。ACPIのファイルを設定する機能が無いこと、config.plistの設定でできれば直したいと思う点も多少はあるものの、起動するEFIフォルダーを短時間で作ることができました。初めて挑戦する環境でhackintoshするときに、とても役立つと思いました。OpenCoreにたくさんあってややこしいQuirksの設定をとりあえず無難にこなしてくれるだけでも助かります。

11件のコメント

  1. お疲れさまです。
    いつも、わかりやすい解説ありとうございます。
    こっちでやったときは、V2.6.1だったんですね、その後efiの指定とか、グラフィックのカード指定とか増えたみたいですね。
     そのときに、Git-Hubのissuesで、Kextやefi、ACPI上のamlなどについて、継ぎ足すとあとでProperTreeを使うことになるから、オプション扱いで、インポート機能があるといいなぁって書いたはずですが・・・見ないでIssuesをClosedしたのかもしれませんね。
     いずれにしても、Intelについては、Quirksの指定だけでも、間違えなくしてくれればいいですね。同意です!
    (並んでるので間違えやすいし、間違ってからではなかなか原因を見つけ出すのが大変になるので)

  2. 私もHaswellなマシンのブートローダーをCloverからOpenCoreへ乗り換えるときOC Gen-Xでconfig.plistを新たに生成していました。これがなかったら移行は無理だったかも。QurirksとかClover組には意味不明でしたからね。自動変換のままですとSIMBIOSの情報が微妙に元と変わるのでAppleから別の機体認定されてしまうため要注意でした。そこは元を参照しながら手動で補完・修正しました。

  3. この記事のおかげでcloverからopencoreに移行する踏ん切りがつきました。
    作成したEFIフォルダにACPIやkextの足りないファイルを入れ、ProperTreeで追加。
    元のEFIフォルダと差し替えたらあっさりと起動しました。
    そのままBigSurもインストールしてみようとしたところ言語がロシア語になっていて
    かなり焦りましたが、無事完了できました。

    1. きっかけになって何よりです。デフォルトがロシア語なのは、ロシアのハッカーの皆さんが活躍してくれているので、それへのリスペクトなんでしょうね。

  4. すみません、質問です。m1からハッキントッシュを作りたいのですが、OpenCoreなどこういったツールはm1でも動作するのでしょうか?

    1. これはタイムリーな質問、ありがとうございます。OC Gen XやPlisetEDPlusをM1で動かしてみました。ちゃんと動きました。なので、可能なはずです。

  5. 以前もこちらでお世話になり、前バージョンをZ390環境で無事使えるようになったものです。
    この度Big surに移行しようと思い、何度も試しましたが全くうまくいかず、半ばあきらめて
    いたのですが、こちらの記事を参考にもう一度一からESPを作成しようと思い挑戦したところ
    難なくBig surに移行できました。
    不具合点としては、記事にも記載ありましたが、サウンドがなりません。
    記事上では設定すればよいとの事ですが、具体的にどのように設定すればよろしいでしょうか?
    いつも質問ばかりで恐縮ですが、ご教授くださいませ。

    1. 過去記事にきちんと記載がございました。
      私の確認不足です。
      ただいま、無事Big sur環境で正常動作しております。
      ※USBなど断念したものもございますが、今のところ利用したい
       ポートはすべて利用できているので満足です。

    2. 動いておめでとうございます。DevicePropertiesのところはマザーボード依存なので、手作業になりますね。

返信を残す

メールアドレスが公開されることはありません。