起動時にロードしたいkextがあります。プロセスの特に早い段階でロードする必要はありませんが、ユーザーがログインする前にロードする必要があります。
問題のkextはInsomniaTであり、デバイスドライバーとは異なり、カーネルへのロードを自動的に要求するものはないため、/ System/Library/Extensionsに配置するだけでは何も起こりません。
これを行うための最良の方法は何ですか?
起動デーモンを使用して、起動時に/ sbin/kextloadを実行します。
あなたはこれらの線に沿って何かが欲しいかもしれません... リンクテキスト
スティーブフォリーのリンクは正確ですが、ここにあります:
/ Library/LaunchDaemonsにcom.domain.identifier.plistのような名前のplistファイル(プレーンテキストのXMLドキュメント)を次のような内容で作成します。
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<false/>
<key>Label</key>
<string>com.domain.identifier</string>
<key>ProgramArguments</key>
<array>
<string>/sbin/kextload</string>
<string>/System/Library/Extensions/MyExtension.kext</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>StandardOutPath</key>
<string>/dev/null</string>
<key>UserName</key>
<string>root</string>
</dict>
</plist>
(LaunchDaemon plistファイルの構文を指定するmanページlaunchd.plist(5)があります。)
次に、簡単な構文チェックのために、それをバイナリplistファイルに変換しました。
plutil -convert binary1 com.domain.identifier.plist
次に、起動時に実行するLaunchDaemonをアクティブにします。
launchctl load -w /Library/LaunchDaemons/com.domain.identifier.plist
そして、それがそこにあることを確認してください:
launchctl list | grep com.domain.identifier
LaunchDaemonは起動時に実行され、kextをロードする必要があります。