Recently while performing some skunkworks testing in my personal lab, I came across a slew of documented and undocumented virtual machine .vmx configuration parameters. Using one of my favorite UNIX/Linux utility strings, I was able to uncover some interesting things in the /usr/lib/vmware/bin/vmware-vmx binary which is used to load a virtual machines configuration file.
Here are some of the interesting observations I have made:
vSphere is hypervisor aware?
%s: %s detected by CPUID
%s: VMware detected
Microsoft Hyper-V
%s: Xen detected by hypercall
Xen detected but hypervisor unrecognized (Xen variant?)
I noticed the following strings around detecting certain guest hypervisors, is this a hint that VMware is going to support other virtual "hypervisors", specifically Microsoft and Xen?
vSphere to support Mac OSX?
Linux Host
Windows Host
Mac OS Host
There were some text that listed the various types of host, including Mac OSX.
Make sure that you have installed all available Mac OS X software updates.
@&!*@*@(msg.cdrom.darwindisconnect)Your Mac OS guest is using this CD-ROM device. The safest way to disconnect this virtual CD-ROM is by pressing %s, then ej
ecting the media from inside the guest%s. To continue anyway, press %s.%s
@&!*@*@(msg.Backdoor.OsNotMacOSXServer)The guest operating system is not Mac OS X Server.
@&!*@*@(msg.cpuid.darwinWithBTHV)Mac OS X is not supported with software virtualization. Change the execution mode to automatic.
@&!*@*@(msg.cpuid.darwinWithBT)Mac OS X is not supported with software virtualization. To run Mac OS X you need a host on which %s supports hardware virtuali
zation.
isolation.bios.IsGOS.Darwin
There were some text that listed various messages regarding Mac OSX
sbios
vbios
bios440
efi32
efi64
nvram
lsibios
nbios
nxbios
nx3bios
e1000bios
vmibios
vmmmods
sas1068bios
pvscsibios
As you can see, there is mention of EFI support which is required to boot Mac OSX. Does this mean future version of vSphere will support virtualizing Mac OSX?
New guestOS types?
darwin10
darwin10-64
darwin-64
mandrake-64
opensuse
opensuse-64
winServer2008Cluster-32
winServer2008Cluster-64
winServer2008Datacenter-32
winServer2008Datacenter-64
winServer2008DatacenterCore-32
winServer2008DatacenterCore-64
winServer2008Enterprise-32
winServer2008Enterprise-64
winServer2008EnterpriseCore-32
winServer2008EnterpriseCore-64
winServer2008SmallBusiness-32
winServer2008SmallBusiness-64
winServer2008SmallBusinessPremium-32
winServer2008SmallBusinessPremium-64
winServer2008Standard-32
winServer2008Standard-64
winServer2008StandardCore-32
winServer2008StandardCore-64
winServer2008Web-32
winServer2008Web-64
XenVMMXenVMM
There was a section that I came across which listed all supported guestOS types, here you can see there have been a few more that were added between vSphere 4.0 and 4.1. One interesting thing that I am not sure if a lot of people have noticed, is the VirtualMachineGuestOsIdentifier in the vSphere API. This basically provides the guestos identifier that is supported in each release of VI/vSphere. Interesting enough, a darwin guestos support has been documented as of vSphere 4.0:
Though we all know we can not run Mac OSX on ESX(i) ... at least not just yet from what the above is hinting at.
These were just a few of the interesting things I found while parsing through the strings output when looking at the ESX 4.1's vmware-vmx binary.
Here is a collection of over 1200+ documented and undocumented .vmx configuration parameters.
http://https://s3.amazonaws.com/virtuallyghetto-download/hidden_vmx_params.html
Some of these hidden .vmx entries have been shared by the VMware and the community, here are just a few:
- http://www.virtuallyghetto.com/2010/10/how-to-control-maximum-number-of-vmware.html
- snapshot.maxSnapshots = Control the maximum number of VMware snapshots
- http://www.vcritical.com/2009/05/vmware-esx-4-can-even-virtualize-itself/
- monitor_control.restrict_backdoor = Run virtual ESX(i) hosts on top of ESX or ESXi
- http://vinf.net/2009/06/07/vsphere-cannot-enable-ft-for-a-nested-vm/
- replay.allowBTOnly = Allow FT to be enabled on vVM running on vESX(i)
- replay.allowBT = Allow FT to be enabled on vVM running on vESX(i)
- http://kb.vmware.com/kb/1010184
- cpuid.coresPerSocket = Specify the number of cores per physical socket
- http://www.sanbarrow.com/vmx/vmx-advanced.html