我是新的内核编程。我一直在尝试加载这个驱动程序3天。
我使用了很多命令加载这个kext文件。但每次问题都是
终端。请任何人帮助我。ensiss-Mac-mini:〜ensis $ sudo su
sh-3.2#chown -R root:wheel /System/Library/Extensions/Driver.kext
sh-3.2#kextutil -n -t /System/Library/Extensions/Driver.kext没有指定内核文件;
使用正在运行的内核进行链接。
/System/Library/Extensions/Driver.kext无效;无法解决依赖关系。
/System/Library/Extensions/Driver.kext无效;无法解决依赖关系。
/System/Library/Extensions/Driver.kext无效;无法解决依赖关系。
/System/Library/Extensions/Driver.kext的诊断:
验证失败:
Info dictionary missing required property/value:
IOKitPersonalities.Driver.IOClass
警告:
Personality has no CFBundleIdentifier; the kext's identifier will be inserted when
发送到IOCatalogue:
Driver
如何解决上述程序
更新:Info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "apple.com/DTDs/PropertyList-1.0.dtd">;
<plist version="1.0">
<dict>
<key>Driver</key>
<dict>
<key>CFBundleIdentifier </key>
<string>com.Driver.${PRODUCT_NAME:rfc1034identifier}</string>
<key>IOClass </key>
<string>com_osxkernel_driver_Driver</string>
<key>IOMatchCategory </key>
<string>com_osxkernel_driver_Driver</string>
<key>IOProviderClass</key>
<string>IOResources</string>
<key>IOResourceMatch </key>
<string>IOKit</string>
</dict>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "apple.com/DTDs/PropertyList-1.0.dtd">;
<plist version="1.0">
<dict>
<key>com.apple.kpi.iokit </key>
<string>11.3.0</string>
<key>com.apple.kpi.libkern </key>
<string>11.3.0</string>
</dict>
</plist>
答案 0 :(得分:1)
线索在这里:
“信息字典缺少必需的属性/值:IOKitPersonalities.Driver.IOClass”
这意味着您的Info.plist不正确,因为您的驱动程序的个性描述缺少类规范。
您是否参与过Apple的Creating a Device Driver with Xcode教程? Edit the Information Property List部分涵盖了您需要了解的最低限度。 Driver and Device Matching上的文档更详细。
<强>更新强>
您的info.plist格式完全错误。从我上面链接的教程中查看this screenshot以获取所需的层次结构。 I / O Kit驱动程序的XCode项目模板为info.plist生成一个明智的起点 - 不删除它给你的内容,只需扩展它。
我强烈建议您仔细阅读Apple的文档,其中一些示例代码,并获取recently released book by Halvorsen及其sample code (source code/downloads tab)。 (披露:我是这本书的评论者之一;我没有收到版税或任何其他推荐它的奖励 - 这是关于这个主题的唯一最新书)
内核编程绝非易事,因此了解正在发生的事情非常重要。