tonymacx86式インストール手順 (その1: UniBeast)

f:id:siroanko:20181112224438p:plain

tonymacx86のツールUniBeastを使って、単体で起動できるmacOSインストーラUSBメモリーを作成する方法を、Hackintosh初心者向けに紹介します。tonymacx86で開発配布されているツールにUniBeastとMultiBeastがあります。どちらもHackintosh初心者によく使われています。そこで、3つの記事で、以下の手順:

  • その1:UniBeastを使って単体で起動するmacOSインストーラUSBメモリーを作り、これを使ってmacOSをインストールする。
  • その2:MultiBeastを使ってCloverやkext類をインストールし、macOSを起動できる状態にする。
  • その3:kextの場所とconfig.plistを修正してバニラ化してチューニングする。

を説明します。この記事は、その1です。その2、その3は以下の記事です。

UniBeast

UniBeastはtonymacx86.comで作られて配布されているHackintosh作成ツールです。単体で起動するUSBメモリーを作成します。

UniBeastが行うことは、

  1. macOSがMacで起動するUSBメモリーを作成する
  2. これにCloverをインストールする
  3. これに必要なkext類をインストールしてconfig.plistを作成する

という3つの作業です。1番の作業は、通常のMacユーザも行なっている作業です。Appleのサイトにも丁寧な説明があります。

2番目の作業は、Cloverを入手すれば、そのインストーラが行ってくれる作業です。インストール時のオプション選択には多少の知識が必要です。3番目の作業はUSBメモリーのESP (EFI System Partition)をマウントして、適切なkextファイル追加し、config.plistを正しく編集する作業です。このように2番目3番目の作業には、ハードウェア構成に関係したいろいろなノウハウが必要です。でも、それを知らなくても無難に起動できるUSBメモリーを作成してくれるところがUniBeastの便利なところです。

作業の準備

まずは、macOSが動いている環境(MacもしくはHackintosh)が必要です。これに、インストールしたいmacOSのインストーラをAppleのサイトからダウンロードしておきます。具体的な方法は上記のアップルのサイトに説明があります。この作業で、アプリケーションフォルダにmacOSインストーラが保存されます。

次に、UniBeastをtonymacx86からダウンロードします。macOSのメジャーバージョン別に用意されています。この記事の時点での最新はMojaveです。

12GB以上(Appleのサイトの情報)の容量のUSBメモリーを用意します。これをGUIDスキームでMac OS 拡張フォーマットでフォーマットします(どちらもディスクユーティリティ.appのデフォルト設定です)。

UniBeastで起動USBメモリーを作成

macOSインストーラがアプリケーションフォルダにあり、フォーマットしたUSBメモリが挿されたmacOSマシンで、UniBeastを起動します。言語が英語になっていないと起動しないので、必要ならばシステム環境設定の「言語と地域」から英語に設定しておきます。

UniBeastを起動して注意事項のページを経ると、USBメモリーを選択する画面になります。ここで、対象のUSBメモリーを選択します。内容はこのあと削除されるので、選択を間違えないでください。

次にmacOSインストールファイルの選択です。AppleのサイトからMojaveをダウンロードするとmacOS Mojaveインストール.appというインストーラプログラムがアプリケーションフォルダに出来上がります。UniBeastはアプリケーションフォルダにあるインストーラを表示しますので、選択します。

次にESPにインストールする (UEIF Boot Mode) か、macOS本体パーティションにインストールする (Legacy Boot Mode) かの選択肢が出ます。Cloverのインストーラを使う場合でもこの選択を問われます。この先、バニラなインストールを目指すので、混乱しないようにここもUEFI Boot Modeを選択しておきます。

次にグラフィックスのオプションを聞かれます。ここに出ているNvidiaとAMDのグラフィックスカードを使用する場合はチェックを入れます。いずれもかなり古いカードですので、チェックを入れる必要のある場合は少ないと思います。

このあと確認のウィンドウが出て、USBメモリー作成作業が始まります。USB 3.1 Gen1接続で3分くらいかかります。完成すると以下のメッセージが表示されます。

BIOSを設定する

macOSをインストールしようとしている対象のマザーボードのBIOS設定を、macOS向けに設定しておきます。最近のマザーボードではほとんどデフォルトで大丈夫ですが、一応チェックしておいてください。

USBメモリーで起動する

このUSBメモリーを、インストール対象のマシンに取り付けて起動します。大抵は、USBからの起動を優先するBIOS設定をしていないと思います。その場合は、起動時にBIOS画面でUSBメモリーを指定する必要があります。

USBメモリーから起動すると、Cloverの起動ドライブ選択画面が出ます。ここで、USBメモリーを選択します。

UniBeastの設定は、かなり汎用的な設定になっているようで、起動する成功率は高いです。今回は、ASUSのZ390マザーボード、Radeon RX580、macOS 10.14.5 Mojaveの組み合わせで実験したところ、とりあえずはインストラーが起動しました。tonymacx86で推奨されているハードウェアならインストラー起動までは進めるのではないかと思います。

この後、言語を選択して、macOSのインストールを開始します。する3-5分程度でインストール用イメージが用意され、再起動します。この時もUSBメモリーから起動します。Cloverのブート選択に、「Boot macOS Install from xxxx」という項目が増えているはずです。これを選択します。

この後、もう1回くらい起動します。その時も、Cloverのブート選択に「Boot macOS Install from xxxx」という選択肢があればこれを選択します。インストールが最終段階になると、この選択肢は消えて、「Boot macOS from XXXX」という項目が現れます。これを選択すれば、macOSのアカウント設定などの画面を経て、インストール終了です。

こんな感じでインストールされます。config.plistでiMac14,2と設定されているのでiMac Late 2013になっています。

実は、今回のハードウェア構成で試したところ、以上の手順ではmacOSインストール途中で失敗しました。そこで、次にUniBeastが作るESPの構成と、トラブル対策を紹介します。

UniBeastが作るESP

トラブル対策を説明する前に、まずはUniBeastにより作られるESPの中身を見てみます。多くのハードウェアで機能するためにNullCPUPowerManagementなどの汎用性を高めるkextなどが使われているのかと思ってましたが、使われていませんでした。標準的でシンプルな作りでした。

efiドライバー

drivers64UEFIフォルダには以下のefiドライバが入っています。無くても問題のないドライバも含まれていますが、Cloverのデフォルトに準じた一般的な構成です。必須もしくはあった方が良いドライバは、太字にした5個くらいかと思います。後で説明しますが、今回のマザーボードでは、これらのefiに加えてEmuVariableUefi-64.efiが必須であることがわかりました。

  • ApfsDriverLoader-64.efi (APFSドライバを取り寄せる)
  • AptioMemoryFix-64.efi (kernel用メモリを確保)
  • AudioDxe-64.efi (起動音を出す。あまり必要ではない)
  • DataHubDxe-64.efi (DataHubプロトコル、すでに機能していれば不要)
  • FSInject-64.efi (ESPに置いたkextを機能させる)
  • PartitionDxe-64.efi (特殊なパーティションの対応。なくても良い)
  • SMCHelper-64.efi (FakeSMCのためにNVRAMのSMCキーを保存)
  • VBoxHfs-64.efi (HFS+を読むためのドライバ)

kextファイル

kextは全てkexts/Otherに入っています。ESPに全て入れてあるのでバニラな構成と言えます。macOSインストール作業ではLANは必須ではないのですが、Intel, Atheros, Realtek向けのLANのドライバが全部入っています。全てのマザボに対応するためかと思います。最近流行りのVirtualSMC.kextではなく、昔ながらのFakeSMC.kextが使われています。

  • AtherosE2200Ethernet.kext (LANドライバー)
  • FakeSMC.kext (SMCをエミュレートする必須kext)
  • IntelMausiEthernet.kext (LANドライバー)
  • Lilu.kext (パッチを当てるkext)
  • RealtekRTL8111.kext (LANドライバー)
  • WhateverGreen.kext (グラフィックス用パッチ。Liluを使用)

config.plist

以下のようなconfig.plistを作ってくれます。DSDTの設定が長々とありますが、ほとんどがコメントアウトされたりfalseに設定してあり、無効になっています。その後の設定はごく一般的です。Boot Argumentsのnv_disable=1はもはや古いので不要かと思います。その代わりBoot Argumentsに-vオプションを追加しておくと、トラブル特定に役立ったのではと思いました。

KextToPatchではUSBポートの15個制限を回避するパッチが書いてあります。ただこれはmacOS 10.14.4用のパッチですので、今回使用した10.14.5では使えません。他のバージョンにパッチを試みて不具合が起きないように、MatchOSキーで10.14.4以外では機能しないように設定してあります。USB個数制限を回避するためにパッチを当てる方法は、どのマザーボードでも動くので楽なのですが、macOSバージョンごとにパッチを変更する必要があります。あまりお勧めではありません。詳しくはこちらをご覧ください

SMBIOSではiMac14,2に設定されています。シリアル番号などは指定されていません。Cloverが適当に設定してくれます。

トラブルとその対策

インストーラUSBメモリが完成したら、インストール先マシンで起動して、macOSをインストールします。その過程で発生しうるトラブルを時系列で解説します。

メモリー確保の失敗

メモリー確保失敗は、Cloverで起動ドライブを選択して起動プロセスが開始した直後に発生します。-vオプションをつけていないと、白いリンゴマークに代わって禁止マークが出ます。-vオプションをつけていれば、kernel読み込みのためのメモリーの確保 (allocation) に失敗したというメッセージが読み取れます。

今回使用したASUSのZ390マザーボードは、AptioMemoryFix-64.efiで、メモリー確保に成功します。GigabyteのZ390もこのefiファイルでOKのようです。MSIとASRockの300シリーズはAptioMemoryFix-64.efiで失敗するという報告が多数あります。メモリー空間を強制的にクリアするので副作用が心配ですが、OsxAptioFix2Drv-free2000.efiを使えば良いようです。詳細は以下をご覧ください。

USB個数制限問題

USB個数制限による失敗はmacOS(ここではmacOSインストーラ)が起動するプロセスの中盤以降で発生します。-vオプションをつけていないと、白いリンゴマークに代わって禁止マークが出ます。-vオプションをつけていると、メッセージが突然停止します。メッセージの表示が崩れることもあります。

macOSにはUSBの個数が15個までの制限がありUSB 2.0が優先されます。また、USBInjectAll.kextが入っていない場合、全てのUSB 2.0が確実に見えるわけでもなく、取りこぼしされることもあります。ということで、USB 3.0 (最近の表記で正しく書くとUSB 3.1 Gen 1) を使用しようとすると、かなりの確率でmacOSからは読めません。USB 2.0でも見えないことがあります。

マザーボードのBIOSが制御している段階では、全てのUSBメモリーが見えています。なので、起動ドライブとして選択できるし、Cloverの起動ドライブ選択画面も出ます。しかし、その後、macOSに制御が移管されるタイミングで運悪く15個の個数制限に引っかかると、起動の途中で突然USBメモリーが認識されなくなってしまいます。当然ながら起動には失敗して、画面に禁止マークが出ます。起動作業の中程で発生します。

USB 3.0のUSBメモリーであっても、USB 2.0用のコネクタに接続するとUSB 2.0として機能します。なので、除外される可能性は低くなります。それでも除外される可能性はあります(今回もそれに遭遇してしまいました)。そのような場合でも、機能している2.0コネクタはどこかに必ずあるので、他のコネクタに挿し直して起動を試みます。

今回入手した最新のUniBeastのconfig.plistには、上で説明したように、10.14.4の個数制限を回避するパッチは書いてありますが、10.14.5には対応していません。10.14.5に対応したパッチに書き換えればこのような苦労はありません。ただ、パッチで対応することはあまりお勧めできません。USB制限問題は、macOSが正しくインストールされた後で、じっくりと対応するのが良いと思います。インストール段階で、機能するUSBポートを探して対処したら良いと思います。

NVRAMの不具合

上の2つの問題は回避できたものの、今回の試みではまだ正しくインストールできませんでした。言語選択の画面

の後、最初の再起動の手前で画面が動かなくなります。調べたところ、efiドライバにEmuVariableUefi-64.efiが足りないのが原因でした。drivers64UEFIフォルダにこれをいれておきます。現行の300シリーズチップセットのマザーボードは、どれもEmuVariableUefi-64が必要のようです。マザーボードには設定内容を記憶するNVRAMがありますが、これがmacOSから読めない場合があります。EmuVariableUefi-64は、NVRAMをエミュレーションして、この問題を解決します

まとめ

UniBeastですんなりとインストールできれば楽なのですが、実際にはここで説明したような問題がかなりの頻度で発生します。それならば最初から、createinstallmediaで起動USBメモリーを作って、Cloverインストーラでefiを選びつつインストールしても良いように思いました。

macOSがインストールできれば、Hackintoshは7割方完成です。USBメモリーから起動すればmacOSは起動できます。USBメモリーのESPを、macOSをインストールしたドライブのESPにコピーすれば、USBメモリー不要で起動させることもできます。tonymacx86の方法では、この後MultiBeastを使ってインストールを完成させます。その後、それぞれのハードウェアに合わせて、バニラに起動するよう調整するのが良いと思います。続きは以下をご覧ください。

19件のコメント

  1. とても参考になりました。ありがとうございます。
    新規のハードでHackをつくるのは久しぶりでUnibeastを使いましたがとても手こずりました。
    GIGABYTE Z390 M Gaming/i9-9900K/SATA SSD/USBだけというシンプルな構成です。
    現状のHackはSierraですが、Mojaveのダウンロードからして手間がかかりました。理由は不明ですがMojaveをダウンロードすると20MB程度のスタブインストーラがダウンロードされます。ここからUnibeastで利用できるフルインストーラの作成は以下のRandyさんのやり方をしました。
    http://osxdaily.com/2018/09/29/download-full-macos-mojave-installer/
    スタブでインストールを開始して再起動の直前に終了して、ターミナルからコマンドを用いてフルインストーラを作成するものです。osは10.14.6でした。

    UnibeastではAptioMemoryFix-64.efiだと10回に9回程度メモリー確保に失敗するのでOsxAptioFix2Drv-free2000.efiを入れました。こちらでも10回に1回程度失敗します。そのうち安定となるドライバーを探して見ます。

    USB15個問題も起こりました。これが起こると画面が乱れてStill waiting for boot (root?) deviceと表示して固まります。こちらでの情報を参考にあちこちUSBを差し替えては機能するところを探します。厄介なのはあるとき機能しても次に必ず動くとは限らないことで忍耐を必要とします。

    EmuVariableUefi-64.efiは最初から入れておきました。次の問題は途中で”macOS could not be installed on your computer”と表示して止まります。そしてインストーラリソースのロード中にエラーが起こったと表示されます。
    https://www.tonymacx86.com/threads/solved-macos-could-not-be-installed-on-your-computer-installer-resources-error.263961/page-3
    にあるYlxさんの方法で解決しました。止まった画面でターミナルを起動してUSBからファイルをSSDにコピーするというものです。少々ディレクトリ構成が私のとは違うようですがやることは同じでした。

    最後に間違いを犯してMultibeastを走らせたので、起動できないディスクとなってしまいました。
    おまけに手違いでUSBを消してしまったので、全てを再度やり直すことになりました。2回目にはMultibeastを入れずにUSBのEFIをSSDにコピーしてまずは起動する環境構築の完了です。この先m2に最終的にはOSを入れる予定ですが起動環境があるので安心して色々と試せます。貴重な情報ありがとうございました。

    1. 色々と有用な情報をありがとうございます。私も調べてみます。

      1. 起動できるSSDからOSを立ち上げてm2にMojaveを入れて見ました。手順としてはMojaveのフルインストーラーをSSDのApplicationに手動でコピーしてそれを走らせて m2をインストール先に指定しました。やはり途中で”macOS could not be installed on your computer”を表示して止まります。今度はUSBの代わりにSSDからm2にファイルをコピーして再起動後に処理を続行してうまくインストールできました。m2からもブートできます。勉強不足で理由は理解できていないのですがm2のEFIにはCLOVERとかは全く入ってないのに起動できるため、どうやらSSDのドライバーが使われるみたいです。これがは起動時だけなのかその後も使われるのかは理解できていません。相変わらずメモリー割り当ての失敗で駐禁マークが出て時折起動時に停止します。これが起動時だけなのか、その後も問題となるのかは勉強不足で理解出来ていませんが、起動時だけの問題なら当面ほったらかしとうこうかと思っています。m2のEFIにもCLOVERを入れるとどっちが使われるのでしょうかね。

        1. beshioさん

          同じマザーボードを使っております。うちの環境ではconfig.plistのBootにslide=0を追加すると安定して起動するようになりました。

            <key>Boot</key>
            <dict>
              <key>Arguments</key>
              <string>slide=0</string>

          〜〜〜〜〜中略〜〜〜〜〜

          といった書き方になるかと。
          起動時にどのドライブを使うかはマザーボードのBIOS設定で設定します。おそらくSSDが起動ドライブになっているのだと思います。
          M.2ドライブを起動ドライブにするとM.2のEFI領域を使うようになると思います。

          Edit:編集しました。カギカッコは&gt;と&lt;で書かないとダメなようです。めんどくさくてすみません。(bootmacos)

  2. yoshiさん
    情報ありがとうございます。内容は良く分かります。tonymacx86にも色々なドライバーをslide=0有る無しで試せとあったので、安定するのを探してみます。ちなみにOsxAptioFix2Drv-free2000.efiをお使いでしょうか?

  3. うまく伝わったようで良かったです。
    うちはOsxAptioFix3Drv.efiで動いてます。ご参考まで。

  4. ここに書くのが妥当かどうか分かりませんが、M2ドライブにCloverを入れて見ました。バージョンは5033です。Unibeastの作成したSSD上のEFIをそのままM2にコピーして、そこに被せるようにCloverでインストールしました。memory fixは鬼門で、Clover5033に標準で付いてくる三つのドライバーは全て割り当てに失敗します。slide=0を入れても入れなくても同じです。そこでOsxAptioFix2Drv-free2000.efiをOsxAptioFix2Drv.efiと名前を変えてdriversに放り込んだらやっと起動しました。
    名前を変える必要はないかもしれません。slideに0以外を与えると動くのかもしれませんが、そもそもこれの意味を理解できていません。なかな奥が深い…

  5. yoshiiさん
    色々とお教えいただき感謝いたします。メモリー割当は相変わらずですが、他に2つ課題があります。1つはIGPUのアクセラレータが働いていないこと、2つ目はスリープしない事です。
    色々な情報をもとにDevices/Propertiesにkeyを追加したりSMBIOSの設定をしたりなどなどを行ってみたのですが上手くいきません。特にPropertiesの追加だとブートしない状況です。yoshiiさんの環境ではIGPUのアクセラレータとスリープは上手く機能していますでしょうか。

    1. うちのマシンはi5 9400Fで組んでおりまして、御存知の通りこのCPUはiGPUを持っていないんですね。ですんでiGPUについては残念ながらわかりません。ビデオカードを買うのが手っ取り早い解決策なのですが、これだと答えになっていませんよね。
      beshioさんの環境ではスリープしようとすると再起動してしまう状態でしょうか?こちらはよくある不具合ですのでUser Buildsの方に移動しませんか?
      うちではEmuVariableUefi.efiとslide=0でスリープできるようになりました。

      1. 全くスリープしません。メニューからスリープを実行すると一回だけ画面が一瞬点滅しますがそれだけです。2回目以降は何も起きません。タイムアウトまでほっといても同じ状況です。色々試行錯誤で設定を変えましたが駄目みたいですので、腰を据えて色々と調査してまずはアクセラレータの方から取り組もうと思っています。

        1. 私もASUS Z390 ROG MAXIMUS XI HERO + 9900Kでスリープにてこずりました。こちらとリンク先を参考になさってください。

          https://bootmacos.com/entry/2019/04/29/201738

          スリープはLANの状況などで目覚めることもあるようなので、スリープしようとしてシステムが固まるようなことがなければ、あまり気にしないでも良いような気もしています。

  6. GIGABYTE Z390 M Gaming/i9-9900KのiGPUアクセラレーションとスリープ問題ですが、あっさりと解決してしまいました。
    1. https://www.tonymacx86.com/threads/guide-intel-framebuffer-patching-using-whatevergreen.256490/
    上記の情報に従ってliluとWhateverGreenのデバッグビルドを作成し、ブートフラグ-igfxdumpを指定して起動するとフレームバッファーのダンプができます。これを010 Editorで見てみると、このボードでは3つのポートは全てDPとして認識されていることが分かりました。物理ポートは2つでDVID/HDMIなのですが、認識上は違うのでこれを合わせるためのパッチが必要となります。この辺りは以下に
    2. https://www.tonymacx86.com/threads/guide-general-framebuffer-patching-guide-hdmi-black-screen-problem.269149/
    詳しく説明されています。そして好都合なことに上記2のスレッドにはZ390M gamingのパッチ情報が記載されていたので、これをconfig.plistに放り込んだらアッサリとアクセラレーションが動きました。同時にスリープもするようです。まとめとしてconfig.plistに対してURL 1のPreliminaryに記述されている1から8の変更を行い、さらにURL 2の各ボード向けのパッチを当てれば完成です。当然デバッグビルドを作成する必要はありません。

    ただしスリープ後にはUSBキーボードが反応しなくなるので、コネクターの抜き差しが必要です。追い追い調べてみます。それからHDMIには未だディスプレーを繋いでないのでどうなるか分かりません。

    皆さまの情報に感謝いたします。

  7. おめでとうです。iGPUは起動させてはいますが表示に使用していないのであまり気にかけていなかったのですが、結構奥が深いのですね。

    1. iGPUは表示以外にも使用されるのですね。勉強になります。USBキーボードも何とか復帰できるように頑張ります。

  8. unibestでmacos selectionのところでmojaveを選択したらselected mac os x installer is incompleteと出てくるのですがなぜでしょうか?

    1. macOSインストーラが正しくダウンロードできていないのではと思います。アップルのサーバの調子によっては、一部のみがダウンロードされてあとは必要な時にダウンロードする状態になるようです。

beshio にコメントする コメントをキャンセル

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

「名前」「メールアドレス」「サイト」は空白でも投稿できますが、日本語が含まれない投稿は無視されます。(スパム対策)