Eu às vezes uso o dcfldd, porque ele tem mais recursos e é mais fácil de usar do que o dd regular. Ele fornece um status constante e o atualiza rapidamente, além de ter uma entrada de padrão muito mais rápida do que a leitura de / dev / zero ou qualquer outro dispositivo.
Como exemplo, digamos que eu quisesse limpar uma unidade com dcfldd eu faria algo assim
dcfldd pattern="00" of=/dev/hda bs=4096
Onde ele escreveria "00000000" no byte do drive por byte e então você poderia usar a função vf = para verificar o padrão.
Mas notei um pequeno problema e queria saber se algum de vocês pode ajudar. Quando eu corro isso
dcfldd pattern="FF" of=/dev/hda bs=4096; sync
or
dcfldd pattern="11111111" of=/dev/hda bs=4096; sync
Eu posso encher a unidade com 1s e isso é muito rápido. Eu posso encher uma unidade de 74gb para digamos 5GB no valor de 1, depois de ter sido zerado. Se eu usar um editor hexadecimal como xxd ou hd no linux, eu posso ver todos os 1s.
No entanto, se eu executar este comando,
dcfldd pattern="00" of=/dev/hda bs=4096; sync
Digamos que, para apenas 1gb de 0, ainda haja 4gb de 1s. Vendo que escrevi 5gb de 1s e apenas 1gb de 0 em 1s.
Embora, se eu olhar para um editor hexadecimal, a unidade é toda de 0, mesmo que o software afirme que ele escreveu apenas 1gb de 0s. Eu tentei executar o programa para o mais curto possível enviando um SIGINT quase certo após a execução.
Alguma ideia de por que isso ocorre e você pode replicá-lo?