OpenCoreはCloverから分岐し、OZMOSISの流れを取り込んだ新しいオープンソースのブートローダーです。Z390マザーボードで動かしたところとりあえずはmacOSが起動しました。
追記:最近のOpenCore関連の記事もご覧ください。
ASUSのZ390マザーボードと9900Kの組み合わせでmacOSを動かしているマシンのブートローダーを、CloverからOpenCoreに移行しました。OpenCoreのconfig.plistはCloverに比べて複雑ですが、親切なページと便利なツールがあったので円滑に移行できました。OpenCoreのガイドとツールYoutubeのビデオOpenCoreを使ってみた、という程度の記事を書きました。OpenCoreの基礎知識に関してはこちらをご覧ください。この当時は、OpenCoreは、Cloverに比べてconfig.plistがややこしくて面倒という印象でした。設定項目が多いだけでなく、kextやSSDTや... ASUS Z390 + Coffee LakeのブートローダをOpenCoreにする - Boot macOS |
Table of Contents
OpenCoreとは
OpenCoreは、完璧にオープンソースであることが特徴の新しいブートローダーです。Cloverから分岐し、OZMOSISの流れを取り込んでいます。OZMOSISを開発していたドイツのHackintosh-Forum.deの人たちが開発を進めているようです。OZMOSISってどんなものだったかと言うと、ファームウェア形式のブートローダーで、マザーボードのBIOSを置き換えて動作します。OZMOSISをマザーボードのBIOS更新機能を使ってインストールすれば、普通のマザーボードがmacOSを直接起動できるマザーボードに変身します。macOSもmacOSインストーラも実機と同様にそのまま起動できるという理想を追ったブートローダーだったのですが、調整やアップデートのたびにBIOS更新作業をするのは大変でした。ChameleonやCloverみたいにドライブの一部に書き込む方式の方が色々楽です。ということでOZMOSISはあまり流行りませんでした。開発チームもそれを認識して、今度はClover方式のブートローダーを作ることにしたのだと思われます。
使用したハードウェア
OpenCoreを試したハードウェアは、以下で紹介したZ390マシンです。モデルIDはiMac19,1で、macOS Mojave 10.14.5です。
Coffee Lake-S Refreshの作例です。スリープ、iMessage、FaceTimeが機能します。純正無線ユニットを使用しているのでContinuity関連も問題ありません。過去に公開した記事のまとめです。このマシンは常用していますので、ここで紹介している作例で一番自信のある構成です。macOS 10.15.3に対応したEFIフォルダの中身をこちらに置いておきます。シリアル番号とUUIDは有効ですが、ネット接続する前に必ず変更してください。ハードウェア マザーボードはASUS ROG MAXIMUS HERO WIFI (国内ではWiFi付モデルのみのようです。WiFi/BTは動作... ASUS ROG MAXIMUS XI HERO (Z390), 9900K - Boot macOS |
ここで使っているkextは
- AppleALC.kext
- IntelMausiEthernet.kext
- Lilu.kext
- USBInjectAll.kext
- VirtualSMC.kext
- WhateverGreen.kext
です。efiファイルは大半がClover 5018で配布されているものです。
- ApfsDriverLoader.efi
- AptioMemoryFix.efi (これはKext Updater.appで入手)
- FSInject.efi
- VirtualSmc.efi (VirtualSMC.kextに同梱されているもの)
- VBoxHfs.efi
- EmuVariableUefi.efi
またUSBInjectAll.kextで使うためのSSDTファイルも使っています。こちらで作成したものです。これがSSDT-UIAC.amlという名前です。
OpenCoreを入手する方法
いろいろな方法がありますが、一番お手軽なのは最近のKext Updater.appを使う方法です。Kext UpdaterもOpenCoreを作っている人たちが活躍しているHackintosh-Forum.deで作られていますので、その関係でOpenCoreダウンロード機能が実装されているのだと思います。Load Bootloaderのラジオボタンを選択して、右のポップアップメニューからOpenCoreを選択します。
ダウンロードすると、Kext-Updatesフォルダの中にOpenCoreというフォルダができて、この中にデバッグ版とリリース版
- OpenCore-0.0.4-DEBUG
- OpenCore-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に書き換えました。これでメッセージが出なくなりました。
<key>Security</key> <dict> <key>ExposeSensitiveData</key> <integer>2</integer> <key>HaltLevel</key> <integer>2147483648</integer> <key>RequireSignature</key> <false/> <key>RequireVault</key> <false/> <key>ScanPolicy</key> <integer>983299</integer> </dict>
efi設定
次に、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の最後に追加しました。
<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>
SSDT設定
使用するSSDTもconfig.plistで指定する必要があるようです。今回は、SSDT-UIAC.amlを使います。そこで、<key>ACPI</key><key>Add</key>のarrayの中に、
<dict> <key>Comment</key> <string>USB list for USBInjectAll</string> <key>Enabled</key> <true/> <key>Path</key> <string>SSDT-UIAC.aml</string> </dict>
を追加しました。
動作確認
BIOSでOpenCoreをインストールしたドライブを選択すると、Cloverと同様に起動ボリュームの選択画面が出ます。テキストだけのシンプルな画面です。ここで10.14.5の入ったMacintosh HDを選択しました(この例ではキーボードの5を押す)。この後、設定に不備があると上記のようなエラーメッセージが出ることもありますし、起動が停止することもあります。
でも、ここまでの設定で、なんと起動しました。config.plistで手付かずの項目がいっぱいあるのに、とりあえず起動したのは意外でした。よかったです。
使用したconfig.plistを以下においておきます。
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time. OpenCore config.plist for Z390 - Pastebin.com - Pastebin |
動くこと
画面が出て動作します。Radeon RX 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に交代しました。ただ、この交代では、レガシーなMBR (マスターブートレコード)からESPに対応すること、起動時に動的にパッチを当ててくれる機能、macOSとの相性が良くなることなど、いくつもメリットがありました。CloverからOpenCoreに変えても、目に見えるメリットはないので、移行は緩やかかもしれません。CloverからOpenCoreに移行したらグラフィックスカードの動作が安定したと言う情報も見かけました。今後どうなるにしても、選択肢が複数あることは良いことです。