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

f:id:siroanko:20181112224438p:plain

UniBeastとMultiBeastを使って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が何を入れたか確認しておきます。

  • VBoxHfs-64.efi
  • PartitionDxe-64.efi
  • SMCHelper-64.efi
  • FSInject-64.efi
  • FirmwareVolume-64.efi
  • DataHubDxe-64.efi
  • AptioMemoryFix-64.efi
  • AppleUITheme-64.efi
  • AppleKeyAggregator-64.efi
  • AppleImageCodec-64.efi
  • ApfsDriverLoader-64.efi

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

  • VBoxHfs-64.efi
  • SMCHelper-64.efi
  • FSInject-64.efi
  • AptioMemoryFix-64.efi
  • ApfsDriverLoader-64.efi

Config.plist

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

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のいくつかの項目を自動で作ってくれますが、完全ではありません。こちらのガイド

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

  • BiosVersion
  • ProductName
  • SerialNumber

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

SystemParameters

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

今後の調整

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

サウンド

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

USB

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

おまけ:名前の由来

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

(Chimeraのアイコン)

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

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

7件のコメント

  1. 仕組みもわからずMultibeastを使用しておりましたが、いろいろな謎が解けました。
    ありがとうございます。
    現在、グラフィックカードをNDIVIAからAMDに変更中です。
    Wifiカードもbroadcom BCM943602CSにすべくアリババに発注しました。
    でわでわ

    1. そう言っていただけると嬉しいです。AMDグラフィックスカード+Broadcom Wi-Fiで完璧なmacOSマシンになりますね。

      1. 先日、無事Wifiカードが届きました。
        Radeon RX 570 +broadcom BCM943602CSでMojaveにできました。
        動作が不安定だったのでWhateverGreenを外したところ安定しました。

        1. WhateverGreenを外した方が良いこともあるんですね。もともとRX 570は何もしなくても良いカードなので、入れないのがが正しいのかもしれません。

          1. 後日談です。
            WhateverGreenを外して運用していましたがスリープがうまく動作せず(スリープ→ビデオカードから復帰→スリープ→・・のループ)、最新のWhateverGreenを導入したところ解決しました。
            動作も安定しています。

  2. > MultiBeastがなぜESPじゃなくて/L/Eにkextをインストールするのかについて公式の説明はないと思います。

    この辺りの議論を元に、意図的に行っているのだと思います。
    例えばFakeSMCなんかは両方にインストールしてくれるようですね。

    https://www.tonymacx86.com/threads/guide-installing-3rd-party-kexts-el-capitan-sierra-high-sierra-mojave.268964/
    https://www.tonymacx86.com/threads/why-use-clover-kexts-other-folder-for-direct-update-to-mojave.261993/page-2

    1. 有意義な情報をありがとうございます。これは知らなかったです。近いうちに記事で紹介したいです。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です