Todo o dispositivo de saída é apagado se o seu tamanho é um múltiplo do tamanho do bloco que você passa para dd ou não.
O sinalizador notrunc não tem efeito quando a saída é um arquivo de dispositivo, porque o truncamento de um arquivo de dispositivo não tem efeito. Se a saída fosse um arquivo regular, teria o efeito de que o arquivo de saída não fosse truncado antes de gravar, o que em alguns sistemas de arquivos significa que os dados antigos são sobrescritos (em vez de escrever novos blocos de dados e deixar o restante desanexado) no entanto, isso não seria útil, já que essa propriedade não é garantida por todos os sistemas de arquivos e, além disso, o comando não apenas sobrescreveria o arquivo, mas também gravaria até preencher o disco de saída (ou algum outro erro).
Em vez de usar dd e se preocupar se você está usando corretamente (como acontece, ele funciona neste caso específico, mas é complicado e às vezes não funciona ), use apenas cat .
cat /dev/zero >/dev/sdX
Apesar da crença popular na web, não há absolutamente nenhuma mágica em dd que a torne de alguma forma mais adequada para gravar em um disco. A mágica está nos arquivos /dev . Qualquer ferramenta que possa lidar com dados binários, como qualquer cat ou head , pode fazer o mesmo trabalho que dd , a menos que você esteja passando sinalizadores como seek ou skip .
Observe que um problema compartilhado por dd e cat é que, na operação bem-sucedida, eles irão gerar um erro com "Nenhum espaço restante no dispositivo" (ENOSPC). Se você colocar isso em um script, você precisará verificar se o erro é ENOSPC ou usar um método diferente. Um método mais confiável é determinar primeiro o tamanho do dispositivo (por exemplo, usando /proc/partitions no Linux) e, em seguida, escrever exatamente o número correto de bytes com uma ferramenta como head .
size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX