디스크 이미지를 마운트하려면 어떻게해야합니까?


26

myimage.disk파티션 테이블과 기본 파티션 (예 : FAT32 파일 시스템)을 포함 하는 디스크 이미지 가 있습니다. USB 펜 이미지라고 생각하십시오.

기본 파티션을 로컬 디렉토리에 마운트하고 싶습니다. 루프 유틸리티를 사용하여 파티션 이미지를 마운트하는 방법을 알고 있지만 여기에는 디스크 이미지가 있습니다. 내 생각에 파티션 테이블을 "스킵"하는 이미지를 마운트해야하지만 어떻게해야합니까?


7
superuser.com/questions/117136/ 도 참조하십시오. losetup --partscan --find --show disk.img다음과 같이 간단하게 사용하고 싶을 수도 있습니다mount /dev/loop0p1 /mnt/disk
Flow

답변:


44

kpartx 도구를 사용하면이 작업이 쉬워집니다. 이미지의 각 파티션에 대해 / dev / mapper에 루프 장치를 만듭니다. 그런 다음 오프셋을 수동으로 계산하지 않고도 원하는 파티션에 해당하는 루프 장치를 마운트 할 수 있습니다.

예를 들어 디스크 이미지의 첫 번째 파티션을 마운트하려면

kpartx -a -v myimage.disk
mount /dev/mapper/loop0p1 /mnt/myimage

이미지 작업이 끝나면 루프 장치를 제거하십시오.

umount /mnt/myimage
kpartx -d -v myimage.disk

또는 최신 커널이 있고 부팅시 (루프가 내장 된 경우) 또는 modprobe (루프가 모듈 인 경우)에 loop.max_part = 63을 전달하면 다음과 같이 할 수 있습니다.

losetup /dev/loop0 myimage.disk
partprobe /dev/loop0             # Re-read partition table if /dev/loop0 was used with a different image before
mount /dev/loop0p1 /mnt/myimage

루프가 끝나면 :

losetup -d /dev/loop0

1
당신은 -o loop위의 것을 필요로하지 않으며 , /dev/mapper/loop0p1이미 블록 장치입니다 (루프 장치 위에 매퍼 장치, 그 위에 다른 루프 장치 레이어를 원하지 않습니다).
sch

2
/dev/loop0p1실행 후 파티션 장치 등을 얻지 못하면을 losetup실행하십시오 partprobe /dev/loop0.
블라디미르 판 텔레 예프

kpartxLinux Mint 18에 기본적으로 설치되어있는 것 같습니다.
unfa

4

이것을 찾았습니다 :

http://www.andremiller.net/content/mounting-hard-disk-image-include-partitions-using-linux

정확히 내가 찾던 것 같습니다.

주요 부분은 다음과 같습니다.

mount -o loop,ro,offset=32256 hda.img /mnt/rabbit

여기서 offset 값은 바이트 단위입니다. 오프셋을 얻는 제안 된 방법 parted은 이미지 를 가리킨 다음 단위 B를 바이트 단위로 지정하고 인쇄 출력에서 ​​시작 값을 가져 오는 것입니다. 디스크 공간이 있다고 가정하면 오프셋과 크기가 확보되면 dd각 파티션을 별도의 파일로 추출하기 만하면 됩니다.


1
정말 좋은 답변을 작성하기 위해 여기서 가장 중요한 부분을 설명해 주시겠습니까? 링크가 있으면 좋지만 여기에 정보를 두는 것이 가장 좋습니다.
slhck

1
주요 부분은 다음과 같습니다. 여기서 mount -o loop,ro,offset=32256 hda.img /mnt/rabbit값은 offset바이트입니다. 오프셋을 얻는 제안 된 방법은 이미지에서 parted를 가리킨 다음 unit B바이트 start를 사용하여 print출력 에서 값을 가져 오는 것 입니다. 디스크 공간이 있다고 가정하면 오프셋과 크기가 확보되면 dd각 파티션을 별도의 파일로 추출하기 만하면 됩니다.
CVn

예, 너무 짧아서 죄송합니다. 마이클이 지적한 바와 같이, 관련 부분은 물론 옵션을 mount포함하는 선 offset입니다.
Emiliano

2
local_image_file=/var/tmp/image.img
first_byte=$(parted -m ${local_image_file} unit B print | grep Linux | cut --fields 2 --delimiter ':' | sed 's/.$//')
loop_file=/var/tmp/loop
mkdir -p ${loop_file}
mount -o loop,ro,offset=${first_byte} ${local_image_file} ${loop_file}

1
이것이 질문에 대한 답변이 될 수 있지만, 그 이유에 대한 설명을 제공 할 수 있다면 더 나은 답변이 될 것 입니다.
DavidPostill

2

요즘에는를 사용하여 작업을 최소화 할 수 있습니다 udisks. ArchWiki의 솔루션 : udisk-마운트 루프 장치

ISO 이미지를 쉽게 마운트하려면 다음 명령을 사용하십시오.

udisksctl loop-setup -r -f image.iso

이렇게하면 루프 장치가 만들어지고 ISO 이미지를 마운트 할 준비가됩니다. 마운트 해제되면 루프 장치는 udev에 의해 종료됩니다.

-r 읽기 전용 옵션이 있습니다.


정보에 감사드립니다. 내가 처음으로 참조를 찾은 것은 미친 짓 udisksctl입니다.
Oxwivi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.