ddはディスクを上書きしません。

ddはディスクを上書きしません。

私はWindowsホストの仮想マシン(VMWare)でUbuntu 18.04.1を実行しています。 ddを使用してSDカード全体を0にしようとしています。これは組み込みLinuxをソフトウェアグループにリリースするために使用するプロセスの一部です(空のFSデータがすべてゼロの場合、SDカードイメージはよりよく圧縮されます)。

私が使用するコマンドは次のとおりです。sudo dd if=/dev/zero of=/dev/sdc bs=4M status=progress正常に完了しました。デバイスに残りのスペースがないことを示すメッセージとともに、転送履歴が出力されます。その後、ディスクの内容を見ると、sudo cat /dev/sdc | hexdumpディスクはまだゼロ以外のデータでいっぱいになります(単に終わりではありません)。

SDカードを一貫して動作させるには、SDカードのバイト数を指定する必要がありますか?この問題は、SDカードを初期化するたびに発生しません。

フルコンソール出力:

gen-ccm-root@ubuntu:~$ sudo dd if=/dev/zero of=/dev/sdc bs=4M status=progress
15929966592 bytes (16 GB, 15 GiB) copied, 1274 s, 12.5 MB/s
dd: error writing '/dev/sdc': No space left on device
3799+0 records in
3798+0 records out
15931539456 bytes (16 GB, 15 GiB) copied, 1274.19 s, 12.5 MB/s
gen-ccm-root@ubuntu:~$ sudo cat /dev/sdc | hexdump
[sudo] password for gen-ccm-root: 
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0101000 2004 0000 6004 0000 0000 0000 0000 0000
0101010 0000 0000 0000 0000 0000 0000 0000 0000
*
0101400 2005 0000 6005 0000 0000 0000 0000 0000
...

答え1

コメントで述べたように、SDカードに不良ブロックがあります。

私が思いついた解決策は、以下を実行することでした。

badblocks -t 0x0000 -sw /dev/sdc

警告する:これはデータを破壊する行為ですdd if=/dev/zero

ユーザーは次のような内容を受け取ります。

7234624 done, 39:10 elapsed. (0/0/2417408 errors)

SDカードが破損していることを示します。

SDカードを交換すると問題が解決します。

答え2

使用

sudo fdsik -l

たとえば、結果を確認してください。

/dev/mmcblk0
/dev/mmcblk01
/dev/mmcblk02

結果が異なる場合があります!

これで、次のものを使用する必要があります。

sudo dd bs=4M if=exmple.img of=**/dev/mmcblk0** conv=fsync status=progress

関連情報