Installer HA OS sur un Raspberry Pi 4 dans une machine virtuelle KVM

bonjour,
comme mon titre l’indique, je cherche à installer HA OS sur un Raspberry Pi 4 dans une machine virtuelle KVM (ceci car HA Supervisor que j’utilise actuellement va être abandonné)
Tout va bien jusqu’au lancement de la VM (virt-install …)
Là je ne m’en sors plus :frowning:
Quelqu’un a-t-il réalisé cela ?
Cordialement

Le Raspberry Pi 4 n’est pas concerné par l’abandon du support des systèmes 32 bits.

  • Assure toi que l’image disque est correctement configurée et accessible par la machine virtuelle.
  • Vérifie les paramètres réseau de la machine virtuelle pour vous assurer qu’elle peut accéder au réseau.
  • vérifie les logs de KVM pour plus de détails sur ce qui pourrait mal se passer.
1 « J'aime »

Et pourquoi tout simplement ne pas utiliser HAos qui est natif sur rpi ?

Sinon oui quelques log de démarrage de la vp n’est pas de refus

1 « J'aime »

c’est HA Superviseur qui est aussi abandonné
et comme j’ai un autre applicatif qui tourne sur le RPi4, j’ai besoin d’une machine double Linux+HA.
Demain, j’essaierai de reprendre la manip avec KVM.
Où je trouve les logs de KVM ?
Cordialement

C’est surtout que ce n’est plus supporte mais il n’est pas abandonné

Les logs de virt manager se trouve dans. $HOME/.virt-manager/virt-manager.log
Et les logs des VM sont dans /var/log/libvirt/qemu

Hello.

Perso j’ai déjà du mal à la base à me faire à l’idée de partager la machine avec ‹ un autre applicatif › dans la même environnement. Mais je trouve l’idée de mettre des VM comme n’étant pas la plus optimal. Au pire, tu passes en version docker, et tu gère toi même les container, mais ajouter une couche de virtualisation en plus, ça va tout dégrader.
Autre solution, mettre un 2ème pi (pour l’autre ap, à voir quelles ressources il faut ) ou passer sur un mini PC qui là sera assez robuste pour faire de virtualisation efficace… Et au passage basculer sur un truc supporté

1 « J'aime »

bonjour,
suite :
je lance KVM avec

sudo virt-install \
  --name haos \
  --memory 2048 \
  --vcpus 2 \
  --os-variant debianbullseye \
  --import \
  --disk path=/var/lib/libvirt/images/haos_generic-aarch64-15.2.qcow2,format=qcow2,bus=virtio \
  --graphics none \
  --network network=default \
  --arch aarch64 \
  --cpu host \
  --machine virt \
  --boot uefi \
  --console pty,target_type=serial

et j’ai le retour :

Starting install...
ERROR    unsupported configuration: CPU mode 'host-model' for aarch64 kvm domain on aarch64 host is not supported by hypervisor
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
  virsh --connect qemu:///system start haos
otherwise, please restart your installation.

avec

cat /var/log/libvirt/qemu/haos.log 
2025-06-16 07:43:35.319+0000: shutting down, reason=failed

une idée ?
cordialement

pour les hôtes en aarch64 il faut passer en host-passthrough

j’ai tout repris avec une SD carte vierge.
avec la commande :

sudo virt-install \
  --name haos \
  --memory 2048 \
  --vcpus 2 \
  --os-variant debianbullseye \
  --import \
  --disk path=/var/lib/libvirt/images/haos_generic-aarch64-15.2.qcow2,format=qcow2,bus=virtio \
  --graphics none \
  --network network=default \
  --arch aarch64 \
  --cpu max \
  --machine virt \
  --boot uefi \
  --console pty,target_type=serial

c’est parti sans erreur
après un boot assez verbeux (mais qui semble normal)
j’ai le message :

Welcome to Home Assistant
homeassistant login: 

que mettre comme login/password, je n’ai rien spécifié à la config !!!
bizarrement virsh list ne voit pas ma VM haos !

Sur l’invite homeassistant login:, tu appuyer sur entrée , pas de mot de passe par défaut, pour l’invite suivante tu tapes ‹ root › puis Entrée , la ligne de commande ha > devrait apparaître.

je suis loggé, merci

ha banner

me dit que ma machine est en 192.168.122.30
sur la machine hôte http://127.0.0.1:8123 m’ouvre bien HA
mais sur une autre machine du réseau, 192.168.122.30:8123 ne répond pas !!!

même avec http://homeassistant.local:8123/
tu dois connecter la VM à un bridge réseau, pas au réseau NAT

Sinon il faut modifier ton réseau
Tu vas être emmerdé par le suite a etre sur un réseau naté

Fait créer un nouveau bridge et attacher ta VM dessus

Ça ne peut pas marcher le mdns ne se route pas (sans proxy mdns)

1 « J'aime »

en finale, j’ai un lancement ok

#!/bin/bash
# kvm_start.sh

# 1iere fois
if [ x$1 = "x1" ]
then
	sudo virt-install \
	  --name haos \
	  --memory 4096 \
	  --vcpus 2 \
	  --os-variant debianbullseye \
	  --import \
	  --disk path=/var/lib/libvirt/images/haos_generic-aarch64-15.2.qcow2,format=qcow2,bus=virtio \
	  --graphics none \
	  --network network=default \
	  --arch aarch64 \
	  --cpu max \
	  --machine virt \
	  --boot uefi \
	  --console pty,target_type=serial
else
	sudo virsh start haos
	sudo virsh console haos
fi	  

Tu as créé un nouveau réseau pour que ta clé ne soit plus natée ?

depuis le début, je suis en Wifi
or il y a un problème pour faire un bridge réseau ou un réseau NAT dans ce cas
je vais essayer, je pense dans la journée, de refaire la manip avec un réseau Ethernet

1 « J'aime »

non pas de soucis particulier juste si tu es connecte en SSH tu vas perdre la connexion pendant que tu configure ton bridge mais si tu peux faire ses manipulations en local pas de soucis

alors là :frowning: je suis sec et perdu
pas de bridge, rien de spécifié en config réseau
état de mon réseau (j’ai supprimé tout ce qui est en IPv6) :

ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.93  netmask 255.255.255.0  broadcast 192.168.1.255

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0

virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.92  netmask 255.255.255.0  broadcast 192.168.1.255

option de virt-install : --network network=default
et :

virsh domifaddr "haos" --source agent 2>/dev/null 
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 lo         00:00:00:00:00:00    ipv4         127.0.0.1/8
 -          -                    ipv6         ::1/128
 enp1s0     .................    ipv4         192.168.122.193/24
 -          -                    ipv6         ...
 docker0    .................    ipv4         172.30.232.1/23
 -          -                    ipv6         ...
 hassio     .................    ipv4         172.30.32.1/23
 -          -                    ipv6         ...
 veth702d5c2 ...
 vetha8781db ...
 veth855c73e ...
 veth993a7fd ...
 veth63adb37 ...
 vethd57de71 ...

http://homeassistant.local:8123 et http://192.168.122.193:8123 sont ok

à partir d’une autre machine, seules 192.168.1.92 et 192.168.1.93 répondent au ping

j’y suis :slight_smile: :slight_smile: :slight_smile:
ça y est, ma machine est vue sur le réseau
ma version…

déclaration du bridge réseau :
dans /etc/systemd/network, ajouter les 3 fichiers :

# /etc/systemd/network/bridge-br0.netdev
[NetDev]
Name=br0
Kind=bridge
# /etc/systemd/network/br0.network
[Match]
Name=br0

[Network]
Address=192.168.1.110/24
Gateway=192.168.1.1
DNS=192.168.1.1
# /etc/systemd/network/eth0.network
[Match]
Name=eth0

[Network]
Bridge=br0

ATTENTION: il faut un réseau Ethernet, pas de Wifi
puis réinitialiser le démon réseau

sudo systemctl restart systemd-networkd

une fois la machine virtuelle démarrée, établir le routage :

#!/bin/bash
#
# redir_haos.sh
# pour les ports spécifiés, redirection de l'IPv4 de la VM HAOS vers l'IP de la machine
#	indispensable si le bridge br0 est en DHCP
#
# a faire 1 seule fois car les routages sont persistants

# nom de la VM
VM_NAME="haos"

# ports rediriges : HA, Samba
TABLE_PORTS=(8123 445)

# Verifie que virsh est installe (sinon pas de VM possible)
if ! command -v virsh &>/dev/null; then
  echo "virsh n'est pas installe. Abandon"
  exit 1
fi

# Recupere l'adresse IP de la VM
IP_VM=$(sudo virsh domifaddr "$VM_NAME" --source agent 2>/dev/null | awk '/ipv4/ {print $4}' | awk '/192.168/ {print $1}' | cut -d/ -f1)

if [ -z "$IP_VM" ]; then
  echo "Impossible de recuperer l'IP de la VM '$VM_NAME'"
  echo "la VM est demarree et que les guest tools sont installes ?"
  exit 1
fi

echo "IP de la VM : $IP_VM"

# Supprimer les anciennes regles vers le port 8123
echo "Nettoyage des anciennes regles iptables..."
for port in "${TABLE_PORTS[@]}"; do
  # PREROUTING
  sudo iptables -t nat -D PREROUTING -p tcp --dport "$port" -j DNAT --to-destination "$IP_VM:$port" 2>/dev/null
  # Supprime toute regle DNAT vers le port 8123
  sudo iptables -t nat -S PREROUTING | grep -- "--dport $port" | while read -r rule; do
    sudo iptables -t nat ${rule/-A/-D}
  done

  # POSTROUTING
  sudo iptables -t nat -D POSTROUTING -p tcp -d "$IP_VM" --dport "$port" -j MASQUERADE 2>/dev/null
  sudo iptables -t nat -S POSTROUTING | grep -- "--dport $port" | while read -r rule; do
    sudo iptables -t nat ${rule/-A/-D}
  done
done

# Ajoute les nouvelles regles
echo "Ajout des nouvelles regles iptables..."
for port in "${TABLE_PORTS[@]}"; do
  sudo iptables -t nat -A PREROUTING -p tcp --dport "$port" -j DNAT --to-destination "$IP_VM:$port"
  sudo iptables -t nat -A POSTROUTING -p tcp -d "$IP_VM" --dport "$port" -j MASQUERADE
done

# Rendre les regles persistantes
echo "Sauvegarde des regles iptables..."
sudo apt install -y iptables-persistent
sudo netfilter-persistent save

# Resultat
echo ----------------------------
adresses_ip=$(hostname -I)
echo pour les adresses :
for ip in $adresses_ip; do
    # Utiliser une expression reguliere pour verifier si l'adresse IP est de type IPv4
    if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
        echo "  $ip"
    fi
done
echo redirection des ports :
for port in "${TABLE_PORTS[@]}"; do
  echo "  $port"
done

j’ai 3 adresses du réseau local qui sont routées vers ma machine virtuelle :

  • accès par Ethernet
  • accès par Wifi
  • accès par l’IP créée dans le bridge : 192.168.1.110

je peux accéder ma machine par l’interface browser de HA (port 8123), par le réseau (Samba intégré dans les modules complémentaires)
j’ai aussi accès au Linux de base de ma machine (SSH, VNC,…suivant ce qui a été installé)

petite prise de tête mais je suis content du résultat :slight_smile:

1 « J'aime »