Installing Home Assistant OS on an NVMe drive

Just curious as to whether my workflow here will work, as I haven’t seen many easily-consumed guides on how to do this. I plan to get a Raspberry Pi 5, and the Pimoroni NVMe base, and install HAOS on that drive and configure to boot from that.

Would the following work?

  1. Install the NVMe base and connect the NVMe SSD
  2. Flash an SD card with a simple OS like Raspberry Pi OS
  3. Boot into the SD card OS
  4. Use the Raspberry Pi imager to target the NVMe drive with a new fresh HAOS install
  5. Configure the Pi to boot into the NVMe drive
  6. Boot, and away you go


1 Like

It should work, I didnt setup HAOS but PiOS + Frigate in the same fashion

1 Like

Just an FYI - the Geekworm X1003 NVMe HAT allows for the rPi5 to be installed in the standard case with the active cooler. Only limitation is your M.2 choices are either 2230 or 2242. I’ve been monitoring the CPU temp and it never exceeds 56C - this in a very warm closet.

This looks great, but I’m in the UK and can’t find a supplier for it, unfortunately.

I am keen about this and would love to know more! I have a Geekworm X1001 and want to upgrade to an M.2 drive soon. I am unsure if it would work though with currently available hats. Please correct me if I am wrong, but I thought that booting from NVME via PCIe on a non-HAT+ compliant hat needs to be enabled in the /boot/firmware/config.txt file like dtparam=pciex1. Changing the boot order to include NVME is done editing the EEPROM, but is there an option in HAOS installation to enable the PCIe?

To boot from a non-HAT+ device you should also add:
to the EEPROM configuration

1 Like

Perfect! That worked a charm!

Hello @FabsFabios! I’m trying to do exactly the same thing! Can you provide the steps to set a boot partition on the NVMe drive with HAOS?

Thank you !

1 Like

Can you explain how to modify/add what you provided to EEPROM (or point me in the right direction for procedure instructions)? I’m familiar and comfortable with modifying and adding to my config using Studio Code Server - is editing EEPROM done in the same or similar manner? Sorry - I’m still rather new to all of this, but having a lot of fun tinkering and learning.

I can confirm that the @JimGR procedure works fine!
I’m using the Geekworm x1001 NVMe HAT with a 500GB Crucial p5 plus
(Boot in ~ 25 seconds)

My steps was:

  1. Install the NVMe base and connect the NVMe SSD
  2. Connect to Internet (RJ45)
  3. When trying to find boot device, press ALT to open graphic screen. Then Hold SHIFT to use Internet install method. That will download Raspberry Pi imager.
  4. Select OS and install to NVMe.
1 Like

I was able to get this to work fully over SSH.

  1. Use Pi Imager to install Raspberry Pi OS to SD card
  2. Before writing the image, edit the config to configure SSH
  3. Edit boot config to enable PCIE (I also enabled gen 3)
  4. Edit EEPROM config to change boot order and probe PCIE
  5. Use scp to copy HA OS image to sdcard (or download directly from pi using curl)
  6. Write image to nvme using dd
  7. Mount first nvme partition to edit HA’s boot config
  8. Enable PCIE in HA’s boot config
  9. Shutdown, pull sd card, restart, cross fingers.

Worked for me and I never had to connect a monitor or keyboard. I used a combination of these to get this figured out:

Thanks! I just installed on a Crucial P3 on a Geekworm X1001-hat using the new network boot.
Good to know though, you first probobly need to update your bootloader to get the network boot functionality.
I booted Rapsberry OS from an SD card, updated the bootloader, removed the sd-card, tada.
Followed this guide: