Como o unix / linux formata um cartão SD?

1

Como um sistema operacional Linux formata um cartão SD e conserta tudo magicamente?

Eu tenho um STM32 rodando FreeRTOS e FAT-FS.

Quando tenho um cartão SD corrompido e o FAT-FS não pode fazer nada a respeito, formato o cartão SD através do Linux e tudo começa a funcionar novamente.

Como o Linux formata um cartão SD?

O FAT-FS diz que há um erro físico (erro no nível do driver, então basicamente o uC dentro do SD não está respondendo com o que esperamos).

    
por clmno 11.05.2017 / 14:43

1 resposta

2

Eu tenho um telefone antigo. Se eu deixar escrever o cartão SD, às vezes ele escreve setores defeituosos. Eu suspeito que isso acontece quando a bateria está fraca, e porque o telefone não satisfaz os requisitos elétricos padrão do cartão SD.

Em um dispositivo de bloco moderno, um bloco lógico incorreto pode falhar repetidamente na leitura (incompatibilidade de soma de verificação), mas ser "reparado" se você gravar com êxito novos conteúdos nele. Quando meu telefone corrompe meu cartão SD, tudo que eu preciso fazer é reformatar o cartão. Eu nem preciso reescrever todos os blocos (às vezes chamado de "formato completo"). Durante & depois de uma reformatação, o sistema de arquivos nunca lerá um bloco que ele ainda não tenha escrito (nunca há qualquer razão para isso).

Existem alguns riscos dessa abordagem. É possível que o seu dispositivo esteja permanentemente danificado e que os problemas voltem a ocorrer após a formatação. Se isso for uma preocupação, a abordagem mais segura é testar o dispositivo ou particionar de alguma forma antes de formatá-lo. (Historicamente, você deveria usar badblocks , mas não tenho certeza de como é bom hoje em dia).

Se um dos blocos de dados de um arquivo for ruim, você poderá recuperar, excluindo ou substituindo o arquivo. O problema é quando você tem um bloco ruim nas estruturas internas do sistema de arquivos. Normalmente, os sistemas de arquivos não incluem nenhum código que os reconfigure para um estado inicial padrão. Existe um risco alto demais de perder dados silenciosamente. Portanto, o erro persistirá. Alguns verificadores de sistemas de arquivos podem perguntar se você deseja redefinir o bloco defeituoso.

(Sidenote: com o Linux fsck.vfat especificamente, eu tive sistemas de arquivos que ele simplesmente desiste e diz que não implementou um tipo específico de reparo. Eu suspeito que a versão do Windows é um pouco mais abrangente). / p>

Alguns sistemas de arquivos podem oferecer suporte à restauração de determinadas estruturas usando uma cópia redundante, em vez de precisar redefini-las. Os sistemas de arquivos FAT tendem a ser executados com dois FATs redundantes, que podem ser usados para recuperação, e. por fsck.vfat no Linux. O Ext4 tende a manter um grande número de "superblocos" redundantes.

Eu entendo que sistemas de arquivos como o btrfs e o ZFS podem ser configurados para manter cópias redundantes de todos os metadados em dispositivos separados e serem reparados enquanto ainda estão em execução.

[expandido deste comentário: Definindo um estado de falha de cartões SD pelo traçado do kernel? ]

    
por 21.09.2018 / 14:59