Linux에서 freebsd 슬라이스 파티션 마운트

Linux에서 freebsd 슬라이스 파티션 마운트

나는 가지고 있습니다: 리눅스에서:

       Device   Boot      Start         End      Blocks   Id  System
/filename.img      *         63     1007999      503968+  a5  FreeBsd

위 파티션 아래에는 ufs 파일 시스템과 스왑 영역이라는 두 개의 슬라이스가 있습니다. ufs 파티션의 마운트 오프셋을 결정하는 방법을 모르겠습니다.

mount -r -t ufs -o loop,offset=32256,ufstype=ufs2 filename.img /test/

dmesg 출력

ufs_read_super: bad magic number

작동하지 않습니다.

답변1

나는 그것이라고 의심한다

mount -r -o loop,offset=32768,ufstype=ufs2 filename.img /test/

내 기억이 정확하다면 첫 번째 BSD 파티션은 전체 디스크를 기준으로 32kB 경계에서 시작되었습니다. 512B의 64개 섹터입니다. BSD 파티션은 PC 파티션에 비해 63 섹터만큼 오프셋되어 있습니다. 왜냐하면 PC 파티션은 전체 디스크에 대해 1 섹터만큼 오프셋되어 있기 때문입니다. 디스크의 첫 번째 섹터에는 파티션 테이블이 포함되어 있습니다.

rozcietrzewiacz가 제안한 대로 다음 명령을 사용하여 BSD 파티션의 오프셋을 확인할 수 있습니다.

partx -l filename.img

하나 있다수리하다Linux 커널이 루프 장치 파티션에 대한 자동 액세스를 지원하도록 합니다. 데비안은 이것을 커널에 구현합니다. 이 패치가 있는 경우 loop드라이버에 충분한 max_part매개변수가 있는지 확인하십시오(이 작업을 수행해야 할 수도 있음 rmmod loop; modprobe max_part=63). 그러면 BSD 파티션은 /dev/loop0p5/dev/loop0p6.

답변2

모든 팁을 주셔서 감사합니다.

# partx -l filename.iso
HDIO_GETGEO: Inappropriate ioctl for device

/dev/mapper 디렉토리에 논리적 매핑을 생성한 파일 이름 매핑을 추가했습니다.

# kpartx -a filename.iso

# ls -l /dev/mapper/
control  loop0p1

마지막 확인

# partx -l /dev/mapper/loop0p1 
1:         0-       -1 (        0 sectors,      0 MB)
2:         0-       -1 (        0 sectors,      0 MB)
3:         0-       -1 (        0 sectors,      0 MB)
4:         0-    49999 (    50000 sectors,     25 MB)
1:   8388671-142078859 (133690189 sectors,  68449 MB)
2:        63-  8388670 (  8388608 sectors,   4294 MB)

마지막은 성공했네

mount -r -t ufs -o loop,offset=$((8388671*512)),ufstype=ufs2 filename.iso /test/

인사!

관련 정보