Faire une commande d’initialisation de la database en mode ram pour les cas où l’on est en read-only.
Tester aussi la gestion des processus pyheatpump en mode read-only.
Faire une commande d'initialisation de la database en mode ram pour les cas où l'on est en read-only.
Tester aussi la gestion des processus pyheatpump en mode read-only.
Il crée une partition de 50M en ram, y déplace la base de données de /var/run/pyheatpump/pyheatpump.sqlite3, et la remplace par un lien symbolique.
Pas encore testé, et il faut peut-être voir le contexte utilisation. Par exemple, le script doit-il éteindre le service ?
Le script est ajouté dans le commit e435d8f212475acaa801fa7039183bcf075e4b5c
Il crée une partition de 50M en ram, y déplace la base de données de `/var/run/pyheatpump/pyheatpump.sqlite3`, et la remplace par un lien symbolique.
Pas encore testé, et il faut peut-être voir le contexte utilisation. Par exemple, le script doit-il éteindre le service ?
@nas peux-tu être plus précis. Que veut dire éteindre le service? On va faire un script qui se lance avant pyHeatpump, et qui créé la structure nécessaire dans le ramfs (BDD et fichier de conf sont les seuls fichiers qui bougent)
@nas peux-tu être plus précis. Que veut dire éteindre le service? On va faire un script qui se lance avant pyHeatpump, et qui créé la structure nécessaire dans le ramfs (BDD et fichier de conf sont les seuls fichiers qui bougent)
Si la migratior peut avoir lieu dans une situation ou pyHeatpump est en fonction, il faut sans doutes recharger le service :
systemctl reload pyheatpump_supervise
Si la migratior peut avoir lieu dans une situation ou pyHeatpump est en fonction, il faut sans doutes recharger le service :
```
systemctl reload pyheatpump_supervise
```
J'ai rajouté le script d'Adafruit disponible usr le tuto :
https://learn.adafruit.com/read-only-raspberry-pi/
( https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/read-only-fs.sh )
Une question que je me pose en écrivant le script d’initialisation. Est-ce qu’on ne devrait pas inclure par défaut l’execution d’un “pip upgrade pyheatpump”, qui upgraderait l’installation si la pi est en read-write. Je suis un peu contre l’idée de mettre cette fonctionalité en mode “ro” (avec un mount -o remount,rw / suivi d’un upgrade de pyheatpump et un mount -ao remount), mais c’est vrai que dans le cas d’une sdcard en RO, c’est la seule manière de mettre à jour sans changer la SD.
Ça peut être à discuter avec les utilisateurs.
Une question que je me pose en écrivant le script d'initialisation. Est-ce qu'on ne devrait pas inclure par défaut l'execution d'un "pip upgrade pyheatpump", qui upgraderait l'installation si la pi est en read-write. Je suis un peu contre l'idée de mettre cette fonctionalité en mode "ro" (avec un mount -o remount,rw / suivi d'un upgrade de pyheatpump et un mount -ao remount), mais c'est vrai que dans le cas d'une sdcard en RO, c'est la seule manière de mettre à jour sans changer la SD.
Ça peut être à discuter avec les utilisateurs.
Je me suis finalement résolu à cloner le dépôt dans le répertoire /opt de l’image. C’est la manière la plus simple de récupérer des mises à jour des fichiers de conf (en particulier la DB et les fichiers systemd (timer et service).
Le script de pre-exec fonctionnera donc de la manière suivante :
Création du repertoire /var/run/pyheatpump
Initialisation de la base de donnée (lue depuis le dépôt)
Copie du pyheatpump.ini par défaut
Je me suis finalement résolu à cloner le dépôt dans le répertoire /opt de l'image. C'est la manière la plus simple de récupérer des mises à jour des fichiers de conf (en particulier la DB et les fichiers systemd (timer et service).
Le script de pre-exec fonctionnera donc de la manière suivante :
- Création du repertoire /var/run/pyheatpump
- Initialisation de la base de donnée (lue depuis le dépôt)
- Copie du pyheatpump.ini par défaut
Envoi a Christophe et Jules @nas pour les premiers tests.
Image générée le 25 janvier 2021 : [2021-01-11_rpios-buster_pyheatpump-ro-995bf12.img.xz](https://www.freepoteries.fr/~msleaveamix/2021-01-11_rpios-buster_pyheatpump-ro-995bf12.img.xz)
Envoi a Christophe et Jules @nas pour les premiers tests.
Il esmble que timesyncd fait péter l'horloge système de la PI en read-only. Le script read-only-mode.sh devra inclure l'activation de ntp.
Et HOP! On pourrait ajouter ça au script d'installation directement, c'est aussi utile pour le RW.
http://raspberrypi.stackexchange.com/questions/59860/ddg#59870
EDIT : Et vu que ça suffit pas, y'a aussi ça à faire
https://unix.stackexchange.com/questions/553930/ntp-wont-work-on-read-only-raspberry-pi
Mise à jour du fichier service, ok au commit 8a4438b
Problème de connection HTTP sorti de nulle part, fixé avec les étapes suivantes (sur la rpi direct) :
```
mount -o remount,rw /
mkdir /var/lib/pyheatpump
echo 'tmpfs /var/lib/pyheatpump tmpfs nodev,nosuid 0 0' >> /etc/fstab
```
Mise à jour du fichier service, ok au commit 8a4438b
Prévoir une re-livraison de la dernière version en mode “debug” (rw + rsyslog)
NB : J’ai laisse le SSH activé dans la dernière image
Livraison faite le 27/01/2021 avec l'image suivante.
[http://www.freepoteries.fr/~msleaveamix/2021-01-27_rpios-buster_pyheatpump-ro-3ab8af7.img.xz](http://www.freepoteries.fr/~msleaveamix/2021-01-27_rpios-buster_pyheatpump-ro-3ab8af7.img.xz)
Prévoir une re-livraison de la dernière version en mode "debug" (rw + rsyslog)
NB : J'ai laisse le SSH activé dans la dernière image
Faire une commande d’initialisation de la database en mode ram pour les cas où l’on est en read-only.
Tester aussi la gestion des processus pyheatpump en mode read-only.
Le script est ajouté dans le commit e435d8f212
Il crée une partition de 50M en ram, y déplace la base de données de
/var/run/pyheatpump/pyheatpump.sqlite3
, et la remplace par un lien symbolique.Pas encore testé, et il faut peut-être voir le contexte utilisation. Par exemple, le script doit-il éteindre le service ?
@nas peux-tu être plus précis. Que veut dire éteindre le service? On va faire un script qui se lance avant pyHeatpump, et qui créé la structure nécessaire dans le ramfs (BDD et fichier de conf sont les seuls fichiers qui bougent)
Si la migratior peut avoir lieu dans une situation ou pyHeatpump est en fonction, il faut sans doutes recharger le service :
J’ai rajouté le script d’Adafruit disponible usr le tuto :
https://learn.adafruit.com/read-only-raspberry-pi/
( https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/read-only-fs.sh )
Une question que je me pose en écrivant le script d’initialisation. Est-ce qu’on ne devrait pas inclure par défaut l’execution d’un “pip upgrade pyheatpump”, qui upgraderait l’installation si la pi est en read-write. Je suis un peu contre l’idée de mettre cette fonctionalité en mode “ro” (avec un mount -o remount,rw / suivi d’un upgrade de pyheatpump et un mount -ao remount), mais c’est vrai que dans le cas d’une sdcard en RO, c’est la seule manière de mettre à jour sans changer la SD.
Ça peut être à discuter avec les utilisateurs.
Je me suis finalement résolu à cloner le dépôt dans le répertoire /opt de l’image. C’est la manière la plus simple de récupérer des mises à jour des fichiers de conf (en particulier la DB et les fichiers systemd (timer et service).
Le script de pre-exec fonctionnera donc de la manière suivante :
Documentation mode read-only pour buster : https://medium.com/@andreas.schallwig/how-to-make-your-raspberry-pi-file-system-read-only-raspbian-stretch-80c0f7be73
Image générée le 25 janvier 2021 : 2021-01-11_rpios-buster_pyheatpump-ro-995bf12.img.xz
Envoi a Christophe et Jules @nas pour les premiers tests.
Il esmble que timesyncd fait péter l’horloge système de la PI en read-only. Le script read-only-mode.sh devra inclure l’activation de ntp.
Et HOP! On pourrait ajouter ça au script d’installation directement, c’est aussi utile pour le RW.
http://raspberrypi.stackexchange.com/questions/59860/ddg#59870
EDIT : Et vu que ça suffit pas, y’a aussi ça à faire
https://unix.stackexchange.com/questions/553930/ntp-wont-work-on-read-only-raspberry-pi
Problème de connection HTTP sorti de nulle part, fixé avec les étapes suivantes (sur la rpi direct) :
Mise à jour du fichier service, ok au commit 8a4438b
Livraison faite le 27/01/2021 avec l’image suivante.
http://www.freepoteries.fr/~msleaveamix/2021-01-27_rpios-buster_pyheatpump-ro-3ab8af7.img.xz
Prévoir une re-livraison de la dernière version en mode “debug” (rw + rsyslog)
NB : J’ai laisse le SSH activé dans la dernière image