Bug Fix: Deploying OSX VMs to a Single ESXi Host via Embedded Host Client
Thanks to one of our customers, we recently discovered an issue with the VMware ESXi host client that has the potential to affect many MacStadium users (and others running ESXi 6.0 U2 on Apple Mac computers). VMware recently released ESXi 6.0 U2 and with it came the general availability of a HTML5-based web client for managing single-node ESXi installations.
This client is a boon for many MacStadium customers that take advantage of a single quad-core Mac mini or a Mac Pro for virtualizing OS X as they can now access the ESXi host from any device through a web browser. Previously a Windows installation was required to manage ESXi through a Windows desktop application. That meant customers with local Mac hardware had difficulty accessing their ESXi installation directly (save for a number of possible solutions we've written about previously).
After a customer brought our attention to the problem, we were quick to verify it on several clean installations of ESXi 6.0 U2. We reached out to VMware and they were quick to respond and then verify the existence of this issue. Their team explained how to workaround the issue until a fix is implemented in a future release of VMware ESXi and the embedded Host Client. With the information from VMware, we've developed a step-by-step guide for resolving this issue on affected systems.
With a single, deployed ESXi host (on Apple hardware) running VMware ESXi 6.0 U2 (without the vCenter appliance) using the newly-included VMware Host Client, it is not possible to complete the installation of OS X on a virtual machine. The VM will hang on boot. This is not an issue when using the Windows-based vSphere client.
The solution involves a simple seven step procedure that should take less than 5 minutes and is fairly simple to follow for even novice VMware users.
From the virtual machine page, power off the virtual machine that is hanging on boot. We’ll be editing it which isn’t possible while it’s running.
Right-click the virtual machine and select Edit Settings.
Then select the VM Options tab at the top.
Expand the Advanced settings menu and select Edit Configuration at the Configuration Parameters heading.
A new window will appear with a list of pre-existing parameters.
Select the ‘Key’ column heading to sort all entries alphabetically. Scroll down and look for an smc.present key already exists. If not, skip to Step 7.
If the smc.present key is present and it’s value is false, change the value to true.
If the smc.present key is not present, select Add parameter at the top of the window to create it.
Fill in smc.present for the Key field and true for the Value field as seen in the above image then select Add.
Verify the newly-added smc.present key is present in the Configuration Parameters list; you may need to use the Refresh button at the top.
Select OK after confirmation and save the VM settings.
You should now be able to start the OS X virtual machine and complete the installation process.
Conclusion and Explanation
Why is smc.present necessary? The smc.present key tracks the existence of the Apple System Management Controller (SMC). The SMC has a wide range of low-level system functions, but in this case it is in place to enforce the Mac OS X End-user license agreement and ensure the system is running on genuine Apple hardware.
By adding the smc.present key to the VM with a true value, we are telling the virtual machine to run its checks against the hardware. The SMC within the virtual machine will verify that the ESXi host hardware is an Apple Mac computer (always true at MacStadium) and let the VM continue booting.
Because the VMware ESXi Host Client is a brand new addition to VMWare ESXi, it’s expected that bugs and/or missing features may still be found. We’re glad to have figured this out while working with the VMware team as many of our customers are now taking advantage of VMware ESXi 6.0 U2 and may be running into this issue. An update is planned by VMware that will include this key in future versions of the ESXi Host Client for anyone affected by the issue.