Installing HAOS on VMware Flings ESXi ARM

Since Home Assistant version 8.1, HAOS is now available based on aarch64 architecture and with GRUB 2 bootloader natively implemented, it is now finally possible to run HAOS as a virtual machine on VMware’s Flings ESXi ARM hypervisor, currently mostly running on a Raspberry Pi 4 (mostly the 8GB version).

Here’s the how-to:

  1. Download the latest HAOS aarch64 image haos_generic-aarch64-x.x.vmdk.zip from here.
  2. Extract the .zip file.
  3. Rename the haos_generic-aarch64-x.x.vmdk file to HAOS.vmkd.
  4. Upload the HAOS.vmdk file to your ESXi datastore via vSphere web client:

Update (24.03.2023): Before proceeding, convert the .vmdk file accoridng to @toxadi as described here. You can run the command directly on the ESXi shell. Then continue with step 5.

  1. Via vSphere web client create a new virtual machine on your ESXi host as follows:
    Click on Create/Register VMCreate a new virtual machine:

    Next
    Give the VM a meaningful name (e.g. HAOS) and configure it as follows:

    Next
  2. Select the desired datastore for your VM (an iSCSI target in the following example):

    Next
  3. Change the value for CPU to 2 and for Memory to 2 GB. Then click on Add other device and add an NVMe controller:
  4. Remove the following existing devices: SCSI Controller 0, CD/DVD Drive 1 and Hard disk 1:
  5. Click on Add hard diskExisting hard disk

    …and select the according HAOS.vmdk from your ESXi datastore which you have uploaded before:

    For the new hard disk change the Controller location to NVMe controller 0. Then remove the existing SATA Controller 0 device (FYI: The default SATA controller would indeed work but replacing the default SATA controller with an NVMe controller reduces the software overhead of OS I/Os signficantly, which is actually what you really want, especially when running a VM on a low power Raspberry Pi based hypervisor):
  6. The VM setting should now look similiar to this:

    Note: Leave the USB controller version on USB 3.1 and the network adapter type on E1000e. Don’t try any other settings as they won’t work!
    If you have everything set up as described, click Next and then check the settings summary again:

    Click on Finish.
  7. Now you want to increase the virtual disk size according to your requirements (especially if you are planning to migrate an existing Home Assistant instance, for example from an existing x86 installation to your new aarch64 architecture). To do so edit the VM again (Note: You could not do this step while creating the VM, you have to create the VM first before you are able to increase the disk size of the existing .vmdk via the vSphere web client):

    Now change the disk size (32 GB in the following example):

    Click on Save.

That’s it for the ESXi configuration part.
Before firing up your VM please doublecheck you have set the VM’s virtual network adapter to the correct portgroup of your personal/individual environment and if you are planning to migrate an existing Home Assistant instance you should also make sure that your old instance is not running anymore and that your new instance is getting the same IP address as the old instance. The easiest and most reliable way would be to set a static IP address bound to your new instance’s MAC address via your DHCP server. If you don’t have the possibility to do so you can also configure the static IP address of your new instance manually after firing up your brand new HAOS installation. Just make sure you have set the correct IP address before you start the migration process (e.g. restoring from a full backup).

FYI: The migration from HAOS x86 to HAOS aarch64 went flawlessly in my case by just restoring the full backup file. All integrations and add-ons were successfully restored without any hickups or manual steps, which in my case were:

Add-ons:
Zigbee2MQTT
Mosquitto
Samba backup
Samba share
NGNIX SSL proxy
ESPHome
Frigate NVR
Terminal & SSH

Integrations:
EmulatedRoku
Kodi
Logitech Harmony Hub
HACS
Season

That’s it, have fun with your new HAOS aarch64 installation on VMware Flings ESXi ARM!

6 Likes

This is what I call a TUTORIAL.

…just like in the old XDA days :pray:

First of all thanks for the guide, it’s well done!
I followed the steps and now I’ve a working home assistant VM but I want to report a small “problem”.

At the moment, ESXI reports a warning in the status of the virtual machine:

the disk size has been changed as shown in the tutorial:

The Resource Consumption show 32 GB as Provisioned but 34.08 GB as Used, even if under General Information > Storage the path /var/log/journal is quite empty (is this the path that should be so large?)

VMware Tools are provided by open-vm-tools:

Is this only happening to me? Is there any solution?

Seems okay, I have the same size:

What actually is the warning message you get?

EDIT: Apologies, I was too fast. I actually have only 15.27GB being used.
But still: What is the warning message you get?

I have thin provisioned the virtual disk a while ago when I migrated the VM to another ESXi host, btw…

1 Like

Thank you! I converted the thick provisioned disk to thin with vmkfstools in ESXi shell and it resolved the disk occupation. Now it’s much cleaner imho.

I noticed that it was unrelated to the disk occupation, my mistake.
It’s about the guest OS configuration, should i do something here?

Nope, I have this warning too. That’s because HAOS is based ob buildroot which does not cover any of the Linux distribution types supported by VMware. No worries, it’s just a cosmetical thing.

Hi, great tutorial.
I have a ESXi-7.0.0-18175197 on RPi4 and I’m trying to use HAOS 9.4
Did someone have an issue like this one?

It looks like it’s not an ESXi format

Hmm, this should not occur.
Are you sure you made every single step as described?

It does hapen to me too. All steps followed exactly, ESXi-7.0.0-20133114-standard and HAOS ver 9.5

Ok, fixed it by converting the disk using this command:
vmkfstools -i /vmfs/volumes/*datastore* /*virtual_machine_folder* /*virtual_machine* .vmdk /vmfs/volumes/*datastore* /*new_virtual_machine_folder* /*virtual_machine* .vmdk

Source: VMware Knowledge Base

2 Likes

@toxadi Thanks, I have updated the tutorial.

@cladan FYI

is that vmkfstools conversion still required with the latest vmdk-zip file?