Today I want to write about how to install ESXi-ARM on a small Raspberry Pi 4 B computer. When I learned about this posibility first time, it seemed to be a interesting way to make a small homelab with very low power usage.
Currently I have only one Raspberry Pi 4 B which I will use in this guide, but I am planning to make a VMware cluster using more RPI computers in future.
Why I am doing it? I belive ARM CPUs are going to be very popular in near future, considering that Microsoft along with Qualcomm is already releasing laptops which have at their base ARM CPUs. Probably will take longer time to see this into datacenters and enterprise solutions, but is always good to play around with new things and learn about them.
Below guide will be the way I did it. If you want an extensive guide for this, refer to this PDF document provided by VMware/Broadcom. This archive will contains multiple PDF guide for different type of hardware.
BOM – What do I use?
1x Raspberry pi 4 B 8 GB RAM
1x Samsung USB drive 64 GB ( for OS )
1x MicroSD card 32 GB ( for EUFI )
1x UGREEN M.2 Drive Encloser to USB-A ( for M.2 drive )
1x M.2 SSD Drive 512 GB ( for VMFS storage )
1x USB Keyboard
1x Micro-HDMI to HDMI cable
1x Power supply with output of 5.1V==3.0A , 15.3 W
1x RPI case with a small fan for cooling
1x Adaptor for MicroSD card ( for copying needed files to it from your computer )
How to download necessary files ?
- Download ESXi-ARM image from here : https://community.broadcom.com/flings/home. I will use ESXi-Arm-ISO-1.15-dl.zip in this guide.
- Raspberry Pi Imager Tool : https://www.raspberrypi.com/software/
- Latest RPI firmware : https://github.com/raspberrypi/firmware/archive/master.zip
- Latest RPI 4 community firmware : https://github.com/pftf/RPi4/releases
- Rufus or your favorite tool to create bootable USB drives ( https://rufus.ie/en/ )
Now you are ready for the next steps.
Step 1. Update EEPROM on Raspberry Pi
Insert the MicroSD card to an adapter and connect it to your computer.
Install and run Raspberry Pi Imager Tool which you downloaded above.
Choose “Raspberry PI 4” on Raspberry Pi Device option. For Operating System, go to “Misc utility images” > “Bootloader (Pi 4 Family)” > “SD Card Boot”. For Storage, choose your MicroSD card. Click next and yes on question about erasing your card. ( all data which was there previously will be delete ).
Once completed, you will see following message:
To verify everything is working fine, insert the MicroSD card in your Raspberry Pi and turn it on. Now the green led on your RPI should be blinking green. Optionally you can connect it to a monitor via the HDMI cable and a green screen should be shown.
Step 2. Copy UEFI files to MicroSD Card.
Here you will use the files copied on steps 4 and 5 above. First lets format the MicroSD card. You need to use FAT32 format. You can use the same MicroSD card you used in step 1.
Right click on your card partition and click format.
Select FAT32 File System, put the volume label of your choise and click start. This should take only few seconds depending on the size and if you choose quick format or not.
Lets go back to the files you downloaded previously. Unzip both “firmware-master.zip” and “RPi4_UEFI_Firmware_v1.37”. ( the latter might have different version in future )
Go to firmware-master/boot and delete all files kernel*.img . Now copy everything from boot folder to your MicroSD card.
From directory RPI4_UEFI_Firmware_v.137, copy everything, except firmware directory, to the MicroSD card and replace the existing files when asked.
I am using RPI 4 B with 8 GB of RAM and next step is not required, but if you have the version with 4 GB of RAM, open config.txt file from your MicroSD card and add following parameter : gpu_mem=16. Save the file.
Now your SD card is ready. You can eject it from your computer and insert it to your RPI 4.
Step 3 : Configure EUFI firmware on Raspberry Pi 4
For this step I will use and HDMI cable and a USB keyboard. You can do this with serial console but aditional cable is required. I am actually curious to explore that option, maybe in a future post I will try it.
For now, connect the RPI to a monitor using the HDMI cable and connect your keyboard to it. Turn it on lets continue with the configuration.
When you get this screen, press ESC to go into Setup mode.
First I would recommend to change display settings to a better resolution. To do this go to Device Manager
From here go to Raspberry Pi Configuration
Go to Display configuration
And now select your desired solution. I will go with 1024×68.
Press F10 to save the configuration
To apply this, press ESC key few times till you get to main setup page. Here press Reset and your RPI will reboot.
Press again ESC on this screen again and lets continue with our configuration.
- Disable RAM limit.
Go to Device manager > Raspberry Pi Configuration > Avanced Configuration and here choose “Disabled” on Limit RAM to 3 GB. Press F10 to save configuration.
2. Set console to serial
From the main page, go again to Device Manager > Console Preference Selection and choose “Serial” for Prefered console. Press F10 to save configuration.
Step 4. Install ESXi Arm
First we have to make a bootable USB stick which will contain the ESXi ARM image. I will use Rufus to do this
Select your USB Drive under Device and the ESXi ARM ISO, which you downloaded in first steps, under Boot selection. Leave all other settings as default and click start.
Once this is finished, eject the USB Drive from your computer and insert into your Raspberry Pi. Restart the Raspberry Pi and lets proceed with installation.
During this screen you have to press again ESC key to boot from USB drive.
Go to Boot manager
Now select your USB drive and press enter.
The installation will boot.
Step 4.1 Optional Step – Change OS partition size
If you want to use the USB Drive also as a VMFS datastore, when you get the above screen press SHIFT+O to parse an aditional parameter.
Enter “autoPartitionOSDataSize=8192”. This will set the OS partition to 8 GB. Press Enter and installation with continue.
Here press enter to continue .
On next screen, press F11 to Accept and continue.
Here you need to choose the installation drive. I will use same USB drive which I am using to boot the installation from.
They will warn you that data will be erased, press Enter to continue
Choose the language your prefer. I will go with US default
Choose a secure root password
And finally press F11 to begin the installation
When you get to this screen, just press Enter to reboot, Dont remove the USB Drive as now is not an installation media, is the drive where you have ESXi installed.
Step 5. Change boot order
We still have few things to do before we are ready. Raspberry PI wont boot from the USB Drive automatically, we need to go into EUFI settings and make sure to change the boot order.
On this screen press again ESC.
Go to Boot Maintenance Manager
Now go to Boot Option
And select Change boot order
Here press Enter when you have selected the boot option
Use your “+” key to move the flash drive you use on the top of the list and press enter.
Press on Commit Changes and Exit. Now you can restart your RPI and it should boot into OS.
Step 6. Optional – Setup static IP for ESXi
If you dont have DHCP enabled, your ESXi will not get an IP. To setup an Static IP, press F2 on the screen below and enter your root credentials to get into settings.
Here go to Configure Management Network
And choose IPv4 Configuration
Choose “Set static IPv4 address and network configuration” and enter your IP details. Press Enter once you have completed all required fileds.
Now it will ask you if you want to apply changes and restart management network. Press Y on this screen.
Now everything is setup and you can access the ESXi web interface using the IP you configured.
Step 7. Setup VMFS datastore
You will need a datastore to store the VM files. I will connect an M.2 Drive with a drive enclosure via USB. I have used this guide to do below steps.
Login to ESXi via web interface and enabled SSH service.
Connect to ESXi via command line, using Putty or your ssh client of choise and run following commands :
/etc/init.d/usbarbitrator stop
chkconfig usbarbitrator off
Now go back to the web interface go to to Storage > Devices and click on the new device . ( you can recognize it by the size or by checking it before and after running the above commands at CLI level.
On next screen, choose “New datastore” and choose a name for the datastore and click next.
Here choose Use full disk and press next to continue.
Once everything is finished, you will be able to see the new datastore under storage.
This is all with this article, now you are ready to run ARM VMs on a Raspberry Pi.
Leave a Reply