Corrupção do sistema de arquivos no cartão SD

19

Se eu usar um pouco o Pi, a corrupção do sistema de arquivos será exibida em breve.

Por exemplo, este arquivo foi alterado para outro:

$ ls -alt  /etc/apt/apt.conf.d
total 16
lrwxrwxrwx 1 root root   13 Oct  2 22:18 50raspi -> ../init.d/ntp

Ou /var/lib/dpkg/info/fake-hwclock.listtornou-se um arquivo binário, o que significa que o dpkg não pode mais funcionar:

dpkg: unrecoverable fatal error, aborting:
 files list file for package 'fake-hwclock' is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)

fsckno sistema de arquivos encontra muitos erros e envia dezenas de arquivos para lost+found:

Pass 1D: Reconciling multiply-claimed blocks
(There are 34 inodes containing multiply-claimed blocks.)

File /etc/fake-hwclock.data (inode #26, mod time Thu Aug 16 02:20:47 2012) 
  has 1 multiply-claimed block(s), shared with 1 file(s):
        ... (inode #30, mod time Thu Aug 16 02:20:47 2012)

...

Inode 30 ref count is 1, should be 3.  Fix? yes

dmesg exibe o que parece ser erros de E / S:

[   49.082758] mmc0: final write to SD card still running
[   59.088233] mmc0: Timeout waiting for hardware interrupt - cmd12.
[   59.089411] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900

Eu tentei com quatro cartões SD diferentes, de marcas SanDisk SDHC 16 GB e Duracell SDHC 16 GB. Portanto, não parece ser o cartão.

Também tentei com o Raspbian 2012-08-16-wheezy e o ArchLinux 13-06-2012. Ambos têm o mesmo problema, então suponho que não seja um bug no sistema operacional.

Seguindo os conselhos de @gnibbler e @Avio, executei o memtester (que, diferentemente do memtest86 no PC, é executado após o kernel e, portanto, não pode testar toda a RAM) e não relatou nenhum problema. "memtester 200 2" -> tudo OK

Após a discussão em http://www.raspberrypi.org/phpBB3/viewtopic.php?f=29&t=6201&start=400 , tentei de uma nova imagem com um config.txt escrito para um pouco de underclocking:

core_freq 240
arm_freq 650
sdram_freq 350

mas piorou o problema (muitos tempos limite no cartão)

Eu tenho apenas um Raspberry Pi, então não posso verificar com outro. Problema conhecido? Hardware quebrado?

bortzmeyer
fonte
Meça a tensão de alimentação - verifique se realmente é de 5V e estável. Pode ser causado por falha no ram ou algo assim. Você pode executar o memtest?
John La Rooy
Eu não tenho um voltímetro agora (não sou muito um cara de hardware). Após o teclado USB, o carregador e o cabo HDMI, este Pi pequeno e barato se tornará bastante caro se eu tiver que comprar um voltímetro.
Bortzmeyer
A mensagem "Tempo limite aguardando interrupção do hardware" não é uma indicação clara de que algo está errado com o leitor de cartão SD?
Bortzmeyer
Não encontro uma imagem com o memtest. O Google não gosta de mim ou não sou inteligente o suficiente para isso. Algum ponteiro?
Bortzmeyer
Muito obrigado, @ oliver-salzbug, pelas edições e desculpe pela saída mutilada que eu incluí.
Bortzmeyer

Respostas:

5

Pode ser que em breve responda minha própria pergunta, mas, até agora, a opção mais bem-sucedida foi:

over_voltage=2

Até agora (são apenas alguns dias), parece melhor (sem corrupção ou tempo limite do cartão ainda).

Como não sou especialista em questões de energia, antes de usá-lo em seu próprio Pi, faça uma pesquisa.

Isso significa que meu Pi tem um problema de tensão, conforme sugerido por @gnibbler?

bortzmeyer
fonte
2
Aceitei minha própria resposta porque parece funcionar e as outras sugestões não.
Bortzmeyer
1
Substitua a fonte de alimentação por uma que carregue telefones celulares modernos e forneça 1A real ou mais.
Avra
2

Há uma chance muito boa de você ter um problema com a RAM e, talvez, você não esteja tendo congelamentos do kernel porque a arquitetura do Raspberry Pi é de alguma forma tolerante a um certo grau de corrupção de memória .

A primeira coisa a fazer é alterar a divisão da memória, reduzindo a memória de vídeo ao mínimo, para maximizar a quantidade de RAM disponível ( 240 MB de RAM e 16 MB de VRAM ). Sugiro começar de novo com um novo raspbian, recém copiado para o SD. Então você pode instalar e executar memtester.

sudo aptitude install memtester

Aqui há um pequeno tutorial sobre como iniciar memtester, e esta é a página do manual. A linha de comando deve ser algo como:

sudo memtester 200 2

Onde 200está a quantidade de MB a ser testada e 2o número de passes. Lembre-se de que esta solução funciona apenas userspacepara que a quantidade de memória livre seja menor da quantidade total de memória disponível. Se você deseja o número exato, digite:

cat /proc/meminfo

No entanto, como o problema não está nos seus cartões de memória e o Raspberry Pi é bastante "monolítico", provavelmente a única opção disponível será devolver o Pi ao revendedor.

Avio
fonte
Eu sempre tive a divisão de memória definida como 240/16 (eu uso esta máquina para monitoramento de rede, não para o media center).
precisa saber é o seguinte
1

Isso é um tiro no escuro, mas toda vez que corro rpi-updatepara atualizar o firmware, o sistema de arquivos é corrompido de alguma forma, de modo que não consigo mais criar uma imagem do cartão SD usando o dd (veja minha pergunta ). Notei pela primeira vez ao tentar atualizar manualmente o firmware para instalar ffmpege agora quando o omxplayer tentou atualizar o firmware.

puk
fonte