【问题标题】:which commands may i use to load i/o kit driver in terminal?我可以使用哪些命令在终端中加载 i/o 套件驱动程序?
【发布时间】:2012-04-03 21:12:17
【问题描述】:

我是新的内核编程者。我已经尝试加载这个驱动程序 3 天了。

我使用了很多命令来加载这个 kext 文件。但是每次问题都是

终端。请任何人帮助我。

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

发送到 IO 目录:

    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>

【问题讨论】:

标签: macos sdk iokit kernel-extension


【解决方案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 Driver 的 XCode 项目模板会为 info.plist 生成一个合理的起点 - 不要删除它提供的内容,只需扩展它即可。

我强烈建议您仔细阅读 Apple 的文档及其一些示例代码,并获取 recently released book by Halvorsen 及其 sample code (source code/downloads tab)。 (披露:我是这本书的审稿人之一;我没有收到版税或任何其他推荐它的奖励——这是唯一一本关于这个主题的最新书)

内核编程绝非易事,因此了解发生了什么很重要。

【讨论】:

  • 谢谢。我可以和你聊天吗
  • 我建议你发布你的 info.plist
  • ttp://www.apple.com/DTDs/PropertyList-1.0.dtd" rel="nofollow" target="_blank">apple.com/DTDs/PropertyList-1.0.dtd"> DriverCFBundleIdentifier com.Driver.${PRODUCT_NAME:rfc1034identifier} IOClass com_osxkernel_driver_DriverIOMatchCategory com_osxkernel_driver_DriverIOProviderClassIOResourcesIOResourceMatch IOKit
  • ttp://www.apple.com/DTDs/PropertyList-1.0.dtd" rel="nofollow" target="_blank">apple.com/DTDs/PropertyList-1.0.dtd"> com.apple.kpi.iokit 11.3.0com.apple.kpi.libkern 11.3.0
  • 在提供列表时,更新问题本身。这次我已经为你做了,但以后请努力。
猜你喜欢
  • 2012-04-02
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多