Raspberry Pi – Como proteger os arquivos para desligar sem corromper o cartão SD

INTRODUÇÃO:

Como proteger os arquivos para desligar sem corromper dados do cartão SD?

Para a maioria pode ser simples, usar uma bateria ou algum tipo de sistema que mantenha a alimentação.

Mas andei pesquisando muito e encontrei uma alternativa que pode ser bem mais simples.

Simples porque é somente via programação, e com isso não é necessário manutenção de bateria ou outro acessório.

O que acontece se voce remover um CD do leitor, vai danificar os dados?

– A resposta possívelmente seria: desde que não esteja sendo gravado, nada vai acontecer!

Então como posso fazer com que meu Raspberry Pi possa apenas ler os dados do cartão SD?

Se eu mudar a posição da chave contra gravação isso já não basta para deixar em modo somente leitura?

– A chave que existe no cartão SD não tem contatos internos, para que a proteção contra gravação possa funcionar:

“o soquete ou suporte para o cartão tem que ter uma chave, são na verdade contatos que tocam a trava contra gravação, com isso se a trava estiver em posição de bloqueio os contatos do suporte podem ser usados eletricamente para identificar o estado.”

Acontece que o suporte usado na placa do Raspberry Pi não possui a tal chave de bloqueio com os contatos, por tanto apenas mudar a posição da trava não protege os dados contra gravação.

Mas tem outra alternativa para isso. Como devem saber o Firmware ou Sistema operacional, é como a maioria dos Linux:

os dados são acessados em partições previamente montadas, é aí que existe a possibilidade de bloquear a gravação.

Para o Raspbian, na pasta /etc tem um arquivo chamado fstab, nele ficam os parametros de montagem das partições.

Mas espere! Não basta somente deixar a partição como somente leitura, porque o sistema tem que fazer registros, então se não pode gravar na partição do SD onde mais poderia fazer isso?

– Uma alternativa viável para a aplicação que não requer muito uso da memoria RAM do Raspberry seria a de criar partições temporárias na RAM, assim os dados são gravados de forma transparente, sem a necessidade de muitas configurações. Lembrando apenas que ao desligar a alimentação tudo que está na RAM não será salvo.

Portanto se tem algum log ou registro que precisa ser salvo, pode salvar em outro cartão, ou talvez em um pendrive.

O PROBLEMA NA PRÁTICA:

Eu desliguei o Raspbian normalmente, esperei ficar o LED vermelho aceso, depois de algum tempo eu desliguei a fonte.

No dia seguinte, o RPI (Raspberry Pi) não estava carregando totalmente o boot e apareceu na tela para executar manualmente ‘fsck‘.

Sim o sistema estava corrompido!

E eu executei o ‘fsck‘ na partição do boot e na de sistema com a ajuda de um computador com Xubuntu instalado.

A recuperação do boot deu certo, o sistema de arquivos foi limpo.

Mas uma pasta desapareceu, provavelmente era ela que estava corrompida, justamente a que eu uso para executar o script para a aplicação prevista para o RPI.

Eu pesquisei bastante uma solução para evitar que o sistema de arquivos seja corrompido ao desligar a alimentação de forma abrupta.

Encontrei sistemas complexos que fazem uso de uma entrada a qual informa ao Raspbian que deve se desligar.

Também não tive tempo para colocar em prática a ideia de fazer o backup da fonte com uso de baterias ou super capacitores.

Baseado na ideia do LiveCD de Linux, experimentei criar um LiveCD com o sistema do RPI, mas sem sucesso, acredito que seja porque trata-se de um ARM.

Mas eu acho que encontrei uma solução para o meu problema!

Eu consegui configurar o sistema de arquivos para o modo somente leitura, e tudo parece funcionar normalmente.

 

A SULUÇÃO?
Segue a idéia:
1 – No computador com o Xubuntu eu abri os arquivos da RPI cartão SD e editei o arquivo /etc/fstab, acrescentando partições temporárias em execução em RAM:

proc             /proc    proc    defaults               0    0
/dev/mmcblk0p1   /boot    vfat    defaults,noatime,ro    0    2
/dev/mmcblk0p2   /        ext4    defaults,noatime,ro    0    1
tmpfs            /tmp     tmpfs   defaults,noatime,nosuid,size=100m    0    0
tmpfs            /var/tmp    tmpfs    defaults,noatime,nosuid,size=30m    0    0
tmpfs            /var/spool/mqueue    tmpfs   defaults,noatime,nosuid,mode=0700,gid=12,size=30m               0    0
none             /var/run    tmpfs    size=5M,noatime            0    0
none             /var/log             tmpfs   size=5M,noatime    0    0

(Veja informações sobre fstab)

2 – Eu desmontei o SD do Xubuntu, removi o cartão do computador e inseri novamente na RPI.

3 – Liguei e desliguei várias vezes o RPI e em momentos diferentes para testar.

Notas:

1 – Eu não preciso da GUI (parte gráfica), desta forma, eu removi tudo relacionado a ela, com alguns comandos como:
sudo apt-get remove – purge x11-common (750MB)
sudo apt-get autoremove (205MB)

2 – Antes de editar o arquivo fstab, o RPI estava com apenas 44MB de RAM em uso.
verifiquei com:
free-m

3 – SD estava com apenas 598MB em uso (eu também removi outros pacotes pequenos).
verifiquei com:
df-h

4 – o GPU (processador de vídeo) está configurado para usar 16MB.
adicionar ao final do arquivo / boot / config.txt:
gpu_mem = 16

5 – Lembre-se de sempre fazer backup dos dados do cartão SD.

No Windows PC, eu uso o USB Image Tool, disponível em:
http://www.alexpage.de/usb-image-tool/

6- Esta solução provavelmente não está bem configurada para atender a muitas aplicações, mas fica a dica de como consegui ficar mais seguro quanto ao problema de corrompimento do sistema de arquivos do SD.

7- Pode usar um Linux no Windows sem precisar formatar o computador, com a ajuda de uma VM, Virtualbox da Oracle, testei com o LiveCD do Xubuntu 13.10

A VM tem suporte direto a porta USB do Host (computador físico) e com isso pode acessar o cartão SD, como se o Xubuntu nem estivesse sendo executado virtualmente.

Veja também: Como ajudar a proteger mudando a partição de ext4 para ext3


Boa sorte!

 

 

 

2 Responses to Raspberry Pi – Como proteger os arquivos para desligar sem corromper o cartão SD

  1. EverPi disse:

    Aqui o problema foi mais grave( em 2 microsds com adaptador ) eles simplesmente estão com erros incontornáveis, mas também aparentemente os dois são falsos:/

  2. Pingback: Raspberry Pi / Linux – Como proteger a partição contra corrompimento de arquivos – converter de ext4 para ext3 | Robson Eletronico

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: