실제 파티션이 맞으면 dd를 사용하여 더 큰 SD 카드를 더 작은 SD 카드로 복제 할 수 있습니까?


9

파티션이 몇 개인 16GB SD 카드가 있습니다 (실제로 Raspberry Pi 용 카드 임). 기본 카드를 복제하려는 다른 4GB 카드가 여러 개 있습니다. 기본 카드의 3 개 파티션은 다음과 같습니다.

  • 랩 부팅 파티션, FAT, 60MB
  • 리눅스 파티션, ext2, 1GB
  • 추가 "스토리지"파티션, FAT, 1GB

다음을 dd통해 카드 이미지를 만드는 데 사용 하는 경우 :

dd if=/dev/sdb of=~/sd-card.bin

그런 다음 결과 .bin의 크기는 16GB입니다. dd실제로 사용되고있는 것, 즉 <4GB를 복사 dd하여 새로운 4GB 카드 에 복사 할 수있는 방법 이 있습니까? 아니면 사용해야하는 더 나은 솔루션이 있습니까?


나는 새로운 4GB 카드에 정확한 내용을 만들어서 dd다른 많은 카드로 복제했습니다 . 여전히 초기 문제를 해결할 수 있는지 알고 싶습니다.

답변:


9

라즈베리 파이 자체가 아니라 PC 리눅스 또는 맥 컴퓨터를 사용하여 복사를 수행한다고 가정합니다. 블록 크기를 추가해야 할 수도 있습니다.

bs = 1M 또는 bs = 4M을 지정하여 Raspberry pi 디스크에 사용되는 1 개 및 4 개의 메가를 보았습니다. 큰 전송이 작은 전송보다 빠르기 때문에 디스크를 쓸 때 블록 크기가 더 중요하다고 생각합니다. 디스크의 블록 크기를 설정하지 않고 dd가 사용하는 전송 크기에만 영향을줍니다. 큰 블록 크기를 설정하는 한 가지 이유는 플래시를 쓰기 전에 지워야하기 때문입니다. 이 작업은 자동으로 이루어 지지만 최소 삭제 크기보다 큰 전송에서는 더 빠릅니다.

"count"를 사용하여 dd에 의해 복사 된 총 데이터 양을 제한 할 수 있습니다. "count"는 블록 단위입니다. 소스 디스크의 마지막 파티션 끝이 대상 크기보다 이전이면 원하는 것을 수행 할 수 있습니다.

같은 뭔가 dd if=/dev/sdb of=~/sd-card.bin bs=1M count=4000크기 4000MBs 인 이미지를 만듭니다.

자세한 내용은 http://en.wikipedia.org/wiki/Dd_(Unix)http://elinux.org/RPi_Easy_SD_Card_Setup 을 참조하십시오. 마지막 파티션의 끝 또는 총 카드 크기를 찾는 방법을 잘 모릅니다. 그러나 디스크를 포맷 한 경우이 작업을 수행하는 방법을 알고있을 것입니다.


정보에 대해서 감사드립니다. 카운트 옵션을 몰랐습니다. 시도해 볼게요.

@charlie 카운트 옵션을 사용하거나 사용하지 않고 시도하고 다시보고 할 수 있다면 흥미로울 것입니다. 디스크 크기가보고되는 방식을 확인하고 파일을 추가 할 수 있고 크기가 변경되는지 확인하십시오. 다른 크기의 디스크와 관련하여 dd가 실패하면 이러한 종류의 문제가 발생합니다. 다음은 두 개의 다른 크기의 드라이브로 dd를 망친 예입니다. superuser.com/questions/538583/difficulty-resizing-a-partition 결국 나는 dd를 사용하여 복제를하지 않았다.
barlop

3

William의 답변을 확장하면 계산기를 사용하여 마지막 파티션의 끝을 fdisk계산할 수 있습니다.

$ fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00057540

Device         Boot  Start     End Sectors  Size Id Type
/dev/mmcblk0p1        2048  186367  184320   90M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      186368 3667967 3481600  1.7G  5 Extended
/dev/mmcblk0p5      188416 3667967 3479552  1.7G 83 Linux

사용 된 총 공간 (바이트) = 마지막 파티션 X 섹터 크기의 끝 섹터 (여기서는 3667967 x 512)

총 사용 공간 (GB) = 총 사용 공간 (바이트) / 1024 3 (여기서는 1.749023GB)

일반적으로 마지막 유용한 비트로 구문 분석 된 이미지를 만드는 것이 중요하지 않으므로 위의 예제에서 William이 설명한 동일한 답변 에서 2GB의 이미지를 만듭니다 .

dd if=/dev/mmcblk0 of=/path/to/pi_updated.img bs=1M count=2048

이미지 끝에는 마지막 유용한 데이터 다음에 쓸모없는 guff의 작은 부분이 포함되지만 이는 이미지를 미디어에 다시 쓸 때 덮어 쓰는 쓸모없는 guff와 원칙적으로 다르지 않습니다.

이 방법은 수십 개의 클론에서 저에게 효과적이었습니다. 이 방법에 치명적인 결함이있는 경우 아직 나타나지 않았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.