夢を見ました。
これがほんとの夢色 Clover pic.twitter.com/V73zSXVrQf
— イショティハドゥス (@Ishotihadus) April 23, 2020
夢の中のお話なので、備忘録として。
もくじ
構成
知人からのお下がりのマシン。ありがたい。
- マザー: MINIX H61M-USB3
- チップセット: Intel H61 Express(6 series)
- オーディオ: Realtek ALC892
- イーサネット: Broadcom 57788
- CPU: i5-3570
- iGPU: HD2500
- dGPU: Radeon RX 580
参考になったウェブサイト
これが大事。
- /r/Hackintosh Vanilla Desktop Guide
- Intel の CPU の世代別に書いてある
- ほぼ間違いない
- Clover EFI bootloader Wiki
- Clover の設定で困ったらまずこれを読む
- Kexts – OneDrive
- 最新版の kext がいっぱいおいてある
- WhateverGreen/Manual
- WhateverGreen(weg)の公式マニュアル
- weg とか shiki とかの設定に困ったらまず読む
必要なもの
- マシン
- Mac 本体
- インストーラを作って Clover を入れるため
- Clover Configurator
- 設定項目が多すぎるので、最初のうちは使うと便利
- バグもほとんどないし直感的なので、普通に使ってかまわない
- Hackintool
- デバイスの状態が見られるので、入れておくと便利
- SystemRescueCD
- ブートできなくなったりしたとき、パーティションを詳細に設定したくなったとき、efibootmgr を使いたくなったときに使う
- ググり力
- 根気
手順
- USB メモリにインストーラを焼く
- GPT+JHFS+
- Clover を USB メモリに入れる
- SIP を無効化しておく必要がある
- Clover をチューニングする
- BIOS をチューニングする
- インストールする
- Clover をインストールしたマシンに入れる
- Clover の設定をコピーしてチューニングする
BIOS の設定
基本的には
- SATA は AHCI
- XHCI Hand-off は有効
- VT-D は無効
- (dGPU をメインにするなら)iGPU は無効 or dGPU を primary
ほぼこれだけで事足りるっぽい。
Clover のチューニング
基本的には Hackintosh Vanilla Desktop Guide を読んでそのとおりに設定する。Intel の iGPU を使う場合には、WhateverGreen のマニュアルも読みこんで設定する。
なんでもかんでもオンにすればよいというわけではないので、結構タイヘン。原則は「なるべくいじらない」。
なお Clover がデフォルトで書いてくれる config はグチャグチャなので、まっさらな状態から作ったほうがよい。
Devices は適当に設定しても Clover が勝手に必要なものだけ選んでくれるっぽいので、多少雑でもよさそう。
ある程度の設定は Clover のブート画面で変更できるので、ミスったときはそれを使うと便利。あと config ファイルも変えられるので、複数用意したりバックアップを作ったりしておくと安心。どうしても無理になったら SystemRescueCD に頼る。
SMBIOS
Mac のモデルを決定する場所。CPU の PowerManagement とか、ディスプレイの処理とか、DRM とか SideCar とか TouchBar とか、いろいろ結構違うので、この選択は大事。
Clover Configurator だとポチってするだけで設定できる。
SMBIOS はなるべく CPU の世代に合わせることが推奨されていて、ssdtPRGen.sh のモデルリストを参考にするとよいが、実際には古い SMBIOS ほど不具合が多いので、無理に新しいマシンにしてしまってもさほど問題はない。僕は Ivy 対応の SMBIOS で 4K に対応しているものがなかったのと、shiki の関係で、iMacPro 1,1 にしている。普通に問題なく動いている。
SMBIOS を使いはじめてから変えると挙動が怪しくなるので、インストールする前に決定したほうがよい。
Rt Variables の MLB は同時に設定する。
ドライバ
相性がある(同時に入れてはいけないものがある)ので注意する。
必須なのは、ApfsDriverLoader、Aptio 系の MemoryFix、FSInject、VirtualSmc だけ。
インストール時はたぶん HFSPlus も必要(ずっと入れていたので確認してない)。APFS からブートするときには必要ない。
Aptio は Boot macOS に書いてある順番に従うとよい。
AudioDxe、DataHubDxe はあって困らないので入れておいてよい。
Kexts
カーネル拡張。
よく出てくる Lilu という kext はプラグインのベースで、WhateverGreen などは Lilu プラグインとして実装されているので、 それを使う場合には Lilu が必須。
必須なのは、Lilu と VirtualSMC だけだと思う(VirtualSMC は部分的に Lilu を使っている)。
VirtualSMC はいくつか SMC 系の kext を持っているので、同時に入れておくと便利。使えないやつはブート時に排除してくれる。
WhateverGreen は入れていて悪さをすることはあまりないのと、入れてるときと入れてないときでデバイスの認識が変化するので、入れておくほうが無難。
AppleALC はオーディオ出したければ入れておく。
NullCPUPowerManagement は、PowerManagement 系で kernel panic するときにとりあえず入れておく。ブート時引数の -xcpm と組みあわせて使う。ssdtPRGen で ssdt にパッチを当てれば必要なくなるが、はじめはめんどいので入れておくとラク。
GPU
使わないほうを無効にするのが最も無難。両立する場合には、iGPU が primary のほうが安定するらしい。
使ってるマザーボードは iGPU を使わないと認識すらさせてくれないっぽく、これがわからなくてハマっていた。
完全には対応していない iGPU もある(僕の HD2500 もそう)ので、そういうのは使わないほうが無難。
Ethernet
大抵 kext を入れないと動かない。自分の構成に合わせて探してくる。
インストーラは EFI の kext でもいいが、メインで動かすときは /S/L/E/IONetworkingFamily の Plugins に入れないといけないっぽい。バニラだとたぶん無理。
Ethernet の PCI を認識しないときは LANInjection を、Ethernet の線をつないでいるときだけ OS が固まる場合には、Clover の FixLAN を有効にするとよい。
BCM57788 だったので、nms42 版 BCM5722D を使っている。このドライバにはどうやらバグがあって、ちょっと通信するとイーサネットがうんともすんともいわなくなる。
Private.cpp にある IOInterruptEventSource::interruptEventSource の最後の引数 intIndex を 0 にすると正しく動く。
ビルドした。
オーディオ
ほとんど全部 AppleALC がやってくれる。
layout-id だけ指定する必要があるので、ブートオプションを使う(非推奨)か、Device の Properties で指定する。
Vanilla Desktop Guide には Devices/Audio/Inject を使うよう書いてあるが、これは使わない。
トラブルシューティング
Waiting on <dict ID=”0″><key>IOProviderClass</key><string ID=”1″>IOResources… で固まる
ハズレ。再起動する。
apfs / hfs+ 系で kernel panic する
ハズレ。再起動する。メモリの問題説らしいが、いろいろ試しても特に改善してない。
boot のログは出るのに画面がうつらない
BIOS の設定を確認してみる。WhateverGreen の指示に従う。InjectIntel や IntelHDMI などの設定を修正する。
使ってるとときどき固まる
コンソールを確認してみて、Intel の Acceleration 系で出ていた場合にはハズレ。実 mac でも報告がある。
iGPU を諦めると解決する。
Clover が BIOS から起動しない・エントリがない
SystemRescueCD 上で efibootmgr を使ってエントリを作る。