web-dev-qa-db-ja.com

ログイン前にMacOS X kextを強制的にロードするにはどうすればよいですか?

起動時にロードしたいkextがあります。プロセスの特に早い段階でロードする必要はありませんが、ユーザーがログインする前にロードする必要があります。

問題のkextはInsomniaTであり、デバイスドライバーとは異なり、カーネルへのロードを自動的に要求するものはないため、/ System/Library/Extensionsに配置するだけでは何も起こりません。

これを行うための最良の方法は何ですか?

6
wfaulk

起動デーモンを使用して、起動時に/ sbin/kextloadを実行します。

あなたはこれらの線に沿って何かが欲しいかもしれません... リンクテキスト

6
Steve Folly

スティーブフォリーのリンクは正確ですが、ここにあります:

/ 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をロードする必要があります。

13
wfaulk