Як я можу змусити завантажувати кекс Mac OS X перед входом?


6

У мене є кекс, який я хотів би завантажувати під час запуску. Його не потрібно завантажувати особливо на початку процесу, але я хотів би, щоб він завантажувався перед тим, як користувач увійде в систему.

Суть, про яку йдеться, - InsomniaT, і, на відміну від драйвера пристрою, немає нічого, що автоматично вимагає завантаження її в ядро, тому просто поставивши його в / Система / Бібліотека / Розширення, нічого не зробить.

Який найкращий спосіб зробити це?


Чому б не додати kextдо /Library/Extensions, встановити дозволи до 755, а власник / група викорінити: wheel та відновити кеш ядра після завантаження?
Chealion

Я розумію, що він фактично не буде завантажений, якщо щось не вимагає. Тож я можу це зробити, але мені все одно залишається щось вимагати.
wfaulk

Відповіді:


6

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

Ви можете хотіти щось у цих рядках ... текст посилання


ваше посилання недійсне
Usman Nisar

1
Дякую Мані. Небезпека розміщення посилань, так ?! Відповідь wfaulk нижче superuser.com/a/47373 описує рішення, яке використовувало описуване,
Стів Фоллі

13

Посилання Стіва Фоллі є точним, але мати його тут:

Створіть файл-пліст (який є просто простим текстовим 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>

(Там є manpage, startd.plist (5), який визначає синтаксис файлів плістів LaunchDaemon.)

Потім я перетворив його у файл бінарного плістера лише для перевірки тривіального синтаксису:

plutil -convert binary1 com.domain.identifier.plist

Потім активуйте LaunchDaemon для запуску при запуску:

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

І переконайтесь, що він там:

launchctl list | grep com.domain.identifier

LaunchDaemon повинен працювати при запуску та завантажувати кекс.


1
plutilтакож є -lintможливість перевірки синтаксису, що також є параметром за замовчуванням для відсутність аргументів.
Буде Росс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.