This is an old revision of the document!
You can replace the default VMware PXE ROM with an iPXE ROM, which will enable you to boot your virtual machine via HTTP, iSCSI, AoE, or any other protocol supported by iPXE.
VMware is capable of emulating several network adapters:
VMware name | iPXE driver name | PCI vendor:device IDs | iPXE ROM image |
---|---|---|---|
e1000 | e1000 | 8086:100f | 8086100f.mrom |
e1000e | e1000e | 8086:10d3 | 808610d3.mrom |
vlance | pcnet32 | 1022:2000 | 10222000.rom |
vmxnet | (not supported) | 15ad:0720 | |
vmxnet3 | vmxnet3 | 15ad:07b0 | 15ad07b0.rom |
Select one of the supported network adapters, and ensure that your virtual machine is configured to use this adapter. You can do this by editing the .vmx file that defines your virtual machine, and changing the setting
ethernet0.virtualDev
For example, to select an e1000 network adapter:
ethernet0.virtualDev = "e1000"
Download iPXE and then build ROM images for all of the supported network adapters using:
make bin/8086100f.mrom bin/808610d3.mrom bin/10222000.rom bin/15ad07b0.rom
Copy the iPXE ROM images 8086100f.mrom
, 808610d3.mrom
, 10222000.rom
and 15ad07b0.rom
to a suitable location (e.g. to the directory /usr/lib/vmware/resources/
).
Edit the .vmx file that defines your virtual machine, and add the following lines:
ethernet0.opromsize = 262144 e1000bios.filename = "/usr/lib/vmware/resources/8086100f.mrom" e1000ebios.filename = "/usr/lib/vmware/resources/808610d3.mrom" nbios.filename = "/usr/lib/vmware/resources/10222000.rom" # nxbios.filename = "" nx3bios.filename = "/usr/lib/vmware/resources/15ad07b0.rom"
(replacing /usr/lib/vmware/resources/
with the name of the directory to which you copied the iPXE ROM images).