[Résolu] Live-USB et répertoire etc persistant

Bonjour,

Je tente de créer une image debian à ma sauce sur clé usb/carte SD.

Mon projet est bien avancé et à ce jour j’ai réussi à:

  • créer ma version debian avec les paquets-préinstallés
  • rendre le tout bootable
  • valider le bon fonctionnement

J’ai ensuite cherché à faire en sorte que le linux soit un live-usb.
Là aussi j’ai bien avancé: tout fonctionne en live, comme souhaité.

Je cherche à présent à rendre des répertoires spécifiques persistants sur cette version live.
J’ai donc préparé une partition ext4 avec le label "persistence"et créé un fichier persistence.conf avec mes dossiers souhaités à savoir:
/root
/etc

Le /root fonctionne comme désiré. Si je crée des fichiers dedans je les retrouve bien après reboot.
En revanche, ce n’est pas le cas du /etc. Si je modifie le fichier /etc/network/interfaces par exemple, cela n’est pas conservé après reboot.
S’agissant d’un dossier “système”, je me doute que cela n’est pas aussi simple.

C’est la dernière étape avant finalisation de mon projet…
Pouvez-vous m’aider sur le sujet ?

Merci.

Bonjour lobo

Je pense que dans ton fichier persistence.conf
tu devrais utiliser l’option union pour le répertoire /etc

/root
/etc union

Tu peux peut-être aussi spécifier une configuration pour l’interface réseau
en ajoutant des paramètres du noyau dans la ligne de commande du chargeur de boot

Extrait de man live-boot :

…
ip=[CLIENT_IP]:[SERVER_IP]:[GATEWAY_IP]:[NETMASK]:[HOSTNAME]:[DEVICE]:[AUTOCONF] [,[CLIENT_IP]:[SERVER_IP]:[GATEWAY_IP]:[NETMASK]:[HOSTNAME]:[DEVICE]:[AUTOCONF]]*

    Let you specify the name(s) and the options of the interface(s) that should be configured at boot time.
    Do not specify this if you want to use dhcp (default).
    It will be changed in a future release to mimick official kernel boot param specification
       (e.g. ip=10.0.0.1::10.0.0.254:255.255.255.0::eth0,:::::eth1:dhcp).
…

Par exemple, voilà la ligne de paramètres que je rajoute au moment du boot aux versions Live debian
afin d’avoir le clavier et les locales en français

append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes

Merci pour cette réponse.
Je n’avais en effet pas pensé à l’option “union”.
Malheureusement, je viens de tester et si ça me sauvegarde bien les modification dans mon /etc dans la partition “persistence” , ça ne les charge pas après reboot (comme si j’avais un /etc live et à côté un /etc sur la partition persistence: bizarre…)
Je continue de creuser là-dessus.

Concernant les paramètres possible avec le boot, je m’en sers en effet déjà pour le clavier FR, la sortie console et autres. En revanche, il faut absolument que je puisse modifier voir créer des fichiers de conf dans /etc et qu’ils soient conservés (pour du dhcp serveur, du vlan ou autre …)

Comme j’en avais un peu assez de spécifier ces paramètres de boot à la main,
j’avais créé un script qui modifiait le fichier /isolinux/live.cfg dans le fichier image ISO
(mais ça fait longtemps que je ne l’ai pas lancé…)

EDIT : Je viens de constater que ce script est maintenant obsolète car les fichiers image ISO Live ont maintenant un menu permettant de choisir la localisation (langage)

La même méthode pourrait être utilisée pour reconfigurer l’interface réseau,
mais je ne sais pas si ça pourra convenir à ton fichier image ISO

Re bonjour, et encore merci de l’intérêt porté à mon casse-tête.
J’utilise en effet un fichier cfg pour garder les paramètres en dur.

Mais en effet, cela ne suffit pas pour tout ce que je souhaite faire (possibilité de modifier les fichiers de conf des différents services réseau).

Je commence à explorer d’autres pistes

  • faire une partition /etc à part
  • exclure /etc de mon fichier squashfs

Je tente également de voir s’il est possible de faire un squashfs pour “/” et un autre pour /etc.
Cela me permettrait par exemple de faire mes modifications et de regénérer à chaud le fichier squashfs de /etc (ce qui est bien plus rapide que de refaire toute l’image). Si j’arrive bien à crééer un squashfs pour / et un autre pour /etc, je ne sais en revanche pas s’il est possibe de booter sur plusieurs fichiers squashfs…

Merci.

Bonjour

Je viens de rajouter un EDIT dans mon précédent message.


Peut-être, en fonction de la façon dont tu as créé ta version Live,
en mettant juste le répertoire racine avec le paramètre union dans le fichier persistence.conf

/ union

Bonjour,

Après pas mal de recherches et de tests (dans tous les sens), j’ai enfin trouvé la solution.

Mon soucis persistait malgré “/ union” dans le fichier persistence.conf !
Je me suis alors rendu compte que les fichiers comme /etc/dhcpd/dhcpd.conf par exemple, gardaient bien les modifications après reboot, mais pas le fichier /etc/network/interfaces.

Grâce à ce lien https://lists.debian.org/debian-live/2008/05/msg00126.html j’ai pu comprendre que initrd écrasait le fichier de configuration des interfaces réseau.
J’ai donc cherché à décompresser l’image initrd pour modifier le fameux script mais en fait il n’y a pas besoin : il suffit simplement d’ajouter à la ligne “append” du fichier de boot (pour ma part syslinux.cfg) l’option ip=frommedia à la suite des autres options, et miracle ! Les modifications du fichier /etc/network/interfaces sont alors bien conservées !

1 J'aime

Merci pour le retour :slight_smile:

Merci pour l’aide :slight_smile: