7

I have a kext that I would like to be loaded at startup time. It doesn't need to be loaded particularly early in the process, but I would like it to be loaded before a user logs in.

The kext in question is InsomniaT, and, unlike a device driver, there is nothing that is automatically going to request that it be loaded into the kernel, so just putting it in /System/Library/Extensions won't do anything.

What's the best way to do this?

wfaulk
  • 6,307

2 Answers2

15

Steve Folly's link is accurate, but to have it here:

Create a plist file (which is just a plain text XML document) named something like com.domain.identifier.plist in /Library/LaunchDaemons with contents similar to this:

<!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>

(There's a manpage, launchd.plist(5) that specifies the syntax of LaunchDaemon plist files.)

I then converted it to a binary plist file just for some trivial syntax checking:

plutil -convert binary1 com.domain.identifier.plist

Then activate the LaunchDaemon to run at startup:

launchctl load -w /Library/LaunchDaemons/com.domain.identifier.plist

And check to make sure that it's in there:

launchctl list | grep com.domain.identifier

The LaunchDaemon should run at startup and load the kext.

wfaulk
  • 6,307
7

Use a launch daemon to run /sbin/kextload at start up.

You might want something along these lines... link text

Steve Folly
  • 7,403