'dd'로 만든 드라이브 이미지를 각 파티션에 대해 별도의 파일로 분할하려면 어떻게해야합니까?


9

다음과 같이 고장난 드라이브의 이미지를 만들었습니다.

dd if=/dev/sde of=/mnt/image001.dd

드라이브에는 두 개의 파티션 만 있습니다.

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1   *           1          13      102400    7  HPFS/NTFS
/dev/sde2              13       60802   488282112    7  HPFS/NTFS

파일 (image001.dd)을 두 개 또는 세 개의 파일 (1 : MBR; 2 : 파티션 1; 3 : 파티션 2)로 분할 하여 파일 시스템을 마운트 할 수 있습니까?

내가 찾지 못하는 해결책은 split많은 512K 파일을 만드는 데 사용 cat하고 다시 3 개의 파일 (1 : 512K, 2 : 105M, 3 : 나머지)로 다시 사용하는 것입니다. 이를위한 디스크 공간.

역사 :
나는 이미 전체 이미지를 새 드라이브에 복사했으며 부팅되고 대부분 작동합니다. FS가 기존의 고장난 드라이브 dd에서 손상되어 손상된 부분을 복사 한 후 새 드라이브에 기록한 것 같습니다. 내 솔루션은 내가 복사하고 그냥 (사용하여 파일을 복사하는 FS 마운트하는 것입니다 rsync그래서 나 뭔가를) 잘하면 내가 나쁜 비트를 복사하지 않습니다.

업데이트 1 : 시도 dd if=/mnt/image001.dd of=/mnt/image001.part1.dd bs=512 count=204800 skip=1했지만 그에 mount대해 불평 NTFS signature is missing하므로 제대로하지 않았다고 생각합니다.

답변:


17

이것을 전혀 분할하지 않아도됩니다.

parted파티션 테이블에 대한 세부 사항을 얻는 데 사용하십시오 .

parted image001.dd

에서는 parted, 명령어와 바이트 단위로 전환 u한 후, B. 그런 다음 명령을 발행하십시오 print.

다음과 같은 출력이 나타납니다 (출력은 이미지가 아닌 실제 시스템에서 출력 됨).

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 25165824000B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End           Size          Type     File system     Flags
 2      1048576B      400556031B    399507456B    primary  ext4            boot
 3      400556032B    21165506559B  20764950528B  primary  ext4
 1      21165506560B  25164775423B  3999268864B   primary  linux-swap(v1)

Start루프백 마운트에 대한 오프셋으로 숫자를 사용할 수 있습니다 .

mount -o loop,ro,offset=400556032 image001.dd /mnt/rescue

에 세 번째 파티션을 마운트합니다 /mnt/rescue.


둘 다 kpartx내 문제를 해결하십시오. 이 답변이을 (를 parted)보다 더 일반적 이라고 생각하기 때문에 선택 kpartx했지만 kpartx조금 더 쉽습니다.
Joe A

16

단순히 kpartx도구 를 사용하는 것이 훨씬 좋습니다 .

usage : kpartx [-a|-d|-l] [-v] wholedisk
    -a add partition devmappings
    -d del partition devmappings
    -l list partitions devmappings that would be added by -a
    ...

예:

# kpartx -l whole_disk # only listing
loop0p1 : 0 518144 /dev/loop0 2048
loop0p2 : 0 3674112 /dev/loop0 520192
# kpartx -a whole_disk 
# file -sL /dev/mapper/loop0p*
/dev/mapper/loop0p1: Linux/i386 swap file (new style), version 1 (4K pages), size 64767 pages, no label, UUID=e4990860-c87d-4850-9e8d-ecb0a0506516
/dev/mapper/loop0p2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)

이 시점에서 나는 마운트 할 수있다 /dev/mapper/loop0p2.

통화 kpartx -d whole_disk를 마운트 해제 한 후 정리합니다.


1
+1이 도구는 들어 본 적이 없습니다.
Sven

아래의 SvenW의 답변은 모두 잘 작동합니다! 둘 다 드라이브 이미지 내에 파티션을 마운트하겠습니다.
Joe A
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.