Aller au contenu principal

Composants de l'OS

L'arbre externe nodes/os définit des paquets Buildroot, un overlay de système de fichiers et des fichiers de carte.

Paquets Buildroot

leukos-node

Compile et installe le daemon C++ du node.

  • Dépendances : libgpiod, jansson, sqlite, mosquitto, openssl.
  • Méthode : SITE_METHOD = local (le source vient du dépôt lui-même).
  • Installe le binaire du daemon et sa configuration par défaut.

leukos-ui

Compile et installe l'IHM Qt6.

  • Dépendances : qt6base, qt6declarative, qt6svg.
  • Installe le binaire en /usr/bin/leukos-ui.

Réseau sécurisé (WireGuard)

Les defconfigs leukOS activent WireGuard avec :

  • wireguard-tools
  • iproute2
  • bash (nécessaire pour wg-quick)

Overlay du système de fichiers

board/leukos/rpi/rootfs-overlay/ est copié tel quel sur la racine de l'image :

etc/
├── wpa_supplicant.conf # Wi-Fi (country=FR)
├── init.d/
│ ├── S08leukos-log-meta # génère node_id/machine_id/mac pour rsyslog
│ ├── S89wireguard # démarre WireGuard (si configuré)
│ ├── S90leukos-node # démarre le daemon
│ ├── S91leukos-ui # démarre l'IHM Qt
│ └── S92leukos-hub # démarre le hub (optionnel)
├── leukos/
│ └── node.json # configuration du node
├── wireguard/
│ └── wg0.conf.example # modèle de configuration VPN
├── rsyslog.d/
│ └── 40-mosquitto-forward.conf # forward des logs mosquitto vers le central
└── mosquitto/
└── mosquitto.conf # listener 1883, allow_anonymous true

Configuration du node (node.json)

Fichier /etc/leukos/node.json chargé par le daemon (Config). Il décrit :

  • l'identifiant du node ;
  • la table des relais, vannes et compteurs (avec broches GPIO) ;
  • les plannings du scheduler ;
  • les paramètres MQTT (broker, topic de base) ;
  • l'API HTTP locale (api.enabled, api.bind, api.port — activable, :8080 par défaut) ;
  • le daemon gRPC (grpc.enabled, grpc.bind, grpc.port — activable, :9080 par défaut) ;
  • l'intervalle de boucle poll_interval_ms (250 ms par défaut).

Fichiers de carte (Raspberry Pi)

board/leukos/rpi/ contient les fichiers spécifiques à la plateforme :

FichierRôle
cmdline.txtArguments passés au noyau au démarrage.
config.txtConfiguration du firmware Raspberry Pi (overlays, écran…).
genimage.cfgDisposition de l'image : FAT32 boot 64 Mo + racine ext4.
post-build.shHook exécuté après la construction du rootfs.
post-image.shHook exécuté après la génération de l'image.

Broker MQTT embarqué

Mosquitto est installé et configuré via mosquitto.conf :

listener 1883
allow_anonymous true

Il fournit le bus local 127.0.0.1:1883 utilisé par le daemon et le bridge du hub.

Les logs Mosquitto (notice/warning/error) sont aussi forwardés par rsyslog via /etc/rsyslog.d/40-mosquitto-forward.conf vers un collecteur central (par défaut es.data.server:514 en TCP).

Chaque log forwardé inclut des identifiants machine :

  • node_id (issu de /etc/leukos/node.json),
  • machine_id (issu de /etc/machine-id),
  • mac (première interface réseau non-loopback).

Ces champs sont générés au boot par S08leukos-log-meta dans /etc/rsyslog.d/01-leukos-meta.conf.

WireGuard embarqué

Voir la page WireGuard pour l'activation, les fichiers et la vérification du tunnel.