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
.
/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.