Sto lavorando a un progetto in cui gli aggiornamenti a Raspberry PI avverranno su HTTP e Raspberry PI non sarà direttamente accessibile (non si possono semplicemente scambiare le carte).
Vorrei avere una configurazione della partizione in questo modo:
- Partizione 1- / boot (contiene i kernel per entrambe le partizioni)
- Partizione 2- / (partizione di ripristino)
- Partizione 3- / (partizione primaria)
Quando un aggiornamento si interrompe e Raspberry PI entra in un ciclo di riavvio o si blocca all'avvio, vorrei che l'utente fosse in grado di premere un pulsante, che attiva una linea GPIO, che causerebbe l'avvio del caricatore di avvio nel partizione di ripristino anziché la partizione primaria.
La partizione di ripristino non verrà mai aggiornata, quindi sarebbe al sicuro.
Vedo un paio di opzioni:
- Avvia sempre nella partizione di ripristino, controlla GPIO, quindi avvia nella partizione primaria senza premere alcun pulsante
- GPIO viene controllato direttamente dal caricatore di avvio
Sto fondamentalmente cercando di fare qualcosa di simile a quello che fanno i router, dove se tieni premuto reset mentre si avvia, puoi TFTP su una nuova immagine o qualcosa del genere.
È possibile con Raspberry PI? Se è così, c'è qualche documentazione per fare questo genere di cose?
Modificare:
Ho trovato questa risposta a questa domanda correlata: è possibile eseguire il dual boot dalla scheda SD?
Un commento sulla domanda precedente mi ha portato qui: http://www.berryterminal.com/doku.php/berryboot . Sembra promettente, ma dovrò ricercarlo di più per vedere se riesco a ottenere una lettura GPIO da esso. Se qualcuno ha qualche esperienza con esso, sarei molto interessato.
/boot
(RO), /
(RO), /var
(RW), /home
(RW). Il problema iniziale era la corruzione del filesystem quando l'alimentazione veniva interrotta durante l'avvio. Mi piacerebbe comunque scrivere / trovare un bootloader di 2 ° stadio.