Desligando o linux normalmente do sistema de arquivos?

0

Acabei de conseguir que a inicialização da rede raspberry pi funcione (é ó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. Como agora estou lidando com 2 sistemas separados que representam o estado do pi (o pi com sua ram, registradores da cpu e similares e um servidor que contém o sistema de arquivos). Eu estava pensando que ou cair seria muito ruim, pois deixaria o sistema de arquivos em um estado potencialmente inseguro (como se a energia tivesse acabado de ser puxada).

Então, eu comecei a pensar, existe alguma maneira conveniente de desligar o servidor de armazenamento, mas primeiro acione o pi para desligar? Eu sei que eu poderia ssh e executar um script de desligamento, mas eu estava pensando que já tinha acesso ao sistema de arquivos raiz. Existe uma alteração que poderia ser feita que resultaria em um desligamento normal imediato? Considerei adicionar um trabalho ao cron, mas isso não seria imediato ou faria algo desagradável em um arquivo do sistema, mas dificilmente seria agradável. Essa pergunta é principalmente hipotética, pois já existem muitas opções de desligamento possíveis, mas fiquei curioso sobre uma abordagem pura do sistema de arquivos usando apenas a instalação rasbian básica.

Justin Gerhardt
fonte

Respostas:

0

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

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

  • Escreva 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 trabalho cron no Pi, que
    • descarta caches (para realmente ler o arquivo)
    • lê o arquivo
    • usa o conteúdo do arquivo para decidir sobre um desligamento
  • Encontre este bloco no servidor de armazenamento
  • Para desligar o Pi, altere este bloco para um conteúdo, que faça com que o Pi inicie o desligamento no próximo trabalho cron (verifique se o conteúdo é o que você espera antes!).
Eugen Rieck
fonte
Embora eu esteja certo de que isso funcionaria, ele não atende a nenhum dos dois objetivos de ser imediato (precisa aguardar a execução do trabalho cron) ou trabalhar sem modificar a instalação base (exigiria a criação de um trabalho cron)
Justin Gerhardt