PXE Configuration
Refer to PXE-Linux-Boot-Server on how to set up a PXE server before continuing.
Create a directory in your tftproot to store the pxelinux files and copy some files.
mkdir -p /tftproot/vmware/pxelinux.cfg
cp /usr/share/syslinux/pxechn.c32 /tftproot/vmware/
This needs to be added to /tftproot/pxelinux.cfg/default for an entry to show up on your main boot screen.
LABEL vmwareesxi
MENU LABEL ^VMWare ESXi
COM32 /vmware/pxechn.c32
APPEND /vmware/pxelinux.0 -p /vmware/
For whatever reason, you can’t network boot VMWare ESXi with newer versions of SYSLINUX. You need an older version and chain load it. This is what the COM32 line does for you. You can download an older version of the pxelinux files here. Put all the files in your /tftproot/vmware directory. I have no idea what version of SYSLINUX it is, but it works. Just add that to your vmware directory.
Next, create the menu loaded by the second menu screen in /vmware/pxelinux.cfg/default
display menu
UI menu.c32
PROMPT 0
MENU TITLE PXE SERVER
TIMEOUT 150
TOTALTIMEOUT 900
LABEL esxi70
MENU LABEL ^VMWare ESXi 7.0
KERNEL esxi70/mboot.c32
APPEND -c esxi70/boot.cfg
IPAPPEND 2
ESXi Files
Create the destination directory.
mkdir /tftproot/vmware/esxi70
Create a temporary directory, mount the ESXi ISO on it, copy the files over, and clean up. You will have to obtain the ISO from VMware. It should be free, you just have to create an account first. https://www.vmware.com/go/get-free-esxi
mkdir vmtemp
mount VMware-VMvisor-Installer-7.0.0-15843807.x86_64.iso vmtemp
cp -r vmtemp/* esxi70/
umount vmtemp
rm -rf vmtemp
Modify the prefix= line in /tftproot/vmware/esxi70/boot.cfg file to read.
prefix=esxi70
Remove all the slashes from the file.
sed -i 's/\///g' /tftproot/vmware/esxi70/boot.cfg