ESXi on RPi - Create EEPROM and Firmware SD Card with PowerShell

The installation of ESXi on a Raspberry Pi using the ESXi on ARM Fling basically involves 3 steps:

  1. Patch RPi EEPROM to the latest version using an SD card. You can reuse the SD card in Step 2.
  2. Write RPi Firmware and EFI to an SD Card. This is the bootloader for ESXi and needs to remain in your RPis SD slot, even after ESXi installation.
  3. Install ESXi on ARM using a USB flash drive (This step is identical to x86 Hardware)

I've tried to make this sprocess unattended so I've created two PowerShell functions that automate Step 1 and 2.

First of all, as this can't be stressed enough, read the documentation. There are additional information in the document that you are required to know to run ESXi on Raspberry Pi smoothly.

Prerequisites
To get started with ESXi on Raspberry Pi using the PowerShell functions you need:

  • One or Two SD Cards (You can overwrite the EEPROM SD Card, or use a new)
  • USB Flash Drive (For the ESXi installation)
  • ESXi on ARM ISO
  • Raspberry Pi 4 Model B (With proper cooling and power supply)
  • HDMI Monitor
  • Micro HDMI to HDMI Cable
  • Windows System with Powershell 5 or PowerShell Core to create the SD Card
  • esxi_on_rasperry_pi_functions.ps1 (GitHub)

Part 1 - Update EEPROM
The first part is to make sure that your Raspberry Pi has the latest EEPROM installed. As of today, the latest verison is VL805: 0138a1 (2020-09-03). This version works very well with ESXi. The official guide describes the installation of Raspberry Pi Os to upgrade the EEPROM, but there is a simple alternative using the EEPROM boot recovery tool which I am using here.

  1. Download the esxi_on_rasperry_pi_functions.ps1 module (Download: GitHub)
  2. Start a privileged PowerShell Session. The privileged session is required to format the SD card.
  3. Import the esxi_on_rasperry_pi_functions.ps1 Module
    PS> Import-Module .\esxi_on_rasperry_pi_functions.ps1
  4. Insert an SD card to your PC (Warning: All data will be erased!)
  5. Run Write-RpiEepromToUsb
  6. A window (Out-GridView) will open, allowing you to select the USB to write the Image to. Select your SD card and klick OK.
  7. The system will ask for confirmation to delete all data on your SD Card. Press Y.
  8. Wait until the process is finished. This will take about 20 seconds. When successfull, the system prints further instructions. Keep the PowerShell Session open for the Part 2.
  9. Remove the SD card from your PC
  10. Insert the SD card to your Raspberry Pi
  11. Power on Raspberry Pi
  12. Wait at least 10 seconds.
  13. If successful, the green LED light will blink rapidly (forever), otherwise, an error pattern will be displayed. If an HDMI display is attached then the screen will display green for success or red if failure a failure occurs.
  14. Remove the power plug from your Raspberry Pi. You can reuse the SD card in Step 2.

Part 2 - Write RPi Firmware and EFI to an SD card
The second part creates an SD card containing the EFI Firmware for ESXi. This firmware is required to boot from USB devices, which is required to install ESXi. It has to remain your RPis SD slot after ESXi has been installed. Don't bother with a large SD card as the firmware is only about 25 MB and you can't use the SD Card for anything else like Datastores or ESXi itself.

  1. Use the privileged PowerShell Session from Part 1 with the esxi_on_rasperry_pi_functions.ps1 Module loaded, or start a new one.
  2. Insert an SD card to your PC. You can use the EEPROM SD card from Part 1. (Warning: All data will be erased!)
  3. Run Write-RpiFirmwareToUsb
  4. A window (Out-GridView) will open, allowing you to select the USB to write the Image to. Select your SD card and klick OK.
  5. The system will ask for confirmation to delete all data on your SD Card. Press Y.
  6. Wait until the process is finished. It might take a few minutes as it has to download roughly 200MB, modify the bootloader with the UEFI loader, and write everything to the SD card.
  7. When successfull, the system prints further instructions.
  8. Remove the SD Card from your PC
  9. Insert the SD Card to your Raspberry Pi
  10. Power on Raspberry Pi
  11. Press ESC to enter Setup
  12. Disable 3 GB RAM Limit (Device Manager > Raspberry Pi Configuration > Advanced Configuration > Limit RAM to 3 GB)
  13. Press F10 to save

You are now ready to Install ESXi.

Part 3 - ESXi Installation
From here, the ESXi Installation is similar to the Installation on x86 hardware.

  1. Get ESXi on ARM Fling .iso Installer (My VMware Account is required. The registration is free)
  2. Write the ESXi Image to an USB thumb drive (eg. with Rufus, see this article)
  3. Insert the USB thumb drive to your Raspberry Pi
  4. Make sure that the Firmware SD Card is still in the RPis SD card slot
  5. Power on Raspberry Pi
  6. The Pi might stuck while trying to do a PXE boot. To skip that, press ESC to enter the BIOS, select Boot Manager an manually select your USB drive.
  7. Follow the Installer to install ESXi.

 

Additional Notes:
The Invoke-WebRequest function is very slow in PowerShell 5. Either use PowerShell Core 7, or disable the progress bar to speed up the download:

$ProgressPreference = 'SilentlyContinue'
Leave a comment ?

11 Comments.

  1. Thanks for this your instructions were much more much better than the Fling ones. Curious if anyone else is having trouble with the final install due to RAM. The original instructions says the 8GB model is preferred but the 4GB would work. I have the 4GB model, but when I get to the end of the install it errors out and says it only finds 3GB. Anyone else have the same problem?

    • Can you double-check that you've disabled the 3GB Memory limit in the RPis Bios? It is enabled by default.

      • I did verify that after getting the error. I even tried re-enabling, rebooting, and disabling a second time to make sure that wasn't the problem. Thanks

      • Wound up fixing my problem the easy way,I got an 8GB Pi and ESX loaded just fine.
        I do have a second question though, does anyone know if the Raspberry Pi wireless nic can be seen by ESX? I only see the wired port?
        Thanks

  2. Everything worked ok. Thank for the great article. Any idea how to check the temperature of the Pi when esxi is running ?

    • Nope. I tried to compare 3 different cooling options and ended with just using the standard Raspberry Pi OS to check the difference...

      • One more question, maybe you have tried installing the esxi via iscsi on raspberry pi ? I added the iscsi target, configured the boot order to iscsi,usb(esxi installer), but still the installer could not find the remote destination.

  3. and one other thing. synology starts lun indexing from 1 , not 0, so you have to change it as well inside the configration section in iscsi.

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.