El CapitanでSIP (System Integration Protection, システム整合保護)という仕組みが導入されました。SIPは、システム管理者であっても、システムの要のディレクトリのファイルを変更したりファイル追加したりできない仕組みです。また、アップルに認められて署名されたカーネル拡張機能 (kextファイル) 以外は、機能しません。なんでも書き換えられるスーパーユーザであるルートはもはや居ないという意味で、rootlessとも呼ばれています。
デフォルトではSIPは有効になっていますが、無効にすることもできます。実機の場合は、以下のようにします。
- リカバリーモードで起動します。
- ターミナルを起動して csrutil disableもしくはcsrutil enableと入力します。
- この後、再起動すれば、それぞれSIPが無効もしくは有効になります。
SIPに関してはこちらの記事に詳しく書いてあって参考になります。
Hackintoshでの対処方法
SIPが登場した時、Hackintoshが困難になるのではという予想もありました。でもCloverの開発者たちが頑張って対応してくれました。今では、Clover設定で、実機と同様に、SIPを有効にも無効にも自在に設定できます。HackintoshでSIPをどう設定して運用するか、対照的な2通りのアプローチがあるかと思います。
- SIPは無効にして自由自在にパッチを当てまくる
- macOSをバニラな状態に保ってSIPを有効にする
前者はSIP登場前と同様にmacOSに手を加えるアプローチです。後者のアプローチにある「バニラに保つ」方法の詳細は、以下をご覧ください。
バニラな方法では、Hackintoshに必要なファイルは、全てをシステムEFIシステムパーティション (ESP) に置きます。ESPはSIPの管轄外なのです。ここに置いたファイルは自在に書き換えられますし、ここに置いたkextファイルは、署名がなくても動きます。ESPは管理者アカウントなら自由にアクセスできるので、SIPの有効性を低下させてしまいますが、それでも、本体へのアタックはある程度は防げます。また、SIPを有効にできるかどうかは、システムがバニラに保たれているかどうかの指標にもなります。
CloverでのSIPの設定
起動時のClover設定画面でも一時的にSIP設定変更が可能です。
継続的に指定する場合はconfig.plistを編集します。config.plistのRtVariableセクションでSIP設定を変えられます。
<key>RtVariables</key> <dict> <key>CsrActiveConfig</key> <string>0x0</string> </dict>
ここで使う代表的なCsrActiveConfigの値は以下です。
- 0x0 = SIPを有効にする (デフォルト値)
- 0x3 = SIPを部分的に無効にする (署名されていないkextをロードする)
- 0x67 = SIPを完全に無効にする
現在の設定状態は、csrutil statusコマンドで知ることができます。手元のマシンだと、以下のようになっていました。有効になっているということです。
$ csrutil status System Integrity Protection status: enabled.
ちなみにRtVariablesキーでは、CsrActiveConfig以外にROMとかMLBとかBooterConfigの値を設定できますが、どれも今のCloverでは不要です。CsrActiveConfigだけが有効です。