Технические вопросы и ответы QA1319

Установка Набора I/O KEXT Без Перезагрузки

Q: Действительно ли возможно установить Набор I/O KEXT, не требуя перезапуска?

A: Нет никакого простого решения этой проблемы. В настоящее время даже собственные установщики Apple требуют перезапуска после установки KEXT. Вот то, почему это более сложно, чем это может казаться.

Если другой драйвер является в настоящее время соответствующим к Вашему устройству, тот драйвер должен быть разгружен сначала. Это поочередно означает, что не может использоваться устройство. Плюс, предпочтительный механизм для обновления списка системы известного KEXTs не существует в ранних выпусках Mac OS X.

Уделенный то внимание, вот логика, которую необходимо использовать:

После установки Вашего KEXT, выполненного touch команда на /System/Library/Extensions. Затем

Перечисление 1  , Определяющее, работает ли kextd.

/bin/ps -ax | /usr/bin/awk '{print $1" "$4}' | grep kextd | /usr/bin/awk '{print $1}'

Перечисление 2  , Отправляющее SIGHUP в kextd.

/bin/kill -1 `/bin/ps -ax | /usr/bin/awk '{print $1" "$4}' | grep kextd | /usr/bin/awk '{print $1}'`

Важно, чтобы Ваш сценарий установки справился со случаем где kextd не работает.

Вы могли бы задаться вопросом, можете ли Вы просто posix_spawn kextload загрузить Ваш KEXT. Этот подход имеет свои собственные ловушки. Если Вы работаете kextload но пользователь ожидает дольше, чем приблизительно минута для включения устройства, драйвер будет разгружен, и другой драйвер соответствия будет загружен для устройства вместо этого. И, даже если пользователь включит устройство быстро, если они отключат устройство позже, то Ваш драйвер будет все еще разгружен после минуты. Вы теперь вернулись к первой ситуации потому что kextd не знает о Вашем KEXT, если Вы загрузили его ручным использованием kextload. kextd перечисляет доступный KEXTs только согласно логике, представленной ранее.



История версии документа


ДатаПримечания
22.07.2011

Переформатированный и внес незначительные редакционные изменения. Добавленная информация о Mac OS X 10.5 и позже.

28.10.2003

Новый документ, описывающий состояние установки расширений ядра Набора I/O (KEXTs), не требуя перезапуска.