Je travaille sur un projet où les mises à niveau du Raspberry PI se feront via HTTP, et le Raspberry PI ne sera pas directement accessible (ne peut pas simplement échanger des cartes).
J'aimerais avoir une configuration de partition comme ceci:
- Partition 1- / boot (contient des noyaux pour les deux partitions)
- Partition 2- / (partition de récupération)
- Partition 3- / (partition principale)
Lorsqu'une mise à niveau se passe mal et que le Raspberry PI entre dans une boucle de redémarrage ou se bloque au démarrage, j'aimerais que l'utilisateur puisse appuyer sur un bouton, ce qui déclenche une ligne GPIO, ce qui entraînerait le chargeur de démarrage à démarrer dans le partition de récupération au lieu de la partition principale.
La partition de récupération ne serait jamais mise à niveau, ce serait donc sûr.
Je vois quelques options:
- Toujours démarrer dans la partition de récupération, vérifier GPIO, puis démarrer dans la partition principale sans bouton enfoncé
- GPIO est vérifié directement par le chargeur de démarrage
J'essaie essentiellement de faire quelque chose de similaire à ce que font les routeurs, où si vous maintenez la réinitialisation pendant le démarrage, vous pouvez TFTP sur une nouvelle image ou quelque chose.
Est-ce possible avec le Raspberry PI? Si oui, existe-t-il une documentation pour faire ce genre de chose?
Éditer:
J'ai trouvé cette réponse à cette question connexe: Est-il possible de faire un double démarrage à partir de la carte SD?
Un commentaire sur la question ci-dessus m'a conduit ici: http://www.berryterminal.com/doku.php/berryboot . Cela semble prometteur, mais je devrai le rechercher davantage pour voir si je peux obtenir une lecture GPIO. Si quelqu'un en a l'expérience, je serais très intéressé.
/boot
(RO), /
(RO), /var
(RW), /home
(RW). Le problème initial était la corruption du système de fichiers lorsque l'alimentation est coupée au démarrage. Je voudrais quand même écrire / trouver un chargeur de démarrage de 2ème étape.