나는 가지고 있습니다: 리눅스에서:
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/
인사!