Estou trabalhando em um projeto em que as atualizações para o Raspberry PI serão feitas por HTTP e o Raspberry PI não estará diretamente acessível (não é possível trocar apenas cartões).
Eu gostaria de ter uma configuração de partição assim:
- Partição 1- / boot (contém kernels para ambas as partições)
- Partição 2- / (partição de recuperação)
- Partição 3- / (partição primária)
Quando uma atualização falha e o Raspberry PI entra em um loop de reinicialização ou trava na inicialização, eu gostaria que o usuário pudesse pressionar um botão, que aciona uma linha GPIO, o que faria com que o carregador de inicialização inicializasse no partição de recuperação em vez da partição primária.
A partição de recuperação nunca seria atualizada, portanto seria seguro.
Vejo algumas opções:
- Sempre inicialize na partição de recuperação, verifique o GPIO e, em seguida, inicialize na partição primária sem pressionar nenhum botão
- O GPIO é verificado diretamente pelo carregador de inicialização
Basicamente, estou tentando fazer algo parecido com o que os roteadores fazem, onde, se você mantiver a redefinição enquanto inicializa, poderá usar o TFTP sobre uma nova imagem ou algo assim.
Isso é possível com o Raspberry PI? Em caso afirmativo, existe alguma documentação para fazer esse tipo de coisa?
Editar:
Encontrei esta resposta para esta pergunta relacionada: É possível fazer dual boot a partir do cartão SD?
Um comentário sobre a pergunta acima me levou aqui: http://www.berryterminal.com/doku.php/berryboot . Isso parece promissor, mas vou ter que pesquisar mais para ver se consigo ler um GPIO. Se alguém tiver alguma experiência com isso, eu ficaria muito interessado.
/boot
(RO), /
(RO), /var
(RW), /home
(RW). O problema inicial foi a corrupção do sistema de arquivos quando a energia foi cortada durante a inicialização. Eu ainda gostaria de escrever / encontrar um gerenciador de inicialização de segundo estágio.