Sobrescrevendo a raiz do Linux (somente leitura) do sistema em execução

2

Este parece ser um problema muito genérico para mim. Eu tenho um sistema embarcado executando o Linux a partir de uma raiz somente leitura. Existe um daemon do atualizador que instala novas imagens de software quando disponíveis sobrescrevendo partições inteiras. Minha pergunta é: qual é a melhor abordagem para fazer isso de um sistema em execução?

  1. dd a partição atualizada para /dev/sdX , que é a atual (somente leitura) raiz montada?
  2. move a raiz atual usando pivot_root para um tmpfs como discutido aqui ?
  3. usa 2 partições raiz e ativa a "ativa" depois de cada atualização?

As desvantagens de 2 e 3 são, que eu preciso de muita memória RAM (para 2) ou espaço em disco (para 3). Existe uma maneira segura de sobrescrever a partição raiz somente leitura de um sistema em execução e reinicializar no sistema atualizado?

    
por Florian 31.01.2017 / 15:55

1 resposta

0

Então, o que eu fiz é, eu fui com a abordagem 1. e tive muitos problemas onde o sistema não era mais estável devido ao problema do sistema de arquivos. Eu acho que substituir uma partição montada não é uma boa idéia (não é uma grande surpresa). Para corrigir isso, eu tentei a idéia 2. (pivot_root), que funciona, mas tem algumas desvantagens. Uma é: você precisa parar a maioria dos processos em execução e / ou reinicializar o mais rápido possível após a conclusão da atualização. Finalmente, eu tentei o 3. idéia e a única desvantagem é o "desperdício" de espaço em disco. Tudo o resto funciona muito bem.

    
por 04.01.2018 / 12:25