- https://github.com/pftf/RPi4/releases/download/v1.20/RPi4_UEFI_Firmware_v1.20.zip
- https://codeload.github.com/raspberrypi/firmware/zip/master (firmware-master.zip)
- https://flings.vmware.com/esxi-arm-edition
Source: https://www.virtuallyghetto.com/2020/11/stateless-esxi-arm-with-raspberry-pi.html
PI_EEPROM_VERSION=pieeprom-2020-09-03
wget https://github.com/raspberrypi/rpi-eeprom/raw/master/firmware/beta/${PI_EEPROM_VERSION}.bin
sudo rpi-eeprom-config ${PI_EEPROM_VERSION}.bin > bootconf.txt
sed -i 's/BOOT_ORDER=.*/BOOT_ORDER=0xf241/g' bootconf.txt
sudo rpi-eeprom-config --out ${PI_EEPROM_VERSION}-netboot.bin --config bootconf.txt ${PI_EEPROM_VERSION}.bin
sudo rpi-eeprom-update -d -f ./${PI_EEPROM_VERSION}-netboot.bin
then reboot.
- use an sd card with FAT32, 4GB card will do.
- (name of partition needs to be
UEFI
?) - copy all files from
firmware-master.zip
to root of first partition - copy all files from
RPi4_UEFI_Firmware_v1.24.zip
- remove all
kernel*
files
Most guides use a USB thumb drive, but that wasn't working. TFTP worked fine, with a few hurdles.
Source: https://www.virtuallyghetto.com/2020/10/automated-network-scripted-installation-of-esxi-arm-without-sd-card.html (describes how to do the install with a ks server too, but we left that out here)
Using dnsmasq
:
sudo mkdir /mnt/tmp
sudo mount -o loop ./VMware-VMvisor-Installer-7.0.0-17068872.aarch64.iso /mnt/tmp/
sudo mkdir -p /srv/tftpboot/
sudo mkdir -p /srv/tftpboot/rpi-uefi-1.20/
sudo cp -rf /mnt/tmp/ /srv/tftpboot/esxi-arm
sudo umount /mnt/tmp/
sudo vi /etc/dnsmasq.conf # see below
sudo systemctl restart dnsmasq
Relevant section in dnsmasq.conf
:
enable-tftp
tftp-root=/srv/tftpboot
pxe-prompt="Booting PXE Client", 1
# ESXi AARCH64
dhcp-match=set:aarch64,60,PXEClient:Arch:00011:UNDI:003000
dhcp-boot=tag:aarch64,esxi-arm/efi/boot/bootaa64.efi
# rPI AARCH64
pxe-service=0,"Raspberry Pi Boot"
boot.cfg
seems to be in the wrong place (revealed from dnsmasq logs: sudo journalctl -u dnsmasq
), move and edit it:
sudo cp /srv/tftpboot/esxi-arm/boot.cfg /srv/tftpboot/boot.cfg
sudo vi /srv/tftpboot/boot.cfg # add prefix
sudo sed -i 's#/##g' /srv/tftpboot/boot.cfg
Should look like:
bootstate=0
title=Loading ESXi installer
timeout=5
prefix=esxi-arm
kernel=b.b00
kernelopt=runweasel cdromBoot
modules=jumpstrt.gz --- useropts.gz --- features.gz --- k.b00 --- procfs.b00 --- vmx.v00 --- vim.v00 --- tpm.v00 --- sb.v00 --- s.v00 --- ena.v00 --- bnxtnet.v00 --- bnxtroce.v00 --- brcmfcoe.v00 --- brcmnvme.v00 --- elxiscsi.v00 --- elxnet.v00 --- i40en.v00 --- i40iwn.v00 --- iavmd.v00 --- igbn.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 --- nmlx4_co.v00 --- nmlx4_en.v00 --- nmlx4_rd.v00 --- nmlx5_co.v00 --- nmlx5_rd.v00 --- ntg3.v00 --- nvme_pci.v00 --- nvmerdma.v00 --- nvmxnet3.v00 --- nvmxnet3.v01 --- pvscsi.v00 --- qcnic.v00 --- qedentv.v00 --- qedrntv.v00 --- qfle3.v00 --- qfle3f.v00 --- qfle3i.v00 --- qflge.v00 --- rste.v00 --- sfvmk.v00 --- smartpqi.v00 --- vmkata.v00 --- vmkfcoe.v00 --- vmkusb.v00 --- vmw_ahci.v00 --- elx_esx_.v00 --- btldr.v00 --- esx_dvfi.v00 --- esx_ui.v00 --- esxupdt.v00 --- tpmesxup.v00 --- weaselin.v00 --- loadesx.v00 --- lsuv2_hp.v00 --- lsuv2_in.v00 --- lsuv2_ls.v00 --- lsuv2_nv.v00 --- lsuv2_oe.v00 --- lsuv2_oe.v01 --- lsuv2_oe.v02 --- lsuv2_sm.v00 --- native_m.v00 --- qlnative.v00 --- vmware_e.v00 --- vsan.v00 --- vsanheal.v00 --- vsanmgmt.v00 --- tools.t00 --- imgdb.tgz --- imgpayld.tgz
build=7.0.0-1.0.17068872
updated=0
- connect network and (large) USB drive to the Pi
- boot with the prepared UEFI card
- press
esc
when prompted to get into UEFI menu - disable 3GB limit, reboot
- press
esc
when prompted to get into UEFI menu, then boot from TFTP