Свойства Info.plist для расширений ядра
Это приложение описывает свойства, которые можно использовать для kext’s Info.plist
файл.
Свойства верхнего уровня
CFBundleIdentifier
свойство однозначно определяет Ваш kext. Два kexts с тем же значением для этого свойства не могут оба быть загружены в ядро. Значение для этого свойства должно быть в формате обратного DNS, напримерcom.MyCompany.driver.MyDriver
для драйвера Набора I/O илиorg.MyCompany.kext.MyKext
для универсального kext.Это свойство требуется.
CFBundleExecutable
свойство указывает имя исполняемого кода Вашего kext. XCode автоматически создает и заполняет это значение правильно для всех kext проектов, таким образом, Вы не должны должны быть изменять его.Если Ваш kext содержит исполнимую программу, это свойство требуется. При разработке codeless kext не включайте это свойство.
CFBundleVersion
свойство указывает версию Вашего kext. Номера версий Kext должны придерживаться строгого формата:Номер версии разделен на три части к периодам, например
3.1.2
.Первое число представляет новую главную версию, второе число представляет новую значительную версию, и третье число представляет новое незначительное исправление ошибки.
Первое число ограничивается четырьмя цифрами; вторые и третьи числа ограничиваются двумя цифрами каждый.
Если значение третьего числа
0
, можно опустить его и второй период.При разработке новой версии kext включайте суффикс после числа, обновляющегося, например
3.1.3a1
.Буква в суффиксе представляет этап развития, в котором находится новая версия (разработка, альфа, бета или заключительный кандидат, представленный
d
,a
,b
, иfc
), и число в суффиксе является версией сборки. Версия сборки не может быть0
или превысьте255
.При выпуске новой версии kext удостоверьтесь, что удалили суффикс.
Это свойство требуется.
OSBundleLibraries
свойство является словарем, перечисляющим библиотеку kexts, против которого соединяется Ваш kext.Каждый элемент в словаре состоит из пары ключ/значение. Ключом является CFBundleIdentifier зависимости (такой как
com.apple.kernel.mach
), и значение является требуемой версией зависимости. Когда kext собирается быть загруженным, требуемая версия каждого элемента вOSBundleLibraries
словарь по сравнению с текущими и совместимыми версиями зависимости. Если требуемая версия находится между текущей версией зависимости иOSBundleCompatibleVersion
значение, kext и его зависимости считают совместимыми.Вы определяете kexts для добавления с
kextlibs
инструмент командной строки (см., Определяет Зависимости Kext).Если Ваш kext содержит исполнимую программу, это свойство требуется.
Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
OSBundleRequired
свойство сообщает системе, что Ваш kext должен быть доступен для загрузки во время ранней начальной загрузки. Kexts, не устанавливающие это свойство, не могут загрузиться во время ранней начальной загрузки. Можно указать одно из следующих значений для этого свойства:Этот kext требуется, чтобы монтировать корень, независимо от того, куда корень прибывает из — например, драйверы платформы и семьи, PCI или USB.
Этот kext требуется, чтобы монтировать корень на удаленном объеме — например, сетевая семья, драйверы Ethernet или NFS.
Этот kext требуется, чтобы монтировать корень на локальном томе — например, семейство систем хранения, дисковые драйверы или файловые системы.
Этот kext требуется, чтобы предоставлять символьную консольную поддержку (однопользовательский режим) — например, драйверы клавиатуры или семья ADB.
Этот kext требуется даже во время безопасной начальной загрузки (ненужные отключенные расширения) — например, драйверы мыши или графические драйверы.
Root
Network-Root
Local-Root
Console
Safe Boot
Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
OSBundleCompatibleVersion
свойство используется, чтобы позволить соединиться против kext как библиотека. Это указывает самую старую версию Вашей библиотеки kext, который другой kexts может соединить против и все еще использовать текущую версию успешно.Необходимо постепенно увеличить значение этого свойства при удалении символа из библиотеки, или когда изменение семантики экспортируемого символа достаточно значительно для влияния на совместимость на уровне двоичных кодов.
Формат этого значения совпадает с форматом
CFBundleVersion
.Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
OSBundleAllowUserLoad
свойство позволяет некорневым пользователям загружать Ваш kext. Используя это свойство не рекомендуется.Драйверы Набора I/O никогда не должны включать это свойство, потому что они загружаются ядром, когда они необходимы.
Укажите булево значение истины для включения этой опции.
Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
OSBundleEnableKextLogging
свойство указывает, что журналирование информации, определенной для Вашего kext, должно быть зарегистрировано журнал ядра (доступный в/var/log/kernel.log
).kextutil
инструмент автоматически включает этой опции помочь с отладкой. Укажите булево значениеtrue
включить эту опцию. Посмотритеkext_logging
для получения дополнительной информации.Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
IOKitPersonalities
свойство используется драйверами Набора I/O. Это - вложенный словарь информации, описывающей аппаратные средства, которыми может управлять драйвер.Посмотрите Свойства IOKitPersonalities для списка свойств для включения в
IOKitPersonalities
словарь.Посмотрите Лица Драйвера и Соответствие Языков в Основных принципах IOKit для получения дополнительной информации о лицах.
Это свойство требуется для драйверов Набора I/O.
Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
CFBundleIdentifier
CFBundleExecutable
CFBundleVersion
OSBundleLibraries
OSBundleRequired
OSBundleCompatibleVersion
OSBundleAllowUserLoad
OSBundleEnableKextLogging
IOKitPersonalities
Свойства IOKitPersonalities
IOClass
свойство называет класс C++ для инстанцирования от драйвера, когда это соответствует на куске.IOKitDebug
свойство указывает, что I/O Специфичные для набора события, такие как присоединение, соответствие и зондирование должен быть зарегистрирован журнал ядра (доступный в/var/log/kernel.log
). Значение этого свойства определяет, какие события регистрируются. Для журналирования всей релевантной информации указать65535
как значение. ПосмотритеIOKitDebug.h
(доступный в/System/Library/Frameworks/Kernel.framework/Headers/IOKit
) для детализированных значений журналирования.IOProviderClass
свойство называет класс C++ объекта устройства Набора I/O, на котором соответствует Ваш драйвер. Это обычно - кусок, управляющий портом, с которым соединяется Ваше устройство. Например, если Ваш драйвер соединяется с шиной PCI, необходимо указатьIOPCIDevice
как Ваш водительский класс провайдера.IOMatchCategory
свойство позволяет многократным драйверам с уникальными значениями для свойства соответствовать на том же классе провайдера. Как правило, только один драйвер может соответствовать на данном классе провайдера. Включайте это свойство, если Вы соответствуете наIOResources
или на порту с многократными устройствами, присоединенными к нему. Значение для этого свойства должно совпасть со значением дляCFBundleIdentifier
, с периодами, замененными подчеркиваниями (например,com_MyCompany_driver_MyDriver
).IOResourceMatch
свойство позволяет Вам объявлять зависимость между своим драйвером и определенным ресурсом, таким как ядро BSD или определенный ресурс на устройстве, как аудио видеоразъем. При обеспечении этого свойства драйвер не загрузится в ядро, пока указанный ресурс не будет доступен.
IOClass
IOKitDebug
IOProviderClass
IOMatchCategory
IOResourceMatch
Архитектурно-зависимые свойства
Верхний уровень kext Info.plist
начинающиеся свойства OS
или IO
имейте архитектурно-зависимые версии, которые можно использовать для дифференциации поведения kext на различной архитектуре. Для указания архитектурно-зависимого свойства добавьте подчеркивание, сопровождаемое именем архитектуры к имени свойства, например, OSBundleCompatibleVersion_x86_64
или OSBundleCompatibleVersion_i386
. Удостоверьтесь, что удержали основное свойство Ваш Info.plist
файл для назад совместимости.