Thanks for coming back to part 2, here we will get into a little bit more of the how to get these little computers up and running and even running some VMs and some other interesting community things I have found out in my playing around.
If you only had the one SD card then those steps in the last blog can be undone now, we need the SD card to be formatted at FAT32 (MSDOS) so we can upload some required files to the card for the UEFI boot, if you do have a smaller SD card and you wish to preserve the Raspberry Pi OS card for other use cases then now is the time to protect that from the formatting.
UEFI Firmware
First, you need to download two compressed files.
Drop those in a folder ready to use next
Next up let’s insert the SD card into a reader so we can see it on our system. I am using Windows but steps for MacOS are shared in the pdf.
Confirm that you now have the right SD card formatted before we then start copying the required files.
Firstly, open the firmware-master.zip you have downloaded above and go into the firmware-master folder and then into the boot folder. Select the contents of the boot folder and copy those files to your UEFI created SD card partition.
Once that has copied then navigate to the SD card and remove the selected files below.
Then we need the RPi4_UEFI_Firmware_v1.20.zip and we take the contents of this compressed file and we copy that over the top of what we have just copied replacing all files on the SD card.
Replace the 4 files in the destination
This is then complete, there are further configuration steps you could take adding the following depending on the size of the Raspberry Pi variant you chose within the config.txt you will now find in the root of the SD card. The following settings can be added.
- Raspberry Pi 4 4GB = gpu_mem=16
- Raspberry Pi 4 8GB = gpu_mem=32
Eject the SD and we are onto actually moving onto the Pi at this stage.
Booting the Pi
Boot up the Pi and you should see a prompt “Esc” to enter setup. Hit Esc. We need to disable the 3GiB memory limit, this can be done by navigating on the first menu to Device Manager > Raspberry Pi Configuration > Advanced Configuration > Then change the “Limit RAM to 3GB” from enabled to disabled.
Press F10 on the keyboard and then Y to save this, press ESC three times and then to continue and hit enter.
Installing ESXi-ARM
We have now made it to the installation of ESXi, at this stage confirm that you have your ESXi-ARM iso extracted onto one of your USB Drives. Both USB drives are connected to the Pi as well as HDMI, Keyboard, Mouse, Ethernet and the SD Card, oh and power. If you want to get to the advanced options to use the same installer USB Drive as a datastore then Shift and O will get that during the boot setup process.
Power On the Pi, you will need to change the boot order so hit esc again, select Boot Manager and find the USB drive and hit enter in the list.
The installation will take a little while, I think the quickest I saw was around 10 minutes, once complete you will asked to disconnect the ISO USB Drive and then reboot on reboot you will again need to go and now change the boot order, hit esc on boot again and navigate the following Boot Maintenance Manager > Boot Options > Change Boot Order, you can then use the arrow to find the device you now have ESXi-ARM installed and use the + to move up the boot list.
Save and continue the boot and within minutes you will have your first ESXi-ARM hypervisor running on your little Raspberry Pi Computer. Accessible via a web page.
At this stage it looks and feels like any ESXi server, I went through the configuration to add my iSCSI LUN and went and created a new Ubuntu system using the ARM64 version (ubuntu-20.04.1-live-server-arm64) I then obviously wondered in this already community unsupported edition what else might work here????
Well I was able to add it to my Veeam Backup & Replication server
Then it was only obvious I would try out if it would backup the Ubuntu VM I had running?
And then would incremental backups work as well? Yep they work as well
Finally I thought I wonder if an Instant VM recovery would work here, well looks good.
Lets just check the ESXi page? All looks good on the recovery front as well.
I obviously must state again here that the VMware fling is unsupported and a community project, in the same light Veeam does not officially support ESXi on ARM.
But from a community standpoint with a lot of people out there testing this in their labs it is important to recognise that you have a way of protecting those VMs you create on your Pis as well as a recovery path for that too.
One final note is a big thank you to the VMware guys, your documentation was great, a lot of what I have documented here is parts taken from their documentation. I have simplified it for my use case and my setup for my own reference. I would also thank Dean Lewis for sounding some ideas about this as I worked through some of the challenges.