Se, por exemplo, eu limpar o conteúdo do meu cartão SD com o comando dd if=/dev/zero of=/dev/sdX , acho que isso limpa completamente (definido como zero) todo o conteúdo do cartão? partições, sistema de arquivos, dados etc.
Agora o que eu não consigo entender é que, quando eu conectar este dispositivo em um computador novamente, Linux ou Windows, eu posso escrever nele novamente. Como o sistema operacional sabe que tipo de dispositivo é esse se tudo for apagado?
Existem diferentes tipos de memória flash e acho que eles precisam de drivers específicos para gravar neles, dependendo do tipo, então como o sistema operacional sabe qual tipo?
Pode ser que haja uma pequena parte da memória flash que não foi substituída que contém dados que explicam que tipo de memória é?
Seu cartão SD não é apenas memória passiva, como um DVD (ou um CD ou um disquete). Os cartões SD incluem um controlador:
[ [
flash memory
] <=> [controller
] ] <=> [your computer
]O controlador dentro do cartão SD lida com os detalhes. Isso possibilita o desenvolvimento de novos cartões onde a memória flash possui detalhes diferentes, e computadores/dispositivos mais antigos podem utilizá-los sem precisar de nenhuma modificação.
Talvez o mais importante, isso torna mais fácil para os fabricantes vender cartões que usam novas tecnologias :-).
Gravar todos os zeros em
/dev/sdX
não faz com que o controlador se destrua. Assim como gravar todos os zeros em um disco rígido mais tradicional, não destrói o controlador dentro do disco rígido.Há duas respostas para isso.
A definição de tudo
Como você adivinhou, nem tudo é apagado. É como um quadro de limpeza a seco: você pode limpá-lo, mas o quadro permanece. Ele ainda sabe ser uma tábua de limpeza a seco. O dispositivo possui um conjunto fixo de metadados, que não permite que você apague. Esses dados podem ser lidos, mas não aparecem com os outros dados. Por exemplo, um dispositivo USB, quando você o conecta, o sistema operacional consulta várias coisas: número de série, número do fabricante, tipo de dispositivo (teclado, apontador, armazenamento em massa, rede, hub, …). Uma vez que o sistema operacional tenha isso, ele pode carregar o driver específico e começar a ler/gravar o conteúdo do armazenamento.
Também pode haver um programa executado por uma CPU incorporada (o controlador). Não há nada que você possa fazer para ver isso, e você definitivamente não pode apagá-lo.
Muitos dispositivos diferentes ou não
Há um número limitado de tipos de dispositivo. USB define vários tipos básicos (HID: ponteiro, teclado; armazenamento em massa, rede, áudio, vídeo, …). Se um dispositivo USB for certificado, ele deve usar um desses tipos predefinidos, portanto, será compatível (dispositivos não certificados não são garantidos, são compatíveis e podem exigir drivers proprietários).