Как я могу вынудить Mac OS X kext загрузиться до входа в систему?

У меня есть kext, что я хотел бы быть загруженным во время запуска. Это не должно быть загружено особенно рано в процессе, но я хотел бы, чтобы это было загружено, прежде чем пользователь войдет в систему.

kext рассматриваемым является InsomniaT, и, в отличие от драйвера устройства, нет ничего, что автоматически собирается запросить, чтобы он быть загруженным в ядро, поэтому просто поместив его в/System/Library/Extensions ничего не делал.

Что лучший способ состоит в том, чтобы сделать это?

6
задан 27.09.2009, 03:17

2 ответа

Используйте демона запуска для выполнения/sbin/kextload при запуске.

Вы могли бы хотеть что-то вдоль этих строк... текст ссылки

6
ответ дан 07.12.2019, 15:29

Ссылка Steve Folly точна, но иметь его здесь:

Создайте plist файл (который является просто XML-документом простого текста), назвал что-то как com.domain.identifier.plist в/Library/LaunchDaemons с содержанием подобным этому:

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

(Существует страница справочника, launchd.plist (5), который указывает синтаксис файлов LaunchDaemon plist.)

Я затем преобразовал его в двоичный файл 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
ответ дан 07.12.2019, 15:29

Теги

Похожие вопросы