運用OpenCoreはCloverから分岐し、OZMOSISの流れを取り込んだ新しいオープンソースのブートローダーです。Z390マザーボードで動かしたところとりあえずはmacOSが起動しました。動くこと動かないことOpenCoreに行くべきか?OpenCoreとはOpenCoreは、完璧にオープンソースであることが特徴の新しいブートローダーです。Cloverから分岐し、OZMOSISの流れを取り込んでいます。OZMOSISを開発していたドイツのHackintosh-Forum.deの人たちが開発を進めているようです。OZMOSISってどんなものだったかと言うと、ファームウェア形式のブートローダーで、マザーボードのBIOSを置き換えて動作します。OZMOSISをマザーボードのBIOS更新機能を使ってインストールすれば、普通のマザーボードがmacOSを直接起動できるマザーボードに変身します。macOSもmacOSインストーラも実機と同様にそのまま起動できるという理想を追ったブートローダーだったのですが、調整やアップデートのたびにBIOS更新作業をするのは大変でした。ChameleonやCloverみたいにドライブの一部に書き込む方式の方が色々楽です。いうことでOZMOSISはあまり流行りませんでした。開発チームもそれを認識して、今度はClover方式のブートローダーを作ることにしたのだと思われます。使用したハードウェアOpenCoreを試したハードウェアは、以下で紹介したZ390マシンです。Refreshの作例です。スリープ、iMessage、FaceTimeが機能します。純正無線ユニットを使用しているのでContinuity関連も問題ありません。過去に公開した記事のまとめです。このマシンは常用していますので、ここで紹介している作例で一番自信のある構成...ここで使っているkextはAppleALC.kextIntelMausiEthernet.kextLilu.kextUSBInjectAll.kextVirtualSMC.kextWhateverGreen.kextです。5018で配布されているものです。(VirtualSMC.kextに同梱されているもの)VBoxHfs.efiEmuVariableUefi.efiまたUSBInjectAll.kextで使うためのSSDTファイルも使っています。こちらで作成したものです。これがSSDT-UIAC.amlという名前です。Updater.appを使う方法です。UpdaterもOpenCoreを作っている人たちが活躍しているHackintosh-Forum.deで作られていますので、その関係でOpenCoreダウンロード機能が実装されているのだと思います。Bootloaderのラジオボタンを選択して、右のポップアップメニューからOpenCoreを選択します。ダウンロードすると、Kext-Updatesフォルダの中にOpenCoreというフォルダができて、この中にデバッグ版とリリース版OpenCore-0.0.4-DEBUGOpenCore-0.0.4-RELEASEのフォルダが出来ています。今回はRELEASE版を使ってみましたが、DEBUG版の方がより多くのエラーメッセージを出してくれるらしいです。ESPディレクトリ構築Docsフォルダの中には、とても詳しい取扱説明書が入っています。Cloverにはあまりなくて、ネット上のマニュアルも古かったりします。説明書を一緒に配布してくれているのは助かります。読んでませんが、必要な情報は全部書いてあるのではないかと思います。マニュアルによると、構築すべきディレクトリ構造は以下の通りのようです。グレーの項目は任意の項目です。EFIの下に、BOOTとOCを作って、OCの中のDriversにefiファイルを、Kextsにkextファイルを入れれば良いようです。OCの中にconfig.plistを起きます。名前がOCになっただけで、CloverのESP配置とだいたい同じです。この図に従ってESPの中にディレクトリを用意し、DriversフォルダとKextsフォルダに上記のefiファイルとkextファイルを入れました。ACPIフォルダにSSDT-UIAC.amlを入れました。config.plist編集Docsフォルダの中に、マニュアルと一緒にconfig.plistのサンプルファイルも入っています。名前が、Sample.plistとなっています。今回はこのファイルをもとに動かしてみました。Sample.plistをconfig.plistに名称変更します。以下の手順で書き変えました。SMBIOS設定まずは機種設定からです。<key>PlatformInfo</key>の中の<key>Generic</key>の中が機種設定関連のようです。この部分のMLBがCloverでのBoardSerialNumberに対応し、SystemProductNameがProductNameに、SystemUUIDがSmUUIDに対応するようです。それぞれの値を書いておきます。<key>MLB</key><string>C02921130GULNV9JA</string><key>SystemProductName</key><string>iMac19,1</string><key>SystemSerialNumber</key><string>C02YR2YHJV3Q</string><key>SystemUUID</key><string>E45005B4-95C7-4B0C-9739-30947DDEB37C</string>FileVault設定この状態で起動させようとしたところ、FileVaultの用意ができていないというような内容のメッセージが出て起動が中断しました。config.plistを見ると、<key>Misc</key><key>Security</key>の中にFileVaultらしい設定があり、有効にされているようです。ここのtrueの部分2箇所をfalseに書き換えました。これでメッセージが出なくなりました。次に、HFSPlus.efiが見つからないというメッセージで起動が中断されました。最近はAPFSになって、HFS+での起動は使わないので、上記のリストのようにCloverデフォルトのVBoxHfs.efiを使っていました。なんでこのメッセージが出るのかと思ったらconfig.plistの<key>UEFI</key><key>Drivers</key>の中にefiファイルの一覧が書いてありました。フォルダに入れるだけでなくconfig.plistにも書いておくようです。FileVaultに関係したefiファイルも入っています。これらのリストを、実際に使っているefiファイルに書き換えました。<key>UEFI</key><dict><key>Drivers</key><array><string>VBoxHfs.efi</string><string>ApfsDriverLoader.efi</string><string>EmuVariableUefi.efi</string><string>FSInject.efi</string><string>AptioMemoryFix.efi</string><string>VirtualSmc.efi</string></array>kext設定ほかも見てみると、<key>Kernel</key><key>Add</key>の場所に、kextに関する記載もあります。この記述順にロードされるようなので順番も大事なようです。IntelMausiEthernet.kextの名前が違っている(IntelMausi.kextになっている)のとEnabledされていないようなので、修正しました。<dict><key>BundlePath</key><string>IntelMausiEthernet.kext</string><key>Comment</key><string></string><key>Enabled</key><true/><key>ExecutablePath</key><string>Contents/MacOS/IntelMausiEthernet</string><key>MatchKernel</key><string></string><key>PlistPath</key><string>Contents/Info.plist</string></dict>また、USBInjectAll.kextの記述も追加しました。順番が大事のようです。arrayの最初の方に入れたら動きません。arrayの最後に追加しました。使用するSSDTもconfig.plistで指定する必要があるようです。今回は、SSDT-UIAC.amlを使います。</dict>を追加しました。動作確認BIOSでOpenCoreをインストールしたドライブを選択すると、Cloverと同様に起動ボリュームの選択画面が出ます。テキストだけのシンプルな画面です。HDを選択しました(この例ではキーボードの5を押す)。この後、設定に不備があると上記のようなエラーメッセージが出ることもありますし、起動が停止することもあります。ここまでの設定で、なんと起動しました。config.plistで手付かずの項目がいっぱいあるのに、とりあえず起動したのは意外でした。使用したconfig.plistを以下においておきます。Pastebin.comhttps://pastebin.com/UZY7Skj1動くこと画面が出て動作します。580が正しくと動きます。IntelMausiEthernet.kextも動きます。LAN接続ができます。Broadcomの純正WiFiも動きます。USBInjectAll.kextと自作のSSDTの組み合わせで、USBの取捨選択ができています。15個制限問題を解決できています。動かないことシャットダウンすると画面は消え、シャットダウンプロセスが実行されるのですが、電源が切れるところまで行き着きません。電源スイッチを長押しして強制的にoffにする必要があります。その影響で次の起動の時にBIOS表示で警告が出ます。ACPI関係の設定が足りないのだと思います。OpenCoreに行くべきか?ということで、OpenCoreでの起動を確認できました。今後は、USBの指定方法や、今回見た以外のconfig.plistの設定など、マニュアルや検索して調べて見たいと思います。CloverをやめてOpenCoreに移行すべきでしょうか。OpenCoreの人たちは、以下のようなメリットを訴えています。設計が新しい確かにCloverは開発過程がそれほどオープンになっていないので、わかりにくいところがあるかと思います。ロシアで開発されているCloverとドイツで開発されているOpenCoreでは、偏見かもしれませんが、なんとなくOpenCoreに安心感を感じます。開発がオープンなのでHackintoshの主流がOpenCoreに移行していく可能性は高いです。今現在では、Cloverに関するノウハウが大量にネットにありますし、しばらくはCloverが使われると思います。主流ブートローダーは、数年前にChameleonからCloverに交代しました。(マスターブートレコード)からESPに対応すること、起動時に動的にパッチを当ててくれる機能、macOSとの相性が良くなることなど、いくつもメリットがありました。CloverからOpenCoreに変えても、目に見えるメリットはないので、移行は緩やかかもしれません。CloverからOpenCoreに移行したらグラフィックスカードの動作が安定したと言う情報も見かけました。今後どうなるにしても、選択肢が複数あることは良いことです。H310-A)efiはApfsDriverLoader.efiEmuVariableUefi.efiFSInject.efiOsxAptioFix3Drv.efiSMCHelper.efiVBoxHfs.efikestはAppleALC.kextFakeSMC.kextLilu.kextRealtekRTL8111.kextUSBInjectAll.kextWhateverGreen.kextです。USBInjectAll.kextは<dict><key>BundlePath</key><string>USBInjectAll.kext</string><key>Comment</key><string></string><key>Enabled</key><true/><key>ExecutablePath</key><string>Contents/MacOS/USBInjectAll</string><key>MatchKernel</key><string></string><key>PlistPath</key><string>Contents/Info.plist</string></dict>で動きました。uia_exclude=HS01;HS02;HS05;HS06;HS11;HS12;HS13;HS14;SS01;SS02;SS05;SS06</string><key>csr-active-config</key><data>AAAAAA==</data><key>nvda_drv</key><data>MQ==</data><key>prev-lang:kbd</key><data>cnUtUlU6MjUy</data></dict>の通り入れて、動きました。シャットダウン関係は無理でした。Ver0.0.4、これから、ノウハウがたまっていくんでしょうね。新しい時代の夜明けなのかも。OpenCoreへの変革にも、参加できるとは本当にラッキーです。Config.plisの汎用度を試してみました。Configuratorやはり内部構造が異なっていることから、まったくの互換性なし。modeでは読み取れますが、ベタ文字列の羅列で編集が大変です(初心者には酷)長期的にはOpenCore専用のConfiguratorの早期提供が、今後のユーザー拡大に大きく貢献するかも。このXcodeで読み込んで編集した思い出があります。新しい時代の変革は新しいツール(OpenCore)で切り開かれる...と感じます。Cloverと同様に起動ボリュームの選択画面が出ます。