Comment revenir à l'état d'origine après une session (comme avec un profil temporaire)

Bonjour tout le monde,
Est-il possible de créer des profils temporaires sous raspbian?
Je m’explique : je fais des animations numériques avec quelques raspberry pi et je voudrais qu’à la fin de chaque séance, toutes les modifications effectuées durant celle-ci disparaissent et que je revienne à l’image d’origine, sans avoir à reformater les cartes SD et à y réinstaller l’image d’origine.
Merci.

hello,

difficile de se faire une idée de ton appli mais si tu dois démarrer toujours du ou des mêmes fichiers (image, script, ???), il me semble que le plus simple serait, au début de ton script, de commencer par dupliquer ce(s) fichier(s) et de ne modifier que ce(s) fichier(s) dupliqué(s).

sous linux on peut utiliser sh pour avoir un script qui enchaîne les taches. donc on crée un fichier de script avec au debut :

#!/bin/sh

puis la copie des fichiers de la forme :

cp /home/pi/mon_fichier_d_origine /home/pi/le_fichier_a_utiliser

/home/pi/ représente un exemple de chemin vers le fichier

ensuite la commande pour lancer ton appli

pour rendre ce script exécutable on fait ds une console:
chmod +x le_fichier_de_script.sh

et hop on lance par :

./le_fichier_de_script.sh

ici ./ représente le chemin si on est positionner ds le répertoire du script.

Hello aussi,
Merci @bof pour cette réponse (je la garde sous le coude pour plus tard), mais en fait, il ne s’agit pas de lancer une appli ou un script, mais bien d’une session de travail entière.
C’est à dire que les participants à l’atelier allume les raspberry, font du scratch, des recherches internet, du traitement de texte, etc etc, mais je voudrais que toutes les modifications, créations et autres effectuées pendant la session de travail disparaissent à l’extinction et que quand on lance une nouvelle session, on reparte à l’état d’origine. Un peu comme ce qui se passe sous Windows quand on est sur un profil temporaire.
Je ne sais pas si je suis bien clair, désolé…

Ma solution serais de faire des images.

Je crois que ce qui t’embête le plus est de devoir tout reconfigurer quand tu passe d’une image vierge.

Alors ceci va peut-être t’aider.

  1. Tu install ben sur ton Raspbian et fait tout les settings pour qui soit « ready to use ».
  2. Tu prend la carte SD et la met sur ton ordinateur,
  3. avec Win32DiskImager, tu te crée une nouvelle image (avec « read »).
  4. Tu remet la carte SD dans le RPi et tu laisse le monde travailler.

Quand tu veux revenir a la version « normal »;

  1. Reprend la carte SD du RPi et install la dans l’ordi,
  2. Ré-ouvre Win32DiskImager et « Write » l’image fait avant sur la carte SD
  3. Remet la carte SD dans le RPi et voila!

Si tu veux réduire la taille de l’image pour éviter d’avoir trop a copier, tu peux installer la carte SD dans un ordinateur qui va démarrer avec GParted. Avec lui, tu peux réduire la taille de la partition. Réduit la mais garde un peux d’espace quand même, pour éviter une erreur du style « write error, disk full ». ET après tu fait le Backup.

Pour regagner l’espace, simplement aller dans le « raspi-config » et demander d’étendre la partition.

Ceci me semble quand même la solution la plus simple et efficace. C’est sur que tu pourrais faire le « ménage » après, mais reste qu’il risque d’y avoir quand même des traces de chaque visite et que retirer des ajouts est beaucoup plus compliqué que des ajouters et compiler. C’est un peu comme sous Windows; même si tu efface un programme, il reste toujours des traces dans des dossiers et a base de registre.

Bonjour,
Une autre piste:

https://www.debian-fr.xyz/viewtopic.php?t=1071

A+

Merci @levelKro , mais c’est la technique que j’utilise déjà, c’est ce que je voulais dire par

Le problème, c’est que j’ai une dizaine de poste à chaque fois, du coup, c’est un peu laborieux, surtout quand j’ai deux séances dans la même journée :sweat:

Merci @jelopo , je vais essayer ça.

Tu sais, il existe des « multi copieur », soit copier sur plusieurs médias la même image/ même fichiers. Pour les clés USB c’est facilement trouvable, et peut s’ajuster aux cartes SD.

Sinon il n’y as pas de solution miracle, sauf créer un script avec qui « monitor » des dossiers précis et qui peut suivre les modifications et en noter les changements, après il faut juste faire un autre script, qui « corrige » les changements.

Après, c’est trouver moyen de lancer la commande de correction sur tout les postes.

Sinon, tu peux aussi regarder sur le coter des systèmes en lecture seul. Il as quelques moyens de faires, tu feras une recherche si tu désire en savoir plus. Mais tu peux déplacer le dossier « /home » par exemple sur une clé USB, ou lancer le OS comme sur les Live CD, ou la session OS est chargé en mémoire au lieu du disque dur lui même (ramdisk). Tu peux aussi regarder sur le démarrage réseau. Les cartes SD contient qu’un boot minimal, mais tous le OS est chargé depuis une source sur le réseau. Il existe plusieurs OS compatible et quelques moyens de le faire. Encore la si tu veux en savoir plus, Google, mais l’avantage est que tu gère une seul source, et selon la plateforme choisi, tu peux faires par quelques moyens; disque dur distant, copie du source en local, local avec ressource et « template » sur le réseau.

Mais j’ai jamais testé vraiment ces méthodes. Alors je te parle en théorie. Après c’est de savoir si un Raspberry Pi peux faire l’un ou l’autre de ces moyens. Regarde aussi du côté des « VPS », les serveur Virtual Privé. Il sont basé sur des Snapshot (image) d’OS. C’est un peu comme ma proposition dans mon autre message, mais c’est de voir la possibilité de le faire à distance, d’une certaine manière.

Mais dans tout les cas, il faudra du temps, soit pour monter les structure de ta solution choisi, sois durant le temps requis pour appliquer les RaZ souhaités.

Faut regarder aussi ce qui va être créés et modifiés. Si ce n’est que des documents dans le « /home/nomutilisateur », il est simple de créer et limiter les actions d’un user et rendre le système en lecture seul pour lui. Avec des ajustements dans les droits et tu peux donner accès au ressources désiré uniquement.

Bref, ce n’est pas impossible de réaliser ce que tu veux, il y a plusieurs moyens avec chacun leur point fort et faible. Alors regarde tes possibilité logistique et tes besoins pour mieux analyse et recherche les solutions possibles.

Good luck :slight_smile:

1 « J'aime »

Merci pour ces pistes, je vais aller fouiller de ces côtés là. :wink:

Bonjour,

Sinon, je peux proposer une autre approche:
1 - Créer un utilisateur « modele »
2 - Configurer l’environnement utilisateur pour qu’il soit opérationnel
3 - Tester cet utilisateur « modele »
4 - Désactiver cet utilisateur pour que personne ne se connecte dessus
5 - Créer tous les utilisateurs standard
6 - Copier l’environement de « modèle » vers « standard » avec rsync
# sudo rsync -avt /home/modele /home/standard
# sudo chown -R standard:standard /home/standard
7 - A chaque fois que nécessaire (fin de session ou redémarrage ou lancement manuel)
vider tous les fichiers modifiés par « standard »
# sudo rsync -avt --delete /home/modele /home/standad
# sudo chown -R standard:standard /home/standard

Dans ce cas, rsync ne doit recopier que les fichier modifiés et supprimer tous les fichiers créés. Il me semble que ça devrait être très rapide.

A+

2 « J'aime »

Merci @jelopo ,
J’aime beaucoup cette idée, je teste ça dès que je récupèrerai mon troupeau de framboises.
A bientôt.

Salut,

Utilisant pas mal Rsync, j’avais une approche très similaire à celle de @jelopo donc je vais me contenter de dire : +1

Sinon, une aure idée qui me vient « là, comme ça » (non réfléchie et non testée) :
Si une session dure forcément moins de 4h, on peut sans doute jouer avec un script qui lance un find puis un delete.
A la fin de session, on éteint en lançant un script qui fait :

  • Tout ce qui est créé depuis moins de 4h est viré
  • Un Rsync lance une restauration des fichiers depuis un dossier caché vers les endroits voulus.
  • Poweroff
    Et pouf, retour à l’origine au « reboot » suivant.

++