This is a copy of my post at InsanelyMac which I will keep updated with new discoveries.
Here are some new VMX settings that will help you make OS X running in VMware look more like a real Apple Mac. I have only tested on Workstation 10 running on Windows 7, so I cannot guarantee that this will work with other VMware versions and OS. These settings may help overcome some issues such as running the Messages application. If you check the system details before making these changes this is what you can expect to see.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Hardware Overview: Model Name: Mac Model Identifier: VMware7,1 Processor Speed: 2.53 GHz Number of Processors: 2 Total Number of Cores: 2 L2 Cache (per Processor): 256 KB L3 Cache (per Processor): 12 MB Memory: 4 GB Boot ROM Version: VMW71.00V.0.B64.1308231723 SMC Version (system): 1.16f8 Serial Number (system): VMWVk21tM5F4+1Uty1UOSqjAQ Hardware UUID: 00000000-0000-1000-8000-000C292AA301 |
and from ioreg utility:
1 2 3 4 |
localhost:~ vmware$ ./system.sh VMware7,1 VMWVk21tM5F4+1Uty1UOSqjAQ 440BX Desktop Reference Platform |
Let’s swap these out for some genuine looking Apple settings.
Firstly, you need to have a running OS X guest and a copy of Chameleon Wizard to generate the relevant IDs. I also suggest you take a snapshot first just in case you make a mistake.
Step 1 – Create unique identifiers
This step is only needed if you do NOT want to pass the real hardware definitions to the guest OS.
Fire up your OS X guest and run the downloaded copy of Chameleon Wizard in the guest. We are not going to be using the Chameleon boot loader just using the wizard’s capability to generate various identifiers such as serial number and board-id.
Click on the SMBIOS button:
Select Edit:
Select a model and other parameters to generate a spoof ID:
In this example I have created a MacBook Pro 6.1 with a re-manufactured serial number. Please do not re-use these but generate your own to make sure everything you do is unique. The 3 pieces of information you need to copy to the host are:
- Product Name
- Board Product
- Serial
Now close down the guest ready for the next step.
Step 2 – Edit the VMX file
Open the VMX file for your guest in a text editor but make sure the guest is powered off.
If you want to pass all the properties of the real Apple hardware to the OS X guest then add these lines to the VMX file:
1 2 3 4 |
board-id.reflectHost = "TRUE" hw.model.reflectHost = "TRUE" serialNumber.reflectHost = "TRUE" smbios.reflectHost = "TRUE" |
If you want to spoof a different machine add the following lines using the example output from above:
1 2 3 4 5 6 7 |
board-id.reflectHost = "FALSE" board-id = "MAC-F22589C8" hw.model.reflectHost = "FALSE" hw.model = "MacBookPro6,2" serialNumber.reflectHost = "FALSE" serialNumber = "RM129481AGW" smbios.reflectHost = "FALSE" |
Make sure you do not have any duplicate lines or VMware will not load the guest and give you a dictionary error message. The “board-id.reflectHost ” is normally added from the new VM wizard and set to true so make sure you set it to false if passing fake details.
Save the VMX file start the guest.
Step 3 – Check the system
You should now be able to use the “System Information” application to see that the guest is using the product and serial number you specified.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Hardware Overview: Model Name: MacBook Pro Model Identifier: MacBookPro6,2 Processor Speed: 2.53 GHz Number of Processors: 2 Total Number of Cores: 2 L2 Cache (per Processor): 256 KB L3 Cache (per Processor): 12 MB Memory: 4 GB Boot ROM Version: VMW71.00V.0.B64.1308231723 SMC Version (system): 1.16f8 Serial Number (system): RM129481AGW Hardware UUID: 00000000-0000-1000-8000-000C292AA301 |
Here is a small script file which can be run from Terminal to get all 3 parameters. To use copy to the guest and make executable with chmod.
1 2 3 4 |
#!/bin/sh ioreg -l | awk '/product-name/ { split($0, line, "\""); printf("%s\n", line[4]); }' ioreg -l | awk '/IOPlatformSerialNumber/ { split($0, line, "\""); printf("%s\n", line[4]); }' ioreg -lp IOService | awk '/board-id/ { split($0, line, "\""); printf("%s\n", line[4]); }' |
Here is the output from the script showing the specified IDs.
1 2 3 4 |
localhost:~ vmware$ ./system.sh MacBookPro6,2 RM129481AGW MAC-F22589C8 |
Hope this helps.