Only Apple kexts may link against com.apple.kpi.private

how to link com.apple.kpi.private, to the custom kernal extention

Replies

Yes, it's possible, but with several conditions:

Extension 'com.foo.bar' has invalid properties: [Linking com.apple.kpi.private requires an Apple kext (ANY OF: [ALL OF: [ANY OF: [Property CFBundleGetInfoString must have valid Apple copyright string, Property NSHumanReadableCopyright must have valid Apple copyright string], Property 'CFBundleIdentifier' should have type String with prefix: com.apple], Properties under OSBundleLibraries must satisfy: [Property 'com.apple.kpi.private' should be absent]])]" UserInfo={NSLocalizedDescription=Validating extension failed: Kext com.banana.ntfs-mod v1.1.1 in executable kext bundle com.banana.ntfs-mod at ***:

  1. You should have "com.apple" prefixed bundle id
  2. You should have "Copyright © 2002-2015 Apple Inc. All rights reserved." copyright string in 'CFBundleGetInfoString' key of your 'Info.plist'
  3. Finally, you can link against private KPIs in your info.plist by adding "com.apple.kpi.private" in OSBundleLibraries.

But if you try to load your kext, you will get an error from kernelmanagerd saying, "kernelmanagerd apple-prefixed bundle found without explicit auxiliary collection load requirement: Kext com.foo.barv1.1.1 in executable kext bundle com.foo.bar at /Library/Extensions/***.kext".

This means your kext is not been approved by the user. Apple-prefixed kext will not trigger a user consent as 3rd party kext does.