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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.