0
votes

i am new kernel programming.i have been trying to load this driver program for 3 days.

i used so many commands for load this kext file.but every time the problem is

terminal.please any one help me .

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 No kernel file specified;

using running kernel for linking.

/System/Library/Extensions/Driver.kext is invalid; can't resolve dependencies.

/System/Library/Extensions/Driver.kext is invalid; can't resolve dependencies.

/System/Library/Extensions/Driver.kext is invalid; can't resolve dependencies.

Diagnostics for /System/Library/Extensions/Driver.kext:

Validation Failures:

Info dictionary missing required property/value: 

    IOKitPersonalities.Driver.IOClass

Warnings:

Personality has no CFBundleIdentifier; the kext's identifier will be inserted when 

sending to the IOCatalogue:

    Driver

how to resolve the above program

Update: 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>
1
Looks like a direct follow-up of your own question: stackoverflow.com/questions/9769241/…. Please next time mention this so people would know that you've tried already.Rok Jarc

1 Answers

1
votes

The clue is here:

"Info dictionary missing required property/value: IOKitPersonalities.Driver.IOClass"

This means your Info.plist is incorrect as your driver's personality description is missing a class specification.

Have you worked through Apple's Creating a Device Driver with Xcode tutorial? The section Edit the Information Property List covers the minimum you need to know about this. The documentation on Driver and Device Matching goes into more detail.

Update:

Your info.plist has completely the wrong format. Take a look at this screenshot from the tutorial I linked above for the required hierarchy. The XCode project template for the I/O Kit Driver generates a sensible starting point for an info.plist - don't delete what it gives you, just extend it.

I strongly suggest you thoroughly read the documentation from Apple, some of their sample code, and get the recently released book by Halvorsen along with its sample code (source code/downloads tab). (disclosure: I was one of the reviewers of the book; I do not receive royalties or any other incentive for recommending it - it's the only up-to-date book on the subject)

Kernel programming is anything but easy, so it's important you understand what's going on.