While most of the VMWare guest hardware is virtualized, the guest VM CPU reflects the same CPU
features the physical host CPU has.
This guide details the additional work that is needed to run OS X 10.8-10.12 with an AMD CPU under VMWare.
If your AMD CPU supports SSE3 and SSSE3 (and SSE4.1 for OS X 10.12):
The installation should be pretty simple:
1. Install VMWare Workstation 8.0.6 / 9.0.4 / 10.0.4 / Player 6.0.4.
2. Run VMWare Unlocker 1.3.0.
3. Prepare an installation ISO from the untouched 10.8 (Mountain Lion) DMG using dmg2img.
4. Create a new VM (select "Mac OS X 10.8" as the guest operating system).
5. Set your 'number of cores per processor' to 1 (the number of processors can be set to more than one).
6. A. For OS X 10.8-10.11:
Open the .vmx file of the virtual machine and add the following lines:
cpuid.0.eax="0000:0000:0000:0000:0000:0000:0000:1011"cpuid.0.ebx="0111:0101:0110:1110:0110:0101:0100:0111"cpuid.0.ecx="0110:1100:0110:0101:0111:0100:0110:1110"cpuid.0.edx="0100:1001:0110:0101:0110:1110:0110:1001"cpuid.1.eax="0000:0000:0000:0000:0000:0110:1111:0001"cpuid.1.ebx="0000:0010:0000:0001:0000:1000:0000:0000"cpuid.1.ecx="1000:0010:1001:1000:0010:0010:0000:0011"cpuid.1.edx="0000:1111:1010:1011:1111:1011:1111:1111"
(this will identify the guest CPU as an Intel Core 2 Merom, and will help you avoid the 'The CPU has been disabled by the guest operating system. Power off or reset the virtual machine.' error)
6. B. For OS X 10.12 Sierra:
cpuid.0.eax="0000:0000:0000:0000:0000:0000:0000:1011"cpuid.0.ebx="0111:0101:0110:1110:0110:0101:0100:0111"cpuid.0.ecx="0110:1100:0110:0101:0111:0100:0110:1110"cpuid.0.edx="0100:1001:0110:0101:0110:1110:0110:1001"cpuid.1.eax="0000:0000:0000:0001:0000:0110:0111:0001"cpuid.1.ebx="0000:0010:0000:0001:0000:1000:0000:0000"cpuid.1.ecx="1000:0010:1001:1000:0010:0010:0000:0011"cpuid.1.edx="0000:1111:1010:1011:1111:1011:1111:1111"
(this will identify the guest CPU as an Intel Core 2 Penryn which supports SSE4.1)
7. If your Hardware compatibibility is set to Workstation 9.0 (virtualHW.version = "9") or 10, you must also add the following line:
featureCompat.enable = "FALSE"
8. You can now boot from the ISO and proceed with the installation.
9. Even though I could complete the installation without a hitch with my A8-5600K, a few applications consistently crashed (e.g. Grapher), this was resolved by replacing the kernel with a modified kernel that emulates all missing SSE3 / SSSE3 instructions (see below).
If your AMD CPU does not support SSSE3:
You need to replace the kernel with one that has SSSE3 emulation (see below),
the easiest way to do it is to use another computer that has SSSE3 to create the virtual disk and replace the kernel.
1. After you have a working OS X machine, update to 10.8.5, make a copy of the virtual disk and attach it to the same VM.
2. Change the os settings to show hidden files (see here), and delete the hidden 'mach_kernel' from the root folder of the attached disk.
(alternatively, use the terminal to perform this, e.g. 'sudo chflags nohidden mach_kernel' or 'sudo rm mach_kernel')
3. Put the modified kernel (see below) instead of the one you just deleted (use the same file name).
4. Delete the old kernel cache by deleting the content of the '/System/Library/Caches/com.apple.kext.caches/' directory.
5. Optionally: hide back the kernel (with 'sudo chflags hidden mach_kernel').
6. Create a new VM, update the .vmx files to include the 8 cpuid.* lines from above.
7. You can now use the attached disk to boot OS X 10.8.5 from a VM hosted with an older AMD CPU that does not support SSSE3.
Tested With A8-5600K, A8-3850 and VMWare Workstation 8.0.6 / 9.0.4 / 10.0.4 / Player 6.0.4
Modified Kernel:
For your convenience, I have created a modified 10.8.5 kernel (a.k.a. xnu-2050.48.11) specifically to be used with VMWare, and attached it to this post.
The only modification to this kernel is that it includes OpEmu3, the SSE3 and SSSE3 emulator created by Sinetek and AnV (thanks guys!).
This emulator is only used when necessary (i.e. if your CPU support a specific instruction, the emulator will not be used to execute it).
إرسال تعليق