I'm developing a kernel driver for a client who is selling it to a client who is selling it to the final customer. The final customer is not only 3 times removed from me contractually, but also many thousands of miles and a dozen time zones away. Therefore I have no direct access to their test environment.
Everything is testing fine on the several machines and several different versions of OS X that I'm testing with, and I cannot duplicate a few issues they appear to be experiencing.
I have a tiny suspicion that they may be testing on a hackintosh, and while I'm working on their reported issues from angles assuming that their test setup is correct, I would like to put my suspicion to rest by adding code to the next build which will help me understand if they are running on real Apple hardware or not.
Right now I'm collecting the system profile, kernel.log, console.log, and USB profile. If the answer can be found in one of those, that would be even better, but I'm assuming that it won't be so simple.
- What are my options for determining whether the computer my driver is running on consists of real Apple hardware or not?
Again, I have code both in user space and in the kernel, so I have complete access to the machine, though I'd prefer a user space solution. The user space code is running as root, and starts running at boot, before the apple logo shows. While it would be nice to support multiple versions of OS X, 10.6.8 is the specific version I need to target for this case.
I'm collecting the system_profiler output from them with each bug report, and I can compare the hardware reported with the list at EveryMac.
It would be nice if there were a better answer to do this in software without compiling my own database of Mac hardware, but that may be the most comprehensive way to accomplish this task in software. Probably the easiest method would be to interrogate the IO Registry for a few key pieces of hardware (video card, processor, etc) then once the data comes back have software locally that checks it against a database of known Apple hardware configurations.
For now I'm checking the system profile output by hand.