복잡한 파티션 구조로 원시 디스크 이미지를 마운트하려면 어떻게합니까?


0

gddrescue 만든 원시 디스크 이미지가 있습니다 . 복잡한 파티션 구조이기 때문에 마운트에 실패했습니다.

losetup포트 캔 옵션으로 먼저 시도했습니다 .

# losetup -Pf --show -v silvio-extern.iso 
/dev/loop0

# fdisk -lu /dev/loop0

Disk /dev/loop0: 298,1 GiB, 320072933376 bytes, 625142448 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: 0x88c8fbd4

Device       Boot Start       End   Sectors   Size Id Type
/dev/loop0p1         63 625137344 625137282 298,1G  7 HPFS/NTFS/exFAT

# fdisk -lu /dev/loop0p1 

Disk /dev/loop0p1: 298,1 GiB, 320070288384 bytes, 625137282 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: 0x444c544e

Device         Boot      Start        End    Sectors  Size Id Type
/dev/loop0p1p1 ?    1768778098 1776409558    7631461  3,7G 6b unknown
/dev/loop0p1p2 ?    1830843506 3225479386 1394635881  665G 75 PC/IX
/dev/loop0p1p3 ?    1718906437 1718909009       2573  1,3M 41 PPC PReP Boot
/dev/loop0p1p4      2827157504 2827210421      52918 25,9M  0 Empty

Partition table entries are not in disk order.

# fdisk -lu /dev/loop0p1p2
fdisk: cannot open /dev/loop0p1p2: No such file or directory

파티션 크기는 / dev / loop0p1p2에 관심이 있다는 것을 알려줍니다.

루프 장치 설명서를 만들려고했습니다. 내가 올바르게 얻은 경우 Start* Sector size(1830843506 * 512 = 937391875072)와 Sectors* Sector size(1394635881 * 512 = 714053571072)의 크기가 필요합니다. 그러나 작동하지 않습니다.

# losetup -o 937391875072 --sizelimit 714053571072 --show -v -f /dev/loop0p1
/dev/loop1

# fdisk -lu /dev/loop1
fdisk: cannot open /dev/loop1: Inappropriate ioctl for device

# mount /dev/loop1 content/
mount: /dev/loop1 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/loop1,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

그래서 나는 kpartx변화를 주었습니다 . 그러나 동일했습니다.

# kpartx -av silvio-extern.iso 
add map loop0p1 (253:2): 0 625137282 linear /dev/loop0 63

# fdisk -lu /dev/loop0p1

Disk /dev/loop0p1: 298.1 GiB, 320070288384 bytes, 625137282 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: 0x444c544e

Device         Boot      Start        End    Sectors  Size Id Type
/dev/loop0p1p1 ?    1768778098 1776409558    7631461  3.7G 6b unknown
/dev/loop0p1p2 ?    1830843506 3225479386 1394635881  665G 75 PC/IX
/dev/loop0p1p3 ?    1718906437 1718909009       2573  1.3M 41 PPC PReP Boot
/dev/loop0p1p4      2827157504 2827210421      52918 25.9M  0 Empty

Partition table entries are not in disk order.

# fdisk -lu /dev/loop0p1p2
fdisk: cannot open /dev/loop0p1p2: No such file or directory

그런 다음 losetupportscan 옵션 으로 실행하려고했지만 성공하지 못했습니다.

# losetup -Pf --show -v /dev/loop0p1 
/dev/loop1

# fdisk -lu /dev/loop1

Disk /dev/loop1: 298.1 GiB, 320070288384 bytes, 625137282 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: 0x444c544e

Device       Boot      Start        End    Sectors  Size Id Type
/dev/loop1p1 ?    1768778098 1776409558    7631461  3.7G 6b unknown
/dev/loop1p2 ?    1830843506 3225479386 1394635881  665G 75 PC/IX
/dev/loop1p3 ?    1718906437 1718909009       2573  1.3M 41 PPC PReP Boot
/dev/loop1p4      2827157504 2827210421      52918 25.9M  0 Empty

Partition table entries are not in disk order.

# fdisk -lu /dev/loop1p2
fdisk: cannot open /dev/loop1p2: No such file or directory

내가 준 kpartx에 대한 시도 /dev/loop0p1및 일부 오류 메시지를 가지고 :

# kpartx -av /dev/loop0p1 
device-mapper: reload ioctl on loop0p1p1 failed: Invalid argument
create/reload failed on loop0p1p1
add map loop0p1p1 (0:0): 0 7631461 linear /dev/loop0p1 1768778098
device-mapper: reload ioctl on loop0p1p2 failed: Invalid argument
create/reload failed on loop0p1p2
add map loop0p1p2 (0:0): 0 1394635881 linear /dev/loop0p1 1830843506
device-mapper: reload ioctl on loop0p1p3 failed: Invalid argument
create/reload failed on loop0p1p3
add map loop0p1p3 (0:0): 0 2573 linear /dev/loop0p1 1718906437
device-mapper: reload ioctl on loop0p1p4 failed: Invalid argument
create/reload failed on loop0p1p4
add map loop0p1p4 (0:0): 0 52918 linear /dev/loop0p1 2827157504

참고 : Ubuntu 16.04의 자동 마운트는 원본 디스크와 잘 작동합니다.

누구든지 어떤 아이디어가 있습니까?

데비안 8로 디스크 이미지를 마운트하려고합니다.


@ Kamil Maciorowski가 제안한 것처럼 offset옵션으로 이미지 파일을 직접 마운트하려고했습니다 . 이것은 Input/output error내용을 나열 할 때 나에게 제공 합니다.

# mount -o offset=$((512*63)) silvio-extern.iso content/
# ls -l content/
ls: reading directory content/: Input/output error
total 0

fdisk이미지 파일 과 오프셋을 두 번 확인했습니다 .

# fdisk -lu silvio-extern.iso 

Disk silvio-extern.iso: 298.1 GiB, 320072933376 bytes, 625142448 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: 0x88c8fbd4

Device             Boot Start       End   Sectors   Size Id Type
silvio-extern.iso1         63 625137344 625137282 298.1G  7 HPFS/NTFS/exFAT

1
중첩 파티션이있는 이유는 무엇입니까?
Daniel B

@DanielB 나는 모른다. 해당 디스크를 만들거나 사용하지 않았습니다. 고장난 후에 방금 받았습니다. Kamil Maciorowski는 그의 대답에 가능한 이유를 포함시켰다.
jelhan

답변:


2

파티션 테이블은 매우 간단합니다. 하나의 NTFS 파티션은 공통 오프셋입니다.

sudo mount -o offset=$((512*63)) silvio-extern.iso /path/to/mountpoint

이 명령 fdisk -lu /dev/loop0p1은 파티션 테이블 디스크 인 것처럼 (그것이 나 이미 한 이상한 것처럼 보이지만 실제 NTFS 파티션을 읽고 /dev/loop0p1, kpartx나중에 사용되었다). 그러한 많은 경우 fdisk에 파티션 테이블이 이상하게 보일 수 있다고 경고합니다. 아마도 잘못된 장치가 선택되었습니다.

여기서 "내부 파티션 테이블"은 경고를 트리거 할 정도로 이상하지 않은 것 같습니다. 여전히 "파티션"은 순서가 맞지 않으며, 일반적이지 않은 유형이며 오프셋과 크기는 의미가 없습니다. 제 생각에이 "내부 파티션 테이블"은 유효하지 않습니다. 그러한 파티션 설정은 매우 이상합니다. 파티션 된 장치로 취급해서는 안되는 NTFS 파티션이 하나만 있다고 생각합니다. 위 명령으로 마운트 할 수 있습니다.


당신은 아마 필요하지 않습니다 losetup. fdisk이미지 파일을 잘 읽을 수 있다고 생각합니다 .

fdisk -lu silvio-extern.iso

출력에서 오프셋 512*63mount명령 과 함께 사용하도록 지정할 수 있습니다 (위 그림 참조) losetup.


나는 또한 그 중 하나를 시도했지만 Input/output error오프셋으로 이미지 파일을 마운트 한 디렉토리의 내용을 나열하려고 할 때 왔습니다. 질문에 더 많은 정보를 추가했습니다.
jelhan

@ jelhan Mounting 자체가 성공적이지만 여전히 이것이 옳은 일이라고 생각합니다. 이 오류는 NTFS 파일 시스템에 문제가 있거나 실제 장치 (이미지가있는 위치)에 문제가있을 수 있습니다. 오류 직후 dmesg( dmesg | tail -n 20)에 흥미로운 것이 있습니까?
Kamil Maciorowski

@jelhan NTFS 파일 시스템에 문제가있는 것 같습니다. 추가 손상을 피하기 위해 읽기 전용 모드로 마운트를 고려할 수 있습니다. 귀하의 경우에mount -o ro,offset=…
Kamil Maciorowski

gddrescue가 만든 이미지가 손상되었을 수 있습니다. 다른 것을 만들 시간이 없습니다. 당신의 대답을 받아 들일 것입니다.
jelhan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.