## Description This HowTo describes the setup of an UEFI HTTP server to network boot from. ## ✅Requirements - Debian OS - DHCP Server ## 📃Instructions ### Installing Nginx ```bash sudo apt install nginx ``` ### Setting up Nginx Create a folder structure where you want to host the installation files ```bash mkdir -p /srv/http/boot ``` Edit nginx config ```bash vim /etc/nginx/sites-available/default ``` create some locations ```bash server { listen 80; server_name _; location / { root /srv/http/; index index.html; } location /boot/ { alias /srv/http/boot/; } location /test/ { alias /srv/http/test/; } } ``` restart nginx service ```bash sudo systemctl restart nginx ``` ### Adding the ESXi ISO copy the ESXi iso to the nginx boot directory and extract it > [!warning] Warning > the iso must have the .iso extension, otherwise the files will be all upper case. ```bash cp /tmp/download-4.ISO /srv/http/boot/ ``` ```bash 7z x /srv/http/boot/download-4.ISO ``` remove all `/` characters inside the `kernel=` and `module=` part inside `/srv/http/boot/efi/boot/boot.cfg` and add the http base url of the boot directory to the prefix ```bash vim /srv/http/boot/efi/boot/boot.cfg ``` The config should then look like this: ```bash # /srv/http/boot/efi/boot/boot.cfg bootstate=0 title=Loading ESXi installer timeout=5 prefix=http://192.168.99.10/boot kernel=b.b00 kernelopt=runweasel cdromBoot modules=jumpstrt.gz --- useropts.gz --- features.gz --- k.b00 --- uc_intel.b00 --- uc_amd.b00 --- uc_hygon.b00 --- procfs.b00 --- vmx.v00 --- vim.v00 --- tpm.v00 --- sb.v00 --- s.v00 --- atlantic.v00 --- bcm_mpi3.v00 --- bnxtnet.v00 --- bnxtroce.v00 --- brcmfcoe.v00 --- cndi_igc.v00 --- dwi2c.v00 --- elxiscsi.v00 --- elxnet.v00 --- i40en.v00 --- iavmd.v00 --- icen.v00 --- igbn.v00 --- intelgpi.v00 --- ionic_cl.v00 --- ionic_en.v00 --- irdman.v00 --- iser.v00 --- ixgben.v00 --- lpfc.v00 --- lpnic.v00 --- lsi_mr3.v00 --- lsi_msgp.v00 --- lsi_msgp.v01 --- lsi_msgp.v02 --- mtip32xx.v00 --- ne1000.v00 --- nenic.v00 --- nfnic.v00 --- nhpsa.v00 --- nipmi.v00 --- nmlx5_cc.v00 --- nmlx5_co.v00 --- nmlx5_rd.v00 --- ntg3.v00 --- nvme_pci.v00 --- nvmerdma.v00 --- nvmetcp.v00 --- nvmxnet3.v00 --- nvmxnet3.v01 --- pvscsi.v00 --- qcnic.v00 --- qedentv.v00 --- qedrntv.v00 --- qfle3.v00 --- qfle3f.v00 --- qfle3i.v00 --- qflge.v00 --- rdmahl.v00 --- rshim_ne.v00 --- rshim.v00 --- rste.v00 --- sfvmk.v00 --- smartpqi.v00 --- vmkata.v00 --- vmksdhci.v00 --- vmkusb.v00 --- vmw_ahci.v00 --- bmcal.v00 --- clusters.v00 --- crx.v00 --- drivervm.v00 --- elx_esx_.v00 --- btldr.v00 --- dvfilter.v00 --- esx_ui.v00 --- esxupdt.v00 --- tpmesxup.v00 --- weaselin.v00 --- esxio_co.v00 --- infravis.v00 --- loadesx.v00 --- lsuv2_hp.v00 --- lsuv2_in.v00 --- lsuv2_ls.v00 --- lsuv2_nv.v00 --- lsuv2_oe.v00 --- lsuv2_oe.v01 --- lsuv2_sm.v00 --- native_m.v00 --- qlnative.v00 --- trx.v00 --- vcls_pod.v00 --- vdfs.v00 --- vds_vsip.v00 --- vmware_e.v00 --- hbrsrv.v00 --- vsan.v00 --- vsanheal.v00 --- vsanmgmt.v00 --- tools.t00 --- xorg.v00 --- gc.v00 --- imgdb.tgz --- basemisc.tgz --- resvibs.tgz --- esxiodpt.tgz --- imgpayld.tgz build=8.0.3-0.60.24585383 updated=0 ``` Add permissions for the folder so that nginx can read them ```bash sudo chmod 655 -R /srv/http ``` ### Adding a kickstart file edit the boot cfg to add the ks file to`kernelopt` path ```bash vim /srv/http/boot/efi/boot/boot.cfg ``` The config should then look like this: ```bash # /srv/http/boot/efi/boot/boot.cfg bootstate=0 title=Loading ESXi installer timeout=5 prefix=http://192.168.99.10/boot kernel=b.b00 kernelopt=ks=http://192.168.99.10/kickstart/ks.cfg modules=jumpstrt.gz --- useropts.gz --- features.gz --- k.b00 --- uc_intel.b00 --- uc_amd.b00 --- uc_hygon.b00 --- procfs.b00 --- vmx.v00 --- vim.v00 --- tpm.v00 --- sb.v00 --- s.v00 --- atlantic.v00 --- bcm_mpi3.v00 --- bnxtnet.v00 --- bnxtroce.v00 --- brcmfcoe.v00 --- cndi_igc.v00 --- dwi2c.v00 --- elxiscsi.v00 --- elxnet.v00 --- i40en.v00 --- iavmd.v00 --- icen.v00 --- igbn.v00 --- intelgpi.v00 --- ionic_cl.v00 --- ionic_en.v00 --- irdman.v00 --- iser.v00 --- ixgben.v00 --- lpfc.v00 --- lpnic.v00 --- lsi_mr3.v00 --- lsi_msgp.v00 --- lsi_msgp.v01 --- lsi_msgp.v02 --- mtip32xx.v00 --- ne1000.v00 --- nenic.v00 --- nfnic.v00 --- nhpsa.v00 --- nipmi.v00 --- nmlx5_cc.v00 --- nmlx5_co.v00 --- nmlx5_rd.v00 --- ntg3.v00 --- nvme_pci.v00 --- nvmerdma.v00 --- nvmetcp.v00 --- nvmxnet3.v00 --- nvmxnet3.v01 --- pvscsi.v00 --- qcnic.v00 --- qedentv.v00 --- qedrntv.v00 --- qfle3.v00 --- qfle3f.v00 --- qfle3i.v00 --- qflge.v00 --- rdmahl.v00 --- rshim_ne.v00 --- rshim.v00 --- rste.v00 --- sfvmk.v00 --- smartpqi.v00 --- vmkata.v00 --- vmksdhci.v00 --- vmkusb.v00 --- vmw_ahci.v00 --- bmcal.v00 --- clusters.v00 --- crx.v00 --- drivervm.v00 --- elx_esx_.v00 --- btldr.v00 --- dvfilter.v00 --- esx_ui.v00 --- esxupdt.v00 --- tpmesxup.v00 --- weaselin.v00 --- esxio_co.v00 --- infravis.v00 --- loadesx.v00 --- lsuv2_hp.v00 --- lsuv2_in.v00 --- lsuv2_ls.v00 --- lsuv2_nv.v00 --- lsuv2_oe.v00 --- lsuv2_oe.v01 --- lsuv2_sm.v00 --- native_m.v00 --- qlnative.v00 --- trx.v00 --- vcls_pod.v00 --- vdfs.v00 --- vds_vsip.v00 --- vmware_e.v00 --- hbrsrv.v00 --- vsan.v00 --- vsanheal.v00 --- vsanmgmt.v00 --- tools.t00 --- xorg.v00 --- gc.v00 --- imgdb.tgz --- basemisc.tgz --- resvibs.tgz --- esxiodpt.tgz --- imgpayld.tgz build=8.0.3-0.60.24585383 updated=0 ``` Create the kickstart file ```bash sudo vim /srv/http/kickstart/ks.cfg ``` Example kickstart file: ```cfg # Accept EULA vmaccepteula # Set root password rootpw Start123$ # Install on first disk install --firstdisk --overwritevmfs # Configure network network --bootproto=static --ip=192.168.99.100 --netmask=255.255.255.0 --gateway=192.168.99.1 --hostname=esx11.lab.sponar.de --nameserver=192.168.99.1 --addvmportgroup=1 reboot ``` ## 🔗Resources ### Network boot resources - https://williamlam.com/2021/03/simplified-nested-esxi-installation-in-esxi-7-0-update-2-using-http-boot-over-virtualefi.html - https://techdocs.broadcom.com/us/en/vmware-cis/vsphere/vsphere/8-0/esxi-installation-and-setup-8-0/installing-and-setting-up-esxi-install/installing-esxi-install/installing-esxi-by-using-a-script-install/scripted-esxi-installation-install.html#GUID-4DFAA5D6-D1E8-41C9-BCB4-8633551CD8BC-en - https://vtam.nl/2024/01/14/unattended-esxi-deployment-with-go-via/