Como posso impedir que o cartão SD do meu Pi seja corrompido com tanta frequência?

47

Recebo um erro de E / S na inicialização e, em seguida, recebo este 'erro': (Estou executando a versão mais recente do Raspbian)

Entering kdb (current=0xca82ac80, pid 1) due to keyboard entry
kdb> _

E eu já vi isso antes, e foi explicado que meu cartão SD foi corrompido porque eu não desliguei corretamente. Uma semana depois, não lidei com esse erro, até que a energia piscou três vezes e agora não consigo inicializar novamente. Parece que estou re-preparando meu cartão SD todos os dias !!! Eu não gosto disso, para não mencionar que eu amo as capacidades do meu Pi. Mas esse 'ponto de interrupção' está me deixando louco! Existe alguma maneira de evitar isso ou fortalecer algo para que isso não aconteça se a energia acabar? Alguma sugestão? Obrigado!

PS Meu arquivo zip não foi corrompido e meu serviço de extração é o Win32DiskImager

user151324
fonte
2
O seu cartão está nesta lista
Butters
você já pensou na UPS?
21813
@lenik Você está dizendo que eu deveria ter algo como um estabilizador?
user151324
Porque você desliga a coisa sem um desligamento adequado?
jippie
1
@coding_corgi, provavelmente, algo com uma bateria interna, que fornece energia por 5 a 10 minutos após a falta de energia, que permite ignorar movimentos breves de energia e permite que você desligue (automaticamente?) o computador quando a energia diminuir por um longo período Tempo. É chamado de "Fonte de alimentação ininterrupta" ou UPS, para abreviar.
lenik

Respostas:

48

Não vou escrever sobre como verificar suas listas de cartões SD de HW e compatíveis, porque você provavelmente já verificou tudo isso. O que estou prestes a escrever é a solução permanente, que permite cortar o problema pela raiz e resolver o problema permanentemente .

Se você não deseja que seu cartão SD seja quebrado ao pressionar o botão liga / desliga, use-o no modo somente leitura. Se não houver nada gravado no seu cartão SD, ele não será danificado, não importa o que você faça.

A solução óbvia (mas não funcionante) seria uma tentativa de virar a chave "somente leitura" na lateral do cartão SD, infelizmente isso não funciona porque os esquemas mostram que essa chave não é roteada para lugar nenhum e sua posição geralmente é ignorada.

Outra abordagem mais sutil (mas funcional) seria modificar o seu /etc/fstabpara montar todas as suas partições somente leitura. A desvantagem dessa abordagem é que seus logs precisam ser gravados em outro lugar (pen drive, unidade RAM?) E, no caso da unidade RAM, os logs não persistirão durante a reinicialização. Para fazer isso:

  1. Copie uma imagem RPi para o seu cartão SD usando o método que desejar.
  2. Inicialize a partir do SD e raspi-configiniciará automaticamente. Não "Expandir sistema de arquivos", apenas configure seu fuso horário e configurações internacionais.
  3. Execute sudo fdisk /dev/mmcblk0, pressione 'p' para imprimir a tabela de partição atual. Em seguida, insira os seguintes comandos:

    n        Create a new partition
    [enter]  Make a primary partition
    [enter]  Use the default number
    [#]      1 greater than the end of mmcblk0p2
    [enter]  Expand to the end of the SD card
    w        Write the partition table and exit
    
  4. Edit /etc/fstab. Deve ser algo como o seguinte:

    proc            /proc     proc    defaults 0 0
    /dev/mmcblk0p1  /boot     vfat    ro       0 0
    /dev/mmcblk0p2  /         ext4    ro       0 0
    /dev/mmcblk0p3  /home     ext4    defaults,errors=remount-ro  0  1
    none            /var/run  ramfs   size=1M  0 0
    none            /var/log  ramfs   size=1M  0 0
    
  5. Execute sudo partprobepara reconhecer a nova partição.

  6. Formate sua nova partição com sudo mkfs --type ext4 /dev/mmcblk0p3.
  7. Reinicie.

Se, por algum motivo, você precisar fazer alterações no seu sistema, poderá remontar as partições somente leitura com acesso de gravação:

sudo mount -o remount,rw /dev/mmcblk0p2
lenik
fonte
Espere, não posso gravar no meu cartão SD se fizer isso? Ou apenas na inicialização?
user151324
1
@coding_corgi Isso deve parar de gravar no cartão SD completamente.
apnorton
por que você precisa gravar no seu cartão SD? escrevendo para SD + desligamento = corrupção do FS, você pode usar o pendrive ou criar uma partição separada no cartão SD, se precisar salvar alguns dados. Nesse caso, pelo menos o seu sistema entrará em funcionamento e, em seguida, você poderá verificar seus dados quanto à possível corrupção.
21813
@ anorton interrompe o acesso de gravação às duas primeiras partições no cartão SD, mas ninguém diz que você não pode criar outra partição ou usar mídia diferente para salvar os dados. por exemplo, RasPi somente leitura escrevendo dados na rede - poderia ser uma solução muito confiável.
lenik
1
Eu escrevo no meu cartão SD os dados de vídeo da câmera raspi e ela morreu tantas vezes! Nem uma vez tive problemas com a inicialização, o fio puxado ou a falha do sistema. Somente leitura é bom para produção quando você plug and play. Esse problema não deve ocorrer durante o desenvolvimento de nenhuma maneira - suspeito que mesmo a leitura apenas atrapalhe seus dados, porque algo está acontecendo em um nível mais alto do que o kernel pode suportar.
Piotr Kula
4

Dependendo do uso do seu RPi, você pode se interessar pelo IPE, que é um "sabor de Raspbian à prova de apagão".

Eu pretendo usá-lo para inicializar meu RPi. Se eu precisar que os dados sejam gravados, usarei uma unidade USB que montarei somente para leitura (prefiro que meu SD seja seguro e corrompa uma unidade USB do que precisar reparar meu SD)

Veja a página inicial do IPE

Conforme indicado lá, "Além disso, use" ipe-rw "e" ipe-ro "para mudar o sistema de arquivos raiz para o modo gravável ou somente leitura".

lauhub
fonte
2

Eu superei esse problema usando uma unidade flash USB para minhas principais partições.

  1. Restaurar imagem raspbian para uma unidade USB

  2. Formate um cartão SD para gordura

  3. Copie o conteúdo da partição gorda da unidade USB para o cartão SD

  4. Modifique o config.txt no cartão sd para inicializar a partir de / dev / sda

Essencialmente, o rpi ainda será inicializado a partir do cartão SD, mas usará a unidade USB para o sistema operacional e leitura / gravação.

Ás
fonte
2

Estou usando o UPS Pico, um UPS especialmente projetado para o Raspberry Pi e nunca tive esses problemas.

Alexander
fonte
1

verifique se o seu RPi está sendo executado nas velocidades padrão (ou seja, CPU a 700 mhz). pessoalmente, eu encontrei corrupções de armazenamento com vários cartões SD - mas apenas quando corria o tempo todo. infelizmente, algumas distribuições (imagens) vêm com configurações questionáveis ​​no config.txt .

nervosismo
fonte
Eu não overclock meu CPU, graças embora
user151324
tente outro RPI para excluir a possibilidade de que o seu está de algum modo falho ou mesmo quebrado
jitter
Eu tenho apenas um
user151324
você pode ficar sem opções e solicitar uma RMA ..
jitter
RMA? O que é isso?
user151324
1

Se o seu Raspberry Pi estiver congelado, você não poderá desligar corretamente, isso ajuda. Eu estava sem dinheiro nos meus poucos cartões SD antes de saber isso:

Mantenha pressionadas as teclas Alt + PrintScreen e, enquanto pressiona essas teclas, pressione as seguintes teclas em sequência, uma de cada vez, com alguns segundos de pausa entre elas.

Alt+ PrintScreen+R E I S U O

ou

Alt+ PrintScreen+ R E I S U B(reinicialização)

Um mnemônico útil para lembrar que é, reinicie mesmo que o sistema esteja totalmente quebrado.

Substitua "O" por "B" para desligar o sistema em vez de reiniciar (O = desativado, B = inicialização).

Fonte: https://www.raspberrypi.org/forums/viewtopic.php?t=176612#p1126262

Almas Dusal
fonte
0

Como encontrado no site elinux. Selecionei apenas o que se aplica à sua situação, mas visite-os para obter mais informações ...

  • Se você tiver problemas, verifique se você possui a versão mais recente do firmware com rpi-update
  • Alguns cartões SD não funcionam no R-Pi, portanto, verifique a lista de cartões SD conhecidos .
  • Se você estiver com problemas para configurar o seu cartão SD, pode querer apagá-lo completamente - especialmente se ele tiver sido usado em outro lugar e ainda contiver dados / partições. É bom executar um formato COMPLETO (nível baixo) de qualquer maneira, pois pode encontrar setores defeituosos às vezes e adicioná-los a uma lista de ignorados.
    • Usuários de Windows e Mac podem baixar uma ferramenta de formatação da SD Association: https://www.sdcard.org/downloads/formatter_3/
    • Reformatar cartões também é fácil de fazer em uma câmera digital.
    • Se você estiver preparando manualmente seu cartão SD no Linux ou Mac OS usando o comando dd, esta operação apagará completamente todos os dados e partições existentes. Certifique-se de gravar no cartão inteiro (por exemplo, / dev / sdd) e não em uma partição existente (por exemplo, / dev / sdd1).
  • Se você possui um cartão sd que não funciona com o firmware mais recente, acesse aqui .
  • Verifique se você possui uma boa fonte de alimentação. Tente desconectar tudo e ver quanto tempo dura. Conecte os itens novamente, um por um, testando a estabilidade.

Se você seguiu todas essas etapas, a única coisa possível a tentar é usar outro cartão SD cuidadosamente selecionado na lista compatível. Também compre um cartão original em um local confiável. Não como ebay china ou algo assim.

Piotr Kula
fonte
Usei 3 cartões SD no processo (todos suportados), um SanDisk, um Kingston e um Lexar. Também não estou configurando manualmente meu cartão SD, usei o Win32DiskImager depois de experimentar o Ubuntu e o Mac OS X.
user151324
É estranho que fazer seu fs ler apenas o conserte. Você entre milhões de pessoas tem esse problema. Talvez você tenha algum lixo / vírus bagunçando seu sistema de arquivos. A raiz somente de leitura é um pé no saco ... espere e veja.
Piotr Kula
graças, algo estranho está acontecendo, definitivamente não é um vírus embora ...
user151324
0

Apenas para cobrir todo o terreno, verifique também se a fonte de alimentação é boa o suficiente. tente outro carregador ou conecte o RPI a uma porta USB do PC para testá-lo. Lembre-se de que o suprimento recomendado de RPI é de cerca de 700mA, mas alguns carregadores fracos podem não sustentar isso em níveis estáveis.

Eu tinha um roteador que começou a ficar louco por alguns dias, depois ficou bem, depois ficou louco e depois ficou bem novamente ... descobri que a fonte de alimentação estava produzindo uma mudança de tensão (3V a 5.5V) na hora em que o roteador estava louco. Substituído esse suprimento por um novo, tudo bem. Portanto, tente substituir a fonte de alimentação e meça a tensão de saída.

Por fim, desligue o RPI desligando o SO e desconecte-o apenas quando houver apenas um led vermelho. o RPI não será realmente desligado se você tiver outro que não um led vermelho. Além disso, tente evitar desconectar o rpi removendo a fonte de alimentação do plugue, é melhor remover a energia do RPI e somente depois de remotamente a fonte de alimentação do plugue.

higuita
fonte
Não, eu tenho um 5.1V constante @ 2100 A, e eu sempre desligado corretamente
user151324
0

Eu tenho problemas semelhantes em um pi da RS Components. Este é um dos pis feitos na China. Outro fabricado no Reino Unido a partir do Element 14 nunca teve corrupção com o mesmo sdcard e powersupply. Pode haver algum Hardwareflaw com as unidades de componentes ra. Não tenho certeza disso, é claro, mas tudo parece apontar nessa direção.

mcobit
fonte
0

Também experimentei falhas de SD com meu PI, às vezes 5 dias seguidos, às vezes funciona por um mês.

A única maneira de conseguir que ele funcione de maneira confiável por mais de um ano agora é inicializar a partir de um pendrive. Dessa forma, você não usa seu cartão SD (apenas na inicialização) e precisa apenas de um cartão SD de 500mb (barato) e um pendrive.

Gotschi
fonte
0

Segui uma dica que você pode fazer syncantes do desligamento e, até agora, obtive algum sucesso com este comando:

sync; sudo shutdown -t 9 -r now
dirkk0
fonte
Você ainda está tendo problemas com o Raspberry usando a solução acima?
CuriousMind
Eu não tinha mais nenhum problema - mas admito que tenho a tendência de deixar o pi em vez de desligá-lo. Mas meu palpite é que eu caguei bem mais de cinquenta vezes com a linha acima, e não falhou uma vez desde então. Então, a partir dessa estatística - funciona.
dirkk0
Eu não acho que isso resolverá o problema. Quando você executa um desligamento controlado, nenhum dano deve ocorrer no seu cartão SD por design. A corrupção parece acontecer principalmente nos casos em que o dispositivo é simplesmente desligado (ou falta de energia ocorre), que não está relacionado com o seu syncou shutdowncomandos a menos que você executar syncimediatamente antes do (! Inesperada) desconectando o que parece inviável.
Nhoe 30/10/2015