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-toolsiproute2bash(nécessaire pourwg-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,:8080par défaut) ; - le daemon gRPC (
grpc.enabled,grpc.bind,grpc.port— activable,:9080par 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 :
| Fichier | Rôle |
|---|---|
cmdline.txt | Arguments passés au noyau au démarrage. |
config.txt | Configuration du firmware Raspberry Pi (overlays, écran…). |
genimage.cfg | Disposition de l'image : FAT32 boot 64 Mo + racine ext4. |
post-build.sh | Hook exécuté après la construction du rootfs. |
post-image.sh | Hook 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.