Comment by spijdar
3 hours ago
Yes, you're right! I'm just dolt who's never checked what a .kext on OS X actually is.
I had been under the impression that DriverKit drivers were quite a different beast, but they're really not. Here's the layout of a NS ".config" bundle:
./CG6FrameBuffer.config/English.lproj
./CG6FrameBuffer.config/English.lproj/Info.rtf
./CG6FrameBuffer.config/English.lproj/Localizable.strings
./CG6FrameBuffer.config/CG6FrameBuffer_reloc
./CG6FrameBuffer.config/Default.table
./CG6FrameBuffer.config/Display.modes
./CG6FrameBuffer.config/CG6FrameBuffer
The driver itself is a Mach-O MH_OBJECT image, flagged with MH_NOUNDEFS. (except for the _reloc images, which are MH_PRELOAD. No clue how these two files relate/interact!)
Now, on OS X:
./AirPortAtheros40.kext/Contents
./AirPortAtheros40.kext/Contents/_CodeSignature
./AirPortAtheros40.kext/Contents/_CodeSignature/CodeResources
./AirPortAtheros40.kext/Contents/MacOS
./AirPortAtheros40.kext/Contents/MacOS/AirPortAtheros40
./AirPortAtheros40.kext/Contents/Info.plist
./AirPortAtheros40.kext/Contents/version.plist
OS X added a dedicated image type (MH_KEXT_BUNDLE) and they cleaned up a bit, standardized on plists instead of the "INI-esque" .table files, but yeah, basically the same.
No comments yet
Contribute on Hacker News ↗