Dd
dd 不會覆蓋磁碟
我在 Windows 主機上的虛擬機 (VMWare) 中執行 Ubuntu 18.04.1。我正在嘗試使用 dd 將整個 SD 卡歸零。這是我用來向軟體組發布嵌入式 Linux 的過程的一部分(當空 FS 數據全為 0 時,SD 卡映像壓縮得更好)。
我正在使用的命令是:
sudo dd if=/dev/zero of=/dev/sdc bs=4M status=progress
它成功完成;我收到了傳輸記錄的列印輸出,以及一條消息說設備上沒有剩餘空間。如果我然後sudo cat /dev/sdc | hexdump
查看磁碟內容,磁碟仍然充滿數據並且不是零(而且不僅僅是在最後)。我是否必須指定 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 ...
正如評論中所說,SD卡帶有壞塊。
我提出的解決方案是執行:
badblocks -t 0x0000 -sw /dev/sdc
**注意:**這是破壞性的數據,例如
dd if=/dev/zero
.使用者收到如下資訊:
7234624 done, 39:10 elapsed. (0/0/2417408 errors)
顯示sdcard已損壞。
換了sdcard,問題就解決了。
採用
sudo fdsik -l
並查看結果,例如:
/dev/mmcblk0 /dev/mmcblk01 /dev/mmcblk02
您的輸出可能有所不同!
現在你應該使用:
sudo dd bs=4M if=exmple.img of=**/dev/mmcblk0** conv=fsync status=progress