サイトアイコン Boot macOS

tonymacx86式インストール手順 (その3: バニラ化と調整)

UniBeastとMultiBeastを使ってmacOSをインストールした前回

tonymacx86のツールUniBeastを使って、単体で起動できるmacOSインストーラUSBメモリーを作成する方法を、Hackintosh初心者向けに紹介します。tonymacx86で開発配布されているツールにUniBeastとMultiBeastがあります。どちらもHackintosh初心者によく使われています。そこで、3つの記事で、以下の手順: その1:UniBeastを使って単体で起動するmacOSインストーラUSBメモリーを作り、これを使ってmacOSをインストールする。 その2:MultiBeastを使ってCloverやkext類をインストールし、macOSを起動できる状態にする。 その3:kextの...
tonymacx86式インストール手順 (その1: UniBeast) - Boot macOS
MultiBeastを使って「ポストインストール」する方法をHackintosh初心者向けに紹介します。MultiBeastはtonymacx86.comで作られて配布されているHackintosh作成ツールです。Apple純正インストーラやUniBeastによりmacOSがインストールされたドライブに、Cloverやkext類をインストールし、macOSを起動できる状態にしてくれます。インストールが簡単になってしまうので何をやっているか理解しないでHackintoshを作ってしまうとか、バニラなインストールにならないなどの批判もあります。しかし何をどうしたら良いかわからない初心者にはあ...
tonymacx86式インストール手順 (その2: MultiBeast) - Boot macOS

に引き続き、今回はバニラな構成にし、設定を調整する方法を紹介します。

ESPをマウントする

前回の作業で一応Hackintoshが起動するようになりました。MultiBeastは何をしてくれたのでしょうか。まずはMultiBeastがどこに何をインストールしてくれたのかを確認します。そのためにまずはESPをマウントします。

ESPをマウントするには、専用のアプリもありますしKext Updater.appなどでも可能です。でも一番基礎的なターミナルでの作業を知っておくのも良いと思います。まずはドライブを確認します。ターミナルから、

$ diskutil list

とタイプすると、マシンに接続されたドライブの一覧が出ます。MultiBeastがインストールした起動ドライブ関係を見ると、

/dev/disk0 (internal, physical):
 #:                       TYPE NAME                    SIZE       IDENTIFIER
 0:      GUID_partition_scheme                        *80.0 GB    disk0
 1:                        EFI EFI                     209.7 MB   disk0s1
 2:                 Apple_APFS Container disk1         79.8 GB    disk0s2

/dev/disk1 (synthesized):
 #:                       TYPE NAME                    SIZE       IDENTIFIER
 0:      APFS Container Scheme -                      +79.8 GB    disk1
                               Physical Store disk0s2
 1:                APFS Volume Mojave25SSD             6.0 GB     disk1s1
 2:                APFS Volume Preboot                 20.6 MB    disk1s2
 3:                APFS Volume Recovery                1.0 GB     disk1s3
 4:                APFS Volume VM                      4.3 GB     disk1s4

となっています。物理的にはdisk0の一つのドライブしかありませんが、その中に仮想的なドライブ(コンテナ)であるdisk1が作られています。disk1には、macOSの本体であるdisk1s1があります。それ以外の内容 (Preboot, Recovery, VM) については、こちらをご覧ください。

ここでESP (EFI System Pertition)はdisk0s1であることがわかります。以下のdiskutil mountコマンドでマウントできます。管理者権限が必要なのでsudoコマンドを使っています。実行するとパスワードを聞かれます。

$ sudo diskutil mount disk0s1
Volume EFI on disk0s1 mounted

これにより、/Volumes/EFIの下にESPがマウントされます。

ここには、Cloverブートストラップローダプログラムや、efiドライバ、config.plistなどがインストールされています。

KextをESPに移動してバニラ化する

macOS本体に手をつけないバニラなインストールでは、kext類もESP、すなわちCLOVERのkexts以下に入れておきます。しかしMultiBeastではkextをESPに入れてくれません。MultiBeastはkext類を/Library/Extensions以下(略して/L/E)にインストールします。/L/E以下の内容を見てみましょう。

ここで選択して8個のkextがMultiBeastがインストールしたものです。とりあえずは動いているので、このままで良いでしょう。AHCI_3rdParty_eSATA.kextは、MultiBeastのインストールで指示したので入っています。でも、効果は感じられないですので、外しても良いかもしれません。FakePCIIDで始まる2個のkextもインストールの時に指示したものです。これもなくても問題なく動いていますので、外しても良かったかもしれません。

MultiBeastがなぜESPじゃなくて/L/Eにkextをインストールするのかについて公式の説明はないと思います。おそらくは、kextによってはESPでは動かないものが稀にあるので、/L/Eにインストールしているのではないかと思われます。でもここでインストールされたkextはESPでも動くものばかりです。ESPに移せば、macOS部分は手つかずのバニラな状態になります。EFI/CLOVER/kexts/Otherの中に移動しておきましょう。ドラッグ&ドロップではコピーになってしまいます。kextが二重に存在するのは好ましくないので、MultiBeastがインストールした/L/Eのkextは消しておきましょう。

EFIドライバ

ESPの中のEEI/CLOVER/drivers64EFIの中にはEFIドライバ類が入っています。MultiBeastが何を入れたか確認しておきます。

Cloverのインストーラで「場合によっては必要」とされるefiが全て入っている様子です。色々な環境で動くことを考えての選択だと思います。これもkextと同じく、とりあえずは動いているので、このままで良いと思います。でも外しても動くようなら除外しても良いと思います。今回のハードウェア構成では、以下のドライバだけで問題なく動きます。

Config.plist

MultiBeastが作ってくれたconfig.plistを次に見てみます。以下に掲載しておきました。これも、起動しやすいことを目指して、安全よりの設定になっています。下記で説明するSMBIOSの項目以外は、このまま使い続けて構わないと思います。

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.
config.plist by MultiBeast - Pastebin.com - Pastebin

ACPI

ACPIの最初のキーはDSDTです。この中のDropOEM_DSMのkeyは、#DropOEM_DSMと改名されています。存在しないキーに改変されていることで、コメントアウトになっています。ここの設定は消してしまっても構わないですFixesのkeyは、すべてfalseです。デフォルトがfalseなのでこれも全部消してしまっても構わないですということでDSDTはNameキーくらいはあっても良いけど、他は消してしまっても大丈夫です。

次のDropTablesのkeyではMATSが外してあります。昔はMATSがカーネルパニックを引き起こし安かったらしいのですが、今はdropしなくても大丈夫です。消しても構わないです。

次のHaltEnablerはfalseなので消してしまって構わないです。シャットダウンした後で起動してしまう症状が現れれるようならtrueにしてみると効果があるかもしれません。

SSDTはこのままでも良いです。DropOEMは消しても良いです。

結果、ACPIはこれくらい書いてあれば十分です。

        <key>ACPI</key>
        <dict>
                <key>DSDT</key>
                <dict>
                        <key>Name</key>
                        <string>DSDT.aml</string>
                </dict>
                <key>SSDT</key>
                <dict>
                        <key>Generate</key>
                        <dict>
                                <key>CStates</key>
                                <true/>
                                <key>PStates</key>
                                <true/>
                        </dict>
                </dict>
        </dict>

Boot

Bootはこのままで良いです。DefaultVolumeは起動ドライブの名前にしておきます。Timeoutはマイナスにするとキーボード入力待ちします。色々調整する場合はマイナスにしておくと便利です。

Devices, DisableDrivers

FakeIDは全部ゼロのままなので、効いていません。DisableDriversも何も指定していません。両方とも消してしまっても構わないです。

GUI, Graphics

このままで良いと思います。必要に応じて変更します。

KernelAndKextPatches

KextsToPatchのキーに外部ドライブがオレンジ色アイコンになることを阻止するパッチが書いてあります。ほとんど困らないと思いますので、削除しても良いと思います。副作用を考えるとパッチは少ない方が良いですから、不要なパッチは外しておきましょう。

RtVariables

CsrActiveConfigは0にしておくとSIPが有効になります。kextをESPにすべて移動したので0でも大丈夫なはずです。SIP有効にすれば実機と同じになるので気持ちが良いです。

BooterConfigは、実は何も使われていないです。以前、Cloverのソースを見て確認しました。消しても構わないです(あっても大丈夫ですが)。

SMBIOS

MultiBeastはTrustのキーしか作ってくれません。最近のCloverはSMBIOSのいくつかの項目を自動で作ってくれますが、完全ではありません。こちらのガイド

Hackintoshは本物のMacintoshではありませんが、macOSは本物の機種上で動いていると思い込んでいます。Macintoshの機種名によってハードウェア構成が違いますから、それに合わせた効率的な動作を行ったりする可能性もあります。またiPhoneとの連携、iMessage, iClouなどのサービス利用の際に、機種名をチェックし、不整合があると機能を止めることもあります。なので、実際のハードウェア構成に近い実機のふりをして、その情報を正しく設定しておくことが重要です。Clover Configuratorを使って設定ハードウェアを特定する情報は、Clov...
正しく機種設定する (SMBIOSの設定) - Boot macOS

を見て、少なくとも以下の項目は作成しておくのが良いです。

実際、MultiBeastの前回の設定では、ProductNameをiMac15,1にしました。しかしconfig.plistではそれが書かれておらず、iMac14,2になってしまっています。SMBIOSをしっかり設定することで、ハードウェアに合致した機種IDになり、トラブルを回避できます。

SystemParameters

この部分は、MultiBeastがインストールしたそのままで大丈夫です。

今後の調整

今回の作業で、バニラなシステムになり、機種名が正しく設定できて、より安定なシステムになったのではと思います。終了、スリープなども機能します。ネットワークにも接続できていると思いますので、一通りの機能は使えていると思います。ただ、いくつかやり残している機能もあります。

サウンド

AppleALC.kextがあり、またconfig.plistのAudioでInject 1としているので、運が良ければ音は出ます。でなければ、Injectの数値を変えるか、VoodooHDAを使うか、USBオーディオを使うと良いです。

Hackintoshで音を出すためのアプローチは、いくつかありますが、ここでは、一般的で簡単な3つの方法を難易度の低い順に紹介します。それぞれの作業量は、 何もしない kextを1個入れる kextを2個入れてconfig.plistを1項目追加するです。USBオーディオを使うマザーボード搭載のオーディオチップを利用せずに、外付けの音源でデジタルアナログ変換するアプローチです。USB接続のDAC (デジタルアナログ変換器)を搭載した、スピーカ、アンプ、アダプターなどを接続するだけです。USBの標準的なオーディオ再生プロファイルを使うので、OS...
音を出す - Boot macOS

USB

USBの上限個数15を外すパッチを採用しませんでした。そのため使えないUSBポートがあるかもしれません。こちらを見て対応すると良いです。

追記:この記事ではUSBの15個制限を簡易的に回避します。本気で対応するには、この記事の方法よりも、以下をお薦めします。この記事の結論を先に書いておきます。 15個の制限を外すパッチとUSBInjectAll.kextを併用すると全てのUSBポートが使えるようになる (tonymacx86のMultiBeast方式) 15個制限解除パッチを使用せずに、USBInjectAll.kextのみを使って、実際に使用するポートを15個まで選択できる (お勧めの方式)El Capitanから使用可能なUSBポートの数が、 コントローラ当たり15までと制限されました。その後のSierraでもHigh Si...
USBポートを設定する - Boot macOS

おまけ:名前の由来

Cloverの前に一般的だったブートローダープログラムがChameleonでした。macOSがインストールできるようにマシンを変化させる機能を、色を変えられるカメレオンになぞらえたのだと思います。Chameleonはオープンソースだったので、tonymacx86の中の人がこれをフォークしてtonymacx86版のブートローダープログラムを作り、これをChimeraと名付けました。異種のOSを起動できる機能を、色々な動物の部位を併せ持った伝説上の生き物になぞらえたのだと思います。

(Chimeraのアイコン)

Chameleonは古いハードウェアから最新ハードウェアまで満遍なくサポートするのに対して、Chimeraは古いハードウェアは切り捨てつつ、最新ハードウェアに積極的に対応する違いがありました。tonymacx86で提供するおすすめハードウェア構成で確実に動くことを目指していました。

その後、Chimeraとkext類をインストールして設定するためのインストーラが作られて、その名前がMultiBeastになったわけです。キメラをもじっての命名だと思います。その後に出た、インストール用USBメモリー作成ツールは、USBのUniversalと、どのマシンでも起動するユニバーサルなアプリであることからUniBeastと名付けられたと思われます。

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