Desligando o linux graciosamente do sistema de arquivos?

0

Eu apenas consegui fazer funcionar o boot de rede do raspberry pi (É ótimo estar livre do cartão SD). Já trabalhei com inicialização de rede antes, mas apenas para geração de imagens, nunca com um sistema de arquivos remoto totalmente funcional. Já que estou lidando agora com dois sistemas separados que representam o estado do pi (o pi com seu ram, registradores cpu e similares e um servidor que contém o sistema de arquivos). Eu estava pensando que descer seria muito ruim, pois deixaria o sistema de arquivos em um estado inseguro potencial (como se a energia tivesse acabado de ser puxada).

Então, comecei a pensar, existe alguma maneira conveniente de desligar o servidor de armazenamento, mas primeiro acionar o pi para desligar? Eu sei que eu poderia ssh e executar um script de desligamento, mas eu estava pensando como eu já tinha acesso ao sistema de arquivos raiz existe uma mudança que poderia ser feita que resultaria em desligamento imediato e gracioso? Eu considerei adicionar um trabalho ao cron, mas isso não seria imediato ou fazer algo desagradável a um arquivo de sistema, mas isso dificilmente seria gracioso. Esta questão é em grande parte hipotética, pois já existem muitas opções possíveis de desligamento, mas eu estava curioso sobre uma abordagem puramente de sistema de arquivos usando apenas a instalação base do rasbian.

    
por Justin Gerhardt 01.08.2016 / 17:02

1 resposta

0

Primeiro de tudo: não faça isso - o que segue é um exercício puramente acadêmico.

Agora: Temos que entender as diferenças entre os metadados do sistema de arquivos e os dados do arquivo. Alterar o primeiro enquanto o sistema de arquivos é montado resultaria em corrupção, mas alterar os dados do arquivo é outra coisa. Então, isso funcionaria (embora ainda não seja uma boa ideia)

  • Grave um arquivo de sinalização no sistema de arquivos no Pi . Isso deve ser longo o suficiente para garantir que seu conteúdo seja armazenado em um bloco separado, não no inode.
  • Crie um cron job no Pi, que
    • descarta caches (para realmente ler o arquivo)
    • lê o arquivo
    • usa o conteúdo do arquivo para decidir sobre um desligamento
  • Localize este bloco no servidor de armazenamento
  • Para desligar o Pi, altere este bloco para um conteúdo, o que faz com que o Pi inicie o desligamento no próximo trabalho do cron (certifique-se de que o conteúdo é o que você espera antes!).
por 01.08.2016 / 17:17