2010-11-17 3 views
1

J'ai un système basé sur linux busybox sur une puce. Je veux fournir une mise à jour aux utilisateurs sur le terrain et cela nécessite la mise à jour de certains fichiers dans/lib/usr/bin et/etc. Je ne pense pas que ce soit simple de dénouer les fichiers directement. Existe-t-il un moyen sûr de le faire, y compris les fichiers/lib qui peuvent être utilisés?Un moyen sûr de remplacer les librairies linux sur le flash embarqué

Répondre

2

Certaines choses que je préfère fortement dans les systèmes embarqués:

a) que le système de fichiers racine est un disque virtuel non compressée d'une image en flash. C'est génial parce que vous pouvez expérimenter avec le contenu de votre cœur et si vous vous trompez, tout ce dont vous avez besoin est un redémarrage pour revenir à la configuration flashée. Lorsque vous avez testé un ensemble de modifications que vous aimez, vous générez une nouvelle image de système de fichiers racine compressée et faites-la clignoter. B) Utilisez un chargeur de démarrage tel que u-boot pour faire vos mises à jour - en faisant clignoter une nouvelle image complète - plutôt que d'essayer de changer le système Linux pendant qu'il est en cours d'exécution. Bien que la copie flashée ne soit pas en ligne, vous pouvez la faire clignoter en cours d'exécution. Si vous flashez une mauvaise version, u-boot est toujours là pour en flasher un bon. C) Les processeurs qui ont des chargeurs d'amorçage UART (ou même USB) masquant-rom, rendant le système non démontable - rien de plus qu'un ordinateur portable et un convertisseur de câble série ou usb/série est jamais nécessaire pour faire la maintenance (c.-à-d. obtenir une image u-boot de travail sur le flash, que vous utilisez ensuite pour obtenir un noyau Linux fonctionnant + image racine fs compressée dessus)

1

Idéalement votre appareil flash est assez grand pour diviser en deux systèmes de fichiers complets et chaque mise à jour met à jour les autres côté (plus la copie sur les fichiers de configuration si nécessaire) et met à jour la configuration de démarrage pour démarrer à partir du côté mis à jour. Moins idéal est de mettre à jour sur place, mais avoir un moyen de détecter l'échec de démarrage (chien de garde qui n'est pas touché après le démarrage, par exemple) et avoir une plus petite partition de secours qui est capable d'accepter une autre mise à jour cloison.

En ce qui concerne la mise à jour sur place d'un système de fichiers en direct, utilisez simplement un vrai programme d'installation (qui déplacera les fichiers cible avant de les remplacer pour éviter le problème que vous décrivez).

0

Vous avez reçu deux excellentes réponses ci-dessus et je vous encourage fortement à faire ce que vous avez été conseillé à.

Il existe cependant un moyen plus simple. En fait vous pouvez juste décompacter vos bibliothèques, à condition que le processus qui le fait est lié statiquement.

Questions connexes