Tech: How to run ESX Server 3 on a VMware Workstation 6 virtual machine

Posted by Alessandro Perilli   |   Monday, June 11, 2007   |   13 Comments

Two VMTN users, Fabio Rapposelli and Dave Parsons, published several informations allowing to actually run a VMware ESX Server 3.x inside a VMware Workstation 6 virtual machine.

Obviously such configuration is not supported by VMware and is not really useful. But allows customers to have a look at ESX Server Console Operating System (COS) without deploying an intere enterprise infrastructure.

After some tests to cut away all unnecessary customizations, all needed steps can be summized below.


First of all you must create a new virtual machine with following virtual hardware requirements:

  • Workstation 6 virtual hardware type
  • Red Hat Linux guest OS type (guest OS type should be vmkernel but it's not implemented in VMware public products at today)
  • one or more SCSI hard drives (LSILogic type, for ESX Server 3.x compatibility)
  • one or more network cards
  • no USB ports or sound adapters

After that you have to manually modify your virtual machine configuration file (.vmx) to change your network card type. To do that replace similar entry with following one:

  • ethernet0.virtualDev = "e1000"

Finally, if you have an Intel VT powered CPU or an AMD SVM (or AMD-V) powered CPU you have to add to your .vmx file one of the following entries to improve performances:

  • monitor_control.vt32 = "TRUE" or
  • monitor_control.enable_svm = "TRUE"

Without one of these settings ESX Server virtual machine performances will be almost inacceptable: on a Intel P4 3.06GHz (no VT) host with 1024MB RAM assigned to virtual machine, the ESX Server 3.0.1 boot process takes 15 minutes (100% physical CPU spike for all time). Other host configurations may take hours to boot up same machine.

On any Intel VT powered host instead, ESX Server boots in 2-3 minutes, achieving similar times of installations on physical systems.


A final entry is reported as needed to avoid virtual machines inside ESX Server recognize they are running on a nested virtual infrastructure:

  • monitor_control.restrict_backdoor = "TRUE"

This setup is reported to work on new VMware Fusion beta as well. So Mac OS users can now familiarize with ESX Servers as well.


Read the original thread at source to know about further evolutions.

Number of readers of this thread (19,456 since June 11, with 106 replies at time of writing) reveals this is one of the most wanted features by VMware community. Capability to run ESX Server for demo and training purposes must be seriously considered by VMware in future ESX Server releases.

13 Comments

Anonymous Anonymous Tuesday, July 01, 2008 11:13:00 PM  
When I do this and startup the machine it automatically resets the networkcard type to "vlance" and then offcourse the installation says it cannot find a suitable networkcard.
Am I doing something wrong ?
Anonymous Anonymous Monday, July 07, 2008 11:15:00 PM  
I have the same "vlance" issue.
Anonymous Anonymous Tuesday, July 08, 2008 10:02:00 AM  
Shutdown vmware and change the file. File exit ...
Anonymous Anonymous Tuesday, August 26, 2008 8:01:00 PM  
you need remove the virtual machine from the favoriate, then click file-open to open edited vmx file
Anonymous Anonymous Wednesday, September 17, 2008 7:16:00 PM  
Thank you.. worked like a charm. As others have suggested -- To prevent vlance from being inserted instead of "e1000" - Make sure Workstation is closed and then proceed to exit the vmx file.
Blogger janrahman Thursday, November 20, 2008 4:11:00 PM  
I have 2 esxi servers running inside Vmware Virtual Server 1.5.
The performance is good.
I have Virtual centre installed on a windows 2003 VM.
I can add those 2 esxi hosts to the virtual centre.
When I create a vm (win xp prof) inside one of the esxi server and i start it for the installation, I get "you may not power on a virtual machine within a virtual machine" error.
I have added the following to the xp vmx file.
* monitor_control.vt32 = "TRUE" or
* monitor_control.enable_svm = "TRUE"
monitor_control.restrict_backdoor = "TRUE"

any work arounds pls help.
Anonymous Anonymous Friday, March 20, 2009 10:51:00 PM  
Thank for the great post!, I was able to install but I cannot make the ESXi server to work; it take a life to boot and load the required things. Unfortunately, I will have to install the package in a real workstation to see it working. Once again great post and tips.
Anonymous Anonymous Tuesday, March 24, 2009 5:30:00 PM  
janrahman,
its
monitor_control.restrict_backdoor = TRUE
no " "
cheers
www.compuday.co.za
Blogger mouradb Thursday, March 26, 2009 1:13:00 AM  
Hmm great stuf duds but now I;m stuck in an issue,
got a laptop and an hp desktop, these two supports VT and works like charm,
installed esx on VM workstation and now I'm having a performance issue,
on the way to boot, these ESX are stuck forever on the:
Starting vmKernel initialization...
Initializing memory...
Initializing chipset...
Initializing timing...
Initializing scheduler...

I got this issue a while back when i was using an esx on a phisical server and this Purpel screened and now got the same issue under esx.
Any idea? is this a resources misconfiguration?
please advise
Anonymous Anonymous Tuesday, April 07, 2009 7:40:00 AM  
Can't I use IDE HD?
Anonymous Anonymous Friday, April 17, 2009 8:36:00 PM  
Everything seems to be set right but the vm will only boot to PXE no matter how many time I change to boot order or even manually select CD drive by hitting esc. Any ideas on how to get it to not try pxe boot only??
Blogger Santosh Kumar panigrahi Monday, June 01, 2009 1:33:00 PM  
Hi All,
I have tried both the comibnations one after other
monitor_control.restrict_backdoor = "TRUE" and monitor_control.restrict_backdoor = TRUE (Without quotes suggested by someone - reply to janrahman post).

But still i am getting the error “you may not power on a virtual machine in a virtual machine”

Below is my .vmx file. Can someone please suggest any other work around this.

.encoding = "windows-1252"
config.version = "8"
virtualHW.version = "7"
vcpu.hotadd = "TRUE"
maxvcpus = "4"
scsi0.present = "TRUE"
scsi0.virtualDev = "lsilogic"
memsize = "1024"
scsi0:0.present = "TRUE"
scsi0:0.fileName = "ESX Server 3.5.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = "E:\VMware Setup\esx-3.5.0_Update_3-123630.iso"
ide1:0.deviceType = "cdrom-image"
floppy0.present = "FALSE"
ethernet0.present = "TRUE"
ethernet0.virtualDev = "e1000"
ethernet0.wakeOnPcktRcv = "FALSE"
ethernet0.linkStatePropagation.enable = "TRUE"
mks.enable3d = "TRUE"
pciBridge0.present = "TRUE"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
vmci0.present = "TRUE"
monitor.virtual_mmu = "software"
monitor.virtual_exec = "hardware"
monitor_console.restrict_backdoor = "true"
roamingVM.exitBehavior = "go"
displayName = "ESX Server 3.5"
guestOS = "rhel4-64"
nvram = "ESX Server 3.5.nvram"
virtualHW.productCompatibility = "hosted"
ft.secondary0.enabled = "TRUE"
tools.upgrade.policy = "useGlobal"

extendedConfigFile = "ESX Server 3.5.vmxf"

ethernet0.addressType = "generated"
uuid.location = "56 4d 32 e7 3d e9 19 ee-24 a7 e0 eb 3e e6 d5 69"
uuid.bios = "56 4d 32 e7 3d e9 19 ee-24 a7 e0 eb 3e e6 d5 69"
scsi0:0.redo = ""
vmotion.checkpointFBSize = "134217728"
pciBridge0.pciSlotNumber = "17"
pciBridge4.pciSlotNumber = "21"
pciBridge5.pciSlotNumber = "22"
pciBridge6.pciSlotNumber = "23"
pciBridge7.pciSlotNumber = "24"
scsi0.pciSlotNumber = "16"
ethernet0.pciSlotNumber = "32"
vmci0.pciSlotNumber = "33"
ethernet0.generatedAddress = "00:0c:29:e6:d5:69"
ethernet0.generatedAddressOffset = "0"
vmci0.id = "1055315305"

tools.remindInstall = "TRUE"

Thanks,
Santosh
Blogger Santosh Kumar panigrahi Thursday, June 04, 2009 8:26:00 AM  
Hello All,
Please ignore my last comment. It was a typo mistake.
I just typed console wrongly in place of control.

Thanks,
Santosh

Add New Comment