Mettre à jour les rootfs tout en préservant / etc

0

J'essaie de trouver une solution pour mettre facilement à jour un périphérique Linux intégré.

J'ai regardé autour de moi et l'une des solutions que j'ai trouvée est d'avoir 2 partitions rootfs. Disons A et B. L’un d’eux est actif, c’est-à-dire chargé par le chargeur de démarrage au démarrage. Disons A. Ensuite, lorsque la mise à jour est terminée, le nouveau rootfs est écrit dans B, puis le chargeur de démarrage est reconfiguré pour utiliser B et finalement le système redémarre.

Cette stratégie semble être répandue et utilisée par différents logiciels de mise à jour tels que SWUpdate.

Ma question est la suivante: /etc ? En faisant ce qui est décrit ci-dessus, /etc sera complètement remplacé chaque fois que le système est mis à jour. Cela pourrait entraîner des problèmes tels que l’effacement de la clé d’hôte SSH (située dans /etc/ssh ). Cela pourrait également effacer les paramètres utilisateur tels que les configurations ip.

Existe-t-il une pratique recommandée dans de tels cas? Je pourrais penser à mettre les fichiers sélectionnés dans une troisième partition et avoir des liens symboliques dans / etc pointant vers eux. Ou avoir un script de mise à jour qui copie les fichiers sélectionnés de l’ancien /etc à la nouvelle /etc.

Benjamin T
la source
Quelques idées, certainement pas une réponse: si vous souhaitez conserver l’ensemble du dossier, vous pouvez créer une troisième partition et la monter sur /etc. Si votre noyau le supporte, vous pouvez utiliser SuperpositionFS . De cette façon, vous pourrez toujours mettre à jour des fichiers en /etc mais la configuration de l'utilisateur sera superposée par dessus. De plus, les paramètres d'usine et les paramètres utilisateur sont séparés, ce qui vous permet d'importer / exporter facilement les paramètres utilisateur ou de restaurer les paramètres d'usine. Cependant, comme je ne connais rien aux systèmes embarqués, mes idées pourraient être terriblement fausses.
danzel