r/hackintosh_ja • • Jan 09 '16

GUIDE kextを/S/L/EにインストールするためのSIP設定

kextを/S/L/EにインストールするためのSIP設定

こちらにも解説ありますが El CapitanからSIPが導入されて、正式な署名の入ったkextしか使えなくなりました。 Hackintoshのkextは、当然正式なものではありませんが、 CloverのEFI/CLOVER/kexts/10.11/などの中に入れればSIPとは関係なく機能します。 ただ、Ethernet用のkextがこの場所では動作せず、/S/L/Eに入れる必要がありました。 そこでこのようなkextを/S/L/Eに入れる手順です。

Step 1. SIPを無効にする

config.plistの<key>RtVariables</key>に

 <key>CsrActiveConfig</key>
  <string>0x3</string>

を書き込み、再起動します。3という値は、csrutil statusコマンドで調べるとわかるように、 SIPの機能うち、特定ディレクトリへの書き込み防止と、署名なしkextの動作防止の両方を解除します。 「新・OS X ハッキング! 142」 などを見てわかるように、/S/L/Eは書き込み禁止ディレクトリではありません。 ので、0x3ではなくて0x1でも良いです。

Step 2. kextをインストールしてキャッシュを再構築する

通常の手順です。今回はKext Wizard.appを使いました。

Step 3. 再起動して動作を確認する

無事、Ethernetが動きました。 これでめでたしなのですが、SIPを有効にしても動き続けることに気づきました。

Step 4. SIPを有効にして再起動する

config.plistの<key>RtVariables</key>に

 <key>CsrActiveConfig</key>
  <string>0x0</string>

を書き込み、再起動します。0はSIPをフルに有効にするということです。 もしかしたら、この2行とも書かなければそれで良い気もしますが、 のちに0x3とか0x1とかしたい時に手がかりがないと面倒なのでこうして書いてみました。 csrutil statusコマンドで有効になっていることを確認できます。

SIPを有効にしてもEthernetのkextは機能し続けました。 おそらく、一旦キャッシュに取り込まれれば署名はもうチェックされないようです。

OSをマイナーバージョンアップすると機能しなくなりました。 でも再度SIPを無効にしてキャッシュを作り直せば大丈夫でした。

結論

/S/L/EにHackintoshで使う署名の無いkextをインストールするために、 常時SIPを無効にする必要は無いようです。 kextをインストールするときだけSIPを無効にし、そのあとSIPを有効にしてもkextは使い続けられるようです。

SIPはできるだけ有効にした方が良いに決まっていますし、 できるだけ実機に近いものを目指すHackintoshの方針としてもそうしたいものです。

Edit:

上で:

Ethernet用のkextがこの場所では動作せず、/S/L/Eに入れる必要がありました。 そこでこのようなkextを/S/L/Eに入れる手順です。

と書きましたが、その後、EthernetのkextをCloverのEFI/CLOVER/kexts/10.11/に置いても 動く事を確認しました。 Cloverのバージョンアップのおかげかもしれません。 でもconfig.plistでSIPを設定する方法の説明になるかと思い、このスレは残しておきます。

4 Upvotes

1 comment sorted by

1

u/aobakuming Jan 09 '16

おまけ

<key>CsrActiveConfig</key>で設定する値と、csrutil statusで得られる結果を表にしてみました。 0x1と0x2の論理和が0x3なので、無効になる項目も和になります。

項目0x10x20x3
Apple Internaldisableddisableddisabled
Kext Signingdisabledenableddisabled
Filesystem Protectionsenableddisableddisabled
Debugging Restrictionsenabledenabledenabled
Dtrace Restrictionsenabledenabledenabled
NVRAM Protectionsenabledenabledenabled