DD를 사용하여 디스크 이미지에서 파티션을 복제하는 방법은 무엇입니까?

DD를 사용하여 디스크 이미지에서 파티션을 복제하는 방법은 무엇입니까?

디스크 이미지가 있는데, 이는 "전체" 디스크 이미지입니다. 예를 들어 여러 파티션이 포함되어 있고, 파티션만 복제하고 싶습니다.하나그 중(첫 번째 파티션이 아님..)을 여러 파티션이 있는 외부 드라이브의 파티션에 복사합니다(또한 디스크의 첫 번째 파티션에 복제하지 않습니다...).

이미지를 FDisk하면 다음이 제공됩니다.

# fdisk -l 2013-02-09-wheezy-raspbian.img

디스크 2013-02-09-wheezy-raspbian.img: 1939MB, 1939865600바이트
255개 헤드, 63개 섹터/트랙, 235개 실린더, 총 3788800개 섹터
단위 = 1 * 512 = 512바이트의 섹터
섹터 크기(논리적/물리적): 512바이트 / 512바이트
I/O 크기(최소/최적): 512바이트 / 512바이트
디스크 식별자: 0x00014d34

                         장치 부팅 시작 끝 블록 ID 시스템
2013-02-09-wheezy-raspbian.img1 8192 122879 57344 c W95 FAT32 (LBA)
2013-02-09-wheezy-raspbian.img2 122880 3788799 1832960 83 리눅스
#

블록 장치는 다음과 같습니다.

# fdisk -l /dev/sdc

디스크 /dev/sdc: 8014MB, 8014266368바이트
247개 헤드, 62개 섹터/트랙, 1022개 실린더, 총 15652864개 섹터
단위 = 1 * 512 = 512바이트의 섹터
섹터 크기(논리적/물리적): 512바이트 / 512바이트
I/O 크기(최소/최적): 512바이트 / 512바이트
디스크 식별자: 0x00000000

   장치 부팅 시작 끝 블록 ID 시스템
/dev/sdc1 2048 131071 64512 e W95 FAT16(LBA)
/dev/sdc2 131072 15652863 7760896 83 리눅스
#

이미지의 두 번째 파티션이 블록 장치의 두 번째 파티션을 대체하고 싶습니다. 뒤따르는 손상된 여유 공간에 대해 걱정하지 마십시오. GParted를 사용하여 이를 정리하고 어쨌든 다른 용도로 필요합니다.

답변1

# losetup --find --show --partscan --read-only 2013-02-09-wheezy-raspbian.img
/dev/loop7
# dd if=/dev/loop7p2 of=/dev/narnia bs=1M

작동하지 않으면 --partscan다음 중 하나를 사용할 수도 있습니다.

# partx -a /dev/loop7
# kpartx /dev/loop7

또는 유사한 파티션 매핑 솔루션.

그것이 올바른지 또는 무엇인지 확인하기 위해 먼저 마운트해야 할 것입니다.

물론 fdisk 출력을 읽고 또는 무엇이든 직접 제공할 수도 있습니다 dd. skip=131072즉, 많은 입력 블록을 건너뛰어 파티션이 있는 위치에서 읽기를 시작하도록 할 수 있습니다. 그러나 루프 장치를 사용하여 실제 파티션을 보는 것이 더 좋습니다.

답변2

다음과 같이 작동해야 합니다.

dd if=/path/to/2013-02-09-wheezy-raspbian.img2 of=/dev/sdc2 bs=4096 conv=notrunc,noerror

만약에= 복제하려는 이미지를 설정합니다.

~의= 이미지를 복제할 대상 파티션을 설정합니다.

답변3

  1. 이미지를 루프백 장치로 마운트합니다.losetup -fP yourImage.img
  2. 이제 이미지의 각 파티션에 직접 액세스할 수 있습니다. 꼭 사용해야 한다면 dd할 수 있지만 더 dd if=/dev/loop0p1 of=image.img좋아하실 것 같습니다 cat. 루트 쉘에서는 간단히 cat /dev/loop0p1 > image.img. 두 예 모두 첫 번째 파티션을 원하고 할당된 루프백 장치가 다음과 같다고 가정합니다./dev/loop0
  3. 루프백 장치 사용이 완료되면 를 사용하여 분리할 수 있습니다 losetup -d /dev/loop0. 다시 한 번, 이는 /dev/loop0루프백 장치라고 가정합니다.

답변4

이를 사용하면 두 번째 파티션만 별도의 이미지로 복사할 수 있습니다.

dd if=2013-02-09-wheezy-raspbian.img of=second.img bs=512 skip=122880

그런 다음 디스크의 파티션 대신 복사할 수 있습니다.

dd if=second.img of=/dev/sdc2 bs=512

아니면 하나의 명령으로 할 수도 있습니다

dd if=2013-02-09-wheezy-raspbian.img of=/dev/sdc2 bs=512 skip=122880

쓰기 전에 /dev/sdc2를 마운트 해제했는지 확인하세요.

관련 정보