Incus vm image request: HomeAssistant OS for arm64 (Raspberry Pi) on images.linuxcontainers.org

Hi,
Incus works fine on my Raspberry Pi 5 and it is very easy to download images from your image server - great work!
I’m new on incus.
Is it possible from anyone out there to create a HomeAssistant OS image for the arm64 architecture so I can run the full HomeAssistant OS on my Raspberry Pi 5 (and can integrate addons into HomeAssistant) beside Raspberry Pi OS?

Best regards,

Johann

Welcome,
you can run Home Assistant OS inside a virtual machine.
Follow the instructions on this page. They can be easily adapted to incus.
The real challenge is to get qemu emulation working.

These are the steps I did:

  • switched from Fedora to RaspiOs
  • added bookworm-backports to apt sources
  • installed incus-agent
  • dowloaded haos
  • followed the above linked page

Even if i did what @stgraber wrote in this thread I’m still having

Error: VM agent isn't currently running

tryng to gain a shell access, but the Home Assistant web frontend works

Hope that helps

My regards

Hi Diego,

Ithank you very much for your tipps and links. With your help I got the web frontend and the addins work.

Here are the steps:

Create working dir

mkdir haos
cd haos

Download the “haos_generic-aarch64-12.1.qcow2.xz” from Releases · home-assistant/operating-system (github.com)

extract the file:

xz -d haos_generic-aarch64-12.1.qcow2.xz

create the metadata.yaml:

nano metadata.yaml
architecture: aarch64
creation_date: 1711275086
properties:
description: Home Assistant OS
os: HAOS
release: 12.1

compress it:

tar -cvzf metadata.tar.gz metadata.yaml

import the image and the metadata file:

sudo incus image import metadata.tar.gz haos_generic-aarch64-12.1.qcow2 --alias haos

launch it as a VM:

sudo incus launch haos HomeAssistant-OS --vm -c security.secureboot=false -c limits.cpu=2 -c limits.memory=2GiB -d root,size=32GiB

Best regards, Johann

3 Likes

Very helpful. To make it even better please could you edit your post and put three backticks (```) on a line before and after block of code, especially the YAML file: that’s because the indendation is missing if you don’t do that.

I followed the guide to the letter. I’m using the recommended bridge port method to get IPs for Incus instances. While the VM and other containers work fine, the HomeAssistant-OS virtual-machine will not display an IP with incus list, yet the VM works fine and I am able to access the HA GUI.

incus list
+------------------+---------+----------------------+---------------------------------+-----------------+-----------+
|       NAME       |  STATE  |         IPV4         |              IPV6               |      TYPE       | SNAPSHOTS |
+------------------+---------+----------------------+---------------------------------+-----------------+-----------+
| HomeAssistant-OS | RUNNING |                      |                                 | VIRTUAL-MACHINE | 0         |
+------------------+---------+----------------------+---------------------------------+-----------------+-----------+
| next-sloth       | RUNNING | 192.168.1.171 (eth0) | 2001:7d0:8cb0:6f00::116e (eth0) | CONTAINER       | 0         |
+------------------+---------+----------------------+---------------------------------+-----------------+--------

I’ve tried importing an existing working HAOS install and creating a new VM as instructed above. Importing did assign an IPv6 address though.

Inside the VM everything seems fine:

# ha network info
docker:
  address: 172.30.32.0/23
  dns: 172.30.32.3
  gateway: 172.30.32.1
  interface: hassio
host_internet: true
interfaces:
- connected: true
  enabled: true
  interface: enp5s0
  ipv4:
    address:
    - 192.168.1.172/24
    gateway: 192.168.1.1
    method: auto
    nameservers:
    - 1.1.1.1
    - 1.0.0.1
    ready: true
  ipv6:
    address:
    - 2001:7d0:8cb0:6f00::2000/128
    - fe80::3bc6:381:a4bb:afc8/64
    gateway: fe80::76fe:48ff:fe61:6261
    method: auto
    nameservers:
    - 2001:7d0:8cb0:6f00:76fe:48ff:fe61:6261
    ready: true
  mac: 00:16:3E:17:11:BE
  primary: true
  type: ethernet
  vlan: null
  wifi: null
supervisor_internet: true

I took a quick look. Maybe change the 24 to a 32.

The first is a range of IP addresses. The second would be a single IP.