Estoy trabajando en un proyecto donde las actualizaciones de Raspberry PI se realizarán a través de HTTP, y no se podrá acceder directamente a Raspberry PI (no solo se pueden intercambiar tarjetas).
Me gustaría tener una configuración de partición así:
- Partición 1- / boot (contiene núcleos para ambas particiones)
- Partición 2- / (partición de recuperación)
- Partición 3- / (partición primaria)
Cuando una actualización falla y el Raspberry PI entra en un ciclo de reinicio, o se cuelga en el arranque, me gustaría que el usuario pueda presionar un botón, que activa una línea GPIO, lo que provocaría que el cargador de arranque se inicie en el partición de recuperación en lugar de la partición primaria.
La partición de recuperación nunca se actualizaría, por lo que esto sería seguro.
Veo un par de opciones:
- Siempre inicie en la partición de recuperación, verifique GPIO, luego inicie en la partición primaria sin presionar ningún botón
- GPIO es verificado por el gestor de arranque directamente
Básicamente, estoy tratando de hacer algo similar a lo que hacen los enrutadores, donde si mantiene presionado el reinicio mientras se inicia, puede TFTP sobre una nueva imagen o algo así.
¿Es esto posible con el Raspberry PI? Si es así, ¿hay alguna documentación para hacer este tipo de cosas?
Editar:
Encontré esta respuesta a esta pregunta relacionada: ¿Es posible realizar un arranque dual desde la tarjeta SD?
Un comentario sobre la pregunta anterior me llevó aquí: http://www.berryterminal.com/doku.php/berryboot . Esto parece prometedor, pero tendré que investigarlo más para ver si puedo obtener una lectura GPIO de él. Si alguien tiene alguna experiencia con él, estaría muy interesado.
/boot
(RO), /
(RO), /var
(RW), /home
(RW). El problema inicial era la corrupción del sistema de archivos cuando se corta la energía durante el arranque. Sin embargo, todavía me gustaría escribir / encontrar un gestor de arranque de segunda etapa.