dd는 디스크를 덮어쓰지 않습니다.

dd는 디스크를 덮어쓰지 않습니다.

저는 Windows 호스트의 가상 머신(VMWare)에서 Ubuntu 18.04.1을 실행하고 있습니다. dd를 사용하여 전체 SD 카드를 0으로 만들려고 합니다. 이는 임베디드 Linux를 소프트웨어 그룹에 릴리스하는 데 사용하는 프로세스의 일부입니다(빈 FS 데이터가 모두 0일 때 SD 카드 이미지가 더 잘 압축됩니다).

내가 사용하는 명령은 다음과 같습니다. sudo dd if=/dev/zero of=/dev/sdc bs=4M status=progress성공적으로 완료되었습니다. 장치에 남은 공간이 없다는 메시지와 함께 전송 기록이 출력됩니다. 그런 다음 디스크 내용을 살펴보면 sudo cat /dev/sdc | hexdump디스크는 여전히 0이 아닌 데이터로 가득 차 있습니다(단순히 끝이 아님).

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

관련 정보