Como faço para o Ubuntu "à prova de perda de energia"?

18

Eu gosto de executar um sistema autônomo para uso diário do 'quiosque'.

No entanto, o sistema pode ser desligado a qualquer momento sem que alguém faça um desligamento adequado antes. Por padrão, não se espera que o Ubuntu seja desligado por perda de energia. Após a reinicialização após uma perda de energia, o fsck pode ser executado para verificar o sistema de arquivos, e o fsck pode solicitar ao sistema que reinicie após a conclusão. Portanto, mesmo que nenhum dado de configuração seja corrompido, a máquina poderá não inicializar bem após a perda de energia. Então, testei algumas soluções alternativas:

  1. altere a prioridade do fsck de montagem raiz para 0(último campo na fstabentrada raiz) que impede a execução fsckapós cada perda de energia. No entanto, o sistema pode inicializar com raiz, somente leitura, o que não é esperado por muitos serviços e resulta em um prompt de login do console, em vez do login gráfico.

  2. Substitua errrors=remount-ropor errors=continue. Isso dá uma sensação ruim de que mais perda de dados pode ocorrer por um sistema de arquivos incosistente. No entanto, com fsckativado novamente, ele deve aumentar a propabilidade de inicialização do sistema após a perda de energia. Então eu larguei 1).

  3. Reconfigure o grub2 para usar um tempo limite normal da opção padrão após uma falha na inicialização. Para isso, eu adicionei GRUB_RECORDFAIL_TIMEOUT=0a /etc/default/grub.

No entanto, é difícil saber se esses hacks tornam o sistema à prova de perda de energia. Alguma ideia? Mais alguém pode fazer?

dronus
fonte
11
Eu realmente não entendo o que você está tentando alcançar. O que você quer dizer com "prova de perda de energia"? Você pode esclarecer um pouco?
André Stannek
Adicionada uma introdução esclarecedora. Gosto de um sistema que se levanta rapidamente novamente, normalmente, sem interação de manutenção após a perda de energia.
Dronus #

Respostas:

16

Para aplicativos de quiosque, o problema é resolvido usando uma partição raiz somente leitura. Além disso, quaisquer alterações feitas ou salvas pelos usuários são desfeitas na próxima reinicialização.

Para fornecer uma raiz gravável para a maioria das necessidades de aplicativos, overlayfs pode ser usado para sobrepor a partição somente leitura com um tempfs ram gravável.

Há um script que ajuda a criar essa configuração na parte inferior de https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash . O script contém as instruções para configurar isso:

  • coloque o arquivo em / etc / initramfs-tools / scripts / init-bottom / root-ro
  • sudo chmod 0755 root-ro
  • sudo update-initramfs -u

Eu sugiro para adicionar GRUB_RECORDFAIL_TIMEOUT=0ao /etc/default/grube correr sudo update-grubmuito, caso contrário, o menu de inicialização pode aparecer sem tempo limite.

Depois disso, reinicie. A máquina inicia no modo somente leitura, que pode ser verificado por mount. Qualquer alteração aplicada desaparecerá na próxima reinicialização. Para fazer alterações, instalar software e atualizações, etc., basta acessar o menu GRUB, pressionar epara alterar as linhas de comando de inicialização e anexar disable-root-ro=trueà linha que começa com o kernel. Pressione F10 para continuar a inicialização. Você pode então usar mountpara confirmar que o root está montado como gravável, como de costume. Faça as alterações e reinicie, o sistema é novamente somente leitura.

dronus
fonte
+1 porque um sistema de arquivos raiz somente leitura foi a primeira coisa que me veio à mente.
Nathan Osman
Isso realmente funciona muito bem. No entanto, após qualquer montagem de leitura / gravação, o sistema deve ser reiniciado corretamente novamente para verificar se tudo está limpo. Coisas como o GRUB à prova de falhas, um navegador que mostra que não estava bem fechado ou fsck, caso contrário, seria conservado para sempre. Se isso acontecer, é preciso reiniciar a leitura / gravação outra vez e desligar novamente.
Dronus
9

Algumas vezes após uma reinicialização impura (por exemplo, perda de energia ou botão de redefinição pressionado ou até mesmo um pânico no kernel), o sistema não inicializa solicitando que você pressione "y" para que um fsck conserte a partição.

Se você deseja evitar isso, edite / etc / default / rcS e altere:

FSCKFIX=no

Para:

FSCKFIX=yes

Isso garantirá que esse reparo seja executado automaticamente sem avisar.

A desvantagem pode ser que você pode perder dados e retirar o disco rígido e cloná-lo primeiro, se houver algo crítico nele que não seja feito backup.

Por exemplo, se o seu controlador de disco rígido tiver uma falha e o fsck identificou falsamente a partição como quebrada e tenta repará-la, isso pode levar à perda de dados que, de outra forma, poderiam ser evitados. Eu nunca experimentei isso sozinho e lidei com quase mil servidores nos últimos sete anos, mais ou menos - mas ainda assim, isso é algo a ser lembrado.

Roman Gaufman
fonte
7

A partir de hoje, para um quiosque solução também se pode instalar o pacote só de leitura overlayrootpor

sudo apt-get install overlayroot

que fornecerá facilmente uma solução completa como a da resposta aprovada. Também permite o comando benéfico

sudo overlay-chroot

que fará logon em um shell com o antigo disco base somente leitura montado /. É então possível fazer alterações no sistema protegido, como por exemplo, usar apt-getpara instalar pacotes no antigo disco somente leitura. No entanto, após sair do shell, é altamente recomendável reiniciar, pois os arquivos sobrescritos temporariamente na RAM podem obscurecer os recém-instalados.

dronus
fonte