내가 한 일은 세 개의 파티션이 있는 작은 32GB 플래시 모듈을 복제하는 것이었습니다. 우연히 32GB USB가 있어서 생각했어요.가능한그것은 효과가 없었습니다. Toshiba의 32GB는 Sandisk의 32GB와 약간 다른 것 같습니다.
어쨌든 2TB 외장 드라이브를 사용하고 똑같은 일을 했습니다. 구체적으로 다음을 수행했습니다.
dd if=/dev/sdX of=/dev/sdY bs=100M
옆에마지막 블록은 부분 복사본으로 나타나나요, 아니면 EOF에 먼저 도달하면 삭제되나요?
따라서 본질적으로 전체 플래시 모듈(파티션 테이블 등)을 복제합니다. 32GB -> 2TB는 dd
마지막(세 번째) 파티션의 끝을 읽은 후 유틸리티가 올바르게 중지되므로 쉽습니다 .
이제 제가 해야 할 일은 전체 Flash 이미지를 포함하는 간단한 바이너리 blob을 만드는 것뿐입니다. 이제 내 2TB 드라이브에 원래 드라이브와 동일한 파티션이 있습니다 sdx1, sdx2, sdx3
. 그래서 다시 dd
다음을 수행합니다 .
dd if=/dev/sdx of=firmware.bin bs=100M
이렇게 하면 내가 관심 있는 첫 번째 32GB를 복사할 뿐만 아니라 계속해서 전체 2TB 드라이브를 복제하게 됩니다. 제가 시도했을 때도 그랬습니다. 다음을 사용하여 관심 있는 파티션의 정확한 바이트 길이를 찾을 수 있습니다.
$ lsblk -b
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 0 2000398933504 0 disk
├─sdc1 8:33 0 134217728 0 part
├─sdc2 8:34 0 2147483648 0 part
└─sdc3 8:35 0 29734297600 0 part
이 문제를 해결하는 명확한 방법은 블록 크기를 dd
1바이트로 설정한 다음 읽을 블록 수를 위의 세 가지 크기의 합으로 설정하는 것입니다.
dd if=/dev/sdc of=firmware.bin bs=1 count=32015998976
그러나 이것이 실제로 얼마나 오래 걸릴지는 상상할 수 없습니다.
편집하다: 위의 흥미로운 빠른 테스트에서는 약 150KB/s의 견고한 전송 속도를 보여주었습니다.
너무 길어요.파티션 크기의 합보다 훨씬 큰 디스크의 처음 3개 파티션을 단독으로 복사하는 방법은 무엇입니까?
답변1
필요한 파티션과 MBR을 복사하기만 하면 됩니다(필요한 경우).
MBR은 디스크의 처음 512바이트에 저장됩니다.
dd if=/dev/sdX of=/path/to/mbr_file.img bs=512 count=1
각 파티션을 복사
dd if=/dev/sdX1 of=/path/to/partition1.img bs=512
dd if=/dev/sdX2 of=/path/to/partition2.img bs=512
dd if=/dev/sdX3 of=/path/to/partition3.img bs=512