Como posso forçar um kext do Mac OS X a carregar antes do login?

6

Eu tenho um kext que gostaria de ser carregado no tempo de inicialização. Ele não precisa ser carregado particularmente no início do processo, mas eu gostaria que ele fosse carregado antes de um usuário efetuar login.

O kext em questão é InsomniaT e, ao contrário de um driver de dispositivo, não há nada que vá solicitar automaticamente que ele seja carregado no kernel, portanto, apenas colocá-lo em / System / Library / Extensions não fará nada .

Qual é a melhor maneira de fazer isso?

    
por wfaulk 26.09.2009 / 17:47

2 respostas

6

Use um daemon de inicialização para executar o / sbin / kextload na inicialização.

Você pode querer algo nesse sentido ... texto do link

    
por 26.09.2009 / 18:07
13

O link de Steve Folly é preciso, mas para tê-lo aqui:

Crie um arquivo plist (que é apenas um documento XML de texto simples) chamado algo como com.domain.identifier.plist em / Library / LaunchDaemons com conteúdo semelhante a este:

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

(Há uma página de manual, launchd.plist (5) que especifica a sintaxe dos arquivos plist do LaunchDaemon.)

Eu então converti-o em um arquivo binário plist apenas para uma verificação de sintaxe trivial:

plutil -convert binary1 com.domain.identifier.plist

Em seguida, ative o LaunchDaemon para ser executado na inicialização:

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

E verifique se está lá:

launchctl list | grep com.domain.identifier

O LaunchDaemon deve ser executado na inicialização e carregar o kext.

    
por 27.09.2009 / 02:16