janvier 10, 2019

Raspberry Pi et OverlayFS

Dans cette article, on voit les commandes qui permettent d'installer un overlay dans notre Raspberry Pi pou une pas faire trop d'écritures sur la carte mémoire.

Raspberry Pi et OverlayFS

Cet article est l'article lié à la vidéo de la chaine YouTube.

J'ai mis les commandes dans des boites de code pour qu'on puisse faire facilement des copier-collers.

C'est parti pour les commandes !

La première étape est de récupérer des fichiers, on peut les récupérer avec les commandes suivantes:

cd /tmp
wget https://github.com/hansrune/domoticz-contrib/raw/master/utils/mount_overlay
wget https://github.com/hansrune/domoticz-contrib/raw/master/init.d/saveoverlays-stretch
wget https://github.com/hansrune/domoticz-contrib/raw/master/utils/rootro
wget https://github.com/hansrune/domoticz-contrib/raw/master/init.d/syncoverlayfs.service

On va ensuite renommer saveoverlays-stretch en saveoverlays

mv saveoverlays-stretch saveoverlays

Puis on va rendre ces fichiers exécutables

chmod a+rx saveoverlays mount_overlay rootro


Maintenant que c'est fait, on les copie dans les bons endroits

sudo cp mount_overlay /usr/local/bin/
sudo cp saveoverlays /etc/init.d/
sudo cp rootro /usr/local/bin/
sudo ln -s rootro /usr/local/bin/rootrw
sudo cp syncoverlayfs.service /lib/systemd/system/

Ensuite dans le fichier '/lib/systemd/system/syncoverlaysfs.service' on vérifie que la ligne

RequiresMountsFor

contient les répertoires /home et /var qu'on veut activer en tant que overlayfs.

Puis on crée un fichier '/etc/default/saveoverlays' qui va contenir les deux lignes présentées dans la vidéo

KILLPROCS="domoticz mosquitto" 
PRIORITYFILES="/var/log/fake-hwclock.data /var/lib/domoticz/domoticz.db"

L'opération suivante va être la désactivation du swap avec les commandes suivantes

sudo dphys-swapfile swapoff
sudo dphys-swapfile uninstall 
sudo update-rc.d dphys-swapfile disable
sudo systemctl disable dphys-swapfile

Après, on a un fichier de /etc dans lequel le système va vouloir écrire régulièrement. Il sera donc nécessaire de le déplacer dans /var et d'en faire un lien symbolique.

sudo systemctl disable fake-hwclock.service
sudo systemctl stop fake-hwclock.service
sudo mv /etc/fake-hwclock.data /var/log/fake-hwclock.data
sudo ln -s /var/log/fake-hwclock.data /etc/fake-hwclock.data

On installe maintenant les outils fuse et lsof

sudo apt-get install fuse lsof

puis on active le nouveau service d'overlay au boot de la machine

sudo systemctl daemon-reload
sudo systemctl enable syncoverlayfs.service

Pour permettre au système de démarrer en lecture seule avant d'activer l'overlay, on modifie le boot (et on indique qu'on ne veut pas de swap au passage). C'est dans le fichier '/boot/cmdline.txt'. On ajoute à la fin de la ligne de boot, les 3 mots

noswap fastboot ro

Il faut maintenant modifier le fichier '/etc/fstab' comme indiqué dans la vidéo.

Et enfin, on va créer des répertoires complémentaires pour permettre au overlayfs de fonctionner avec le fameux script à recopier dans le shell. Le voici (faites un copier coller pourne pas faire d'erreurs)

sudo su -
for D in /home /var
do
mv -v ${D} ${D}_org
cd ${D}_org
find . | cpio -pdum ${D}_stage
mkdir -v ${D} ${D}_rw ${D}/.overlaysync ${D}_org/.overlaysync
done
exit