Ich arbeite an einem Projekt, bei dem Upgrades auf den Raspberry PI über HTTP durchgeführt werden und auf den Raspberry PI nicht direkt zugegriffen werden kann (nicht nur Karten austauschen können).
Ich hätte gerne eine Partition wie folgt eingerichtet:
- Partition 1- / boot (enthält Kernel für beide Partitionen)
- Partition 2- / (Wiederherstellungspartition)
- Partition 3- / (primäre Partition)
Wenn ein Upgrade fehlschlägt und der Raspberry PI in eine Neustartschleife gerät oder beim Booten hängen bleibt, möchte ich, dass der Benutzer eine Taste drücken kann, die eine GPIO-Leitung auslöst, wodurch der Bootloader in die startet Wiederherstellungspartition anstelle der primären Partition.
Die Wiederherstellungspartition würde niemals aktualisiert werden, daher wäre dies sicher.
Ich sehe einige Optionen:
- Starten Sie immer die Wiederherstellungspartition, überprüfen Sie GPIO und starten Sie dann die primäre Partition, ohne dass eine Taste gedrückt wurde
- GPIO wird direkt vom Bootloader überprüft
Ich versuche im Grunde, etwas Ähnliches wie Router zu tun. Wenn Sie beim Booten das Zurücksetzen gedrückt halten, können Sie über ein neues Image oder etwas anderes TFTP-fähig machen.
Ist das mit dem Raspberry PI möglich? Wenn ja, gibt es eine Dokumentation dafür?
Bearbeiten:
Ich habe diese Antwort auf diese verwandte Frage gefunden: Ist es möglich, von der SD-Karte aus doppelt zu booten?
Ein Kommentar zu der obigen Frage führte mich hierher: http://www.berryterminal.com/doku.php/berryboot . Das sieht vielversprechend aus, aber ich muss es genauer untersuchen, um zu sehen, ob ich einen GPIO daraus lesen kann. Wenn jemand Erfahrung damit hat, wäre ich sehr interessiert.
/boot
(RO), /
(RO), /var
(RW), /home
(RW). Das anfängliche Problem war eine Beschädigung des Dateisystems, wenn die Stromversorgung während des Startvorgangs unterbrochen wird. Ich würde trotzdem gerne einen Bootloader der 2. Stufe schreiben / finden.