명령 줄에서 디스크 이미지를 마운트하는 방법은 무엇입니까?


39

/ dev에 해당 장치 파일이있는 드라이브를 마운트하는 방법을 알고 있지만 물리적 장치를 나타내지 않고 / dev에 아날로그가없는 디스크 이미지에 대해이 작업을 수행하는 방법을 모르겠습니다 (예 : ISO 파일 또는 플로피 이미지). Mac OS X에서 Finder의 디스크 이미지 아이콘을 두 번 클릭하여 드라이브를 자동으로 마운트하면이 작업을 수행 할 수 있지만 터미널 에서이 작업을 수행하고 싶습니다. 이 작업을 수행하는 일반적인 유닉스 방법이 있는지 또는 플랫폼별로인지 확실하지 않습니다.


1
OS X의 명령 행에서 하시겠습니까? 언급했지만 질문이 특정 운영 체제에만 해당되는 경우 명시 적으로 작성하는 것이 좋습니다. 또한 어떤 유형의 디스크 이미지를 의미합니까? .iso?
ilkkachu

답변:


42

MBR 파티션 테이블이있는 하드 드라이브 이미지 인 경우 마운트해야하는 파티션의 오프셋을 찾기 위해 이미지를 fdisk로 만들 것입니다.

fdisk -lu /path/disk.img

그런 다음 오프셋을 전달하여 마운트합니다.

mount -o loop,offset=xxxx /path/disk.img /mnt/disk.img.partition

오프셋 값은 바이트 단위이지만 fdisk블록 수를 표시하므로 마운트 할 오프셋을 얻으려면 fdisk출력 의 "시작"또는 "시작"열의 값 에 512(또는 블록 크기에 관계없이) 곱해야합니다.


5
losetup -P이 방법보다 일반적으로 더 편리합니다 : unix.stackexchange.com/a/316407/32558
치로 틸리가新疆改造中心法轮功六四事件

35

대부분의 최신 GNU 시스템에서 mount명령은 다음을 처리 할 수 ​​있습니다.

mount -o loop file.iso /mnt/dir

마운트 해제하려면 umount명령을 사용하면됩니다.

umount /mnt/dir

OS에이 옵션이 없으면 루프 장치를 만들 수 있습니다 .

losetup -f # this will print the first available loop device ex:/dev/loop0
losetup /dev/loop0 /path/file.iso #associate loop0 with the specified file
mount /dev/loop0 /mnt/dir #It may be necessary specify the type (-t iso9660)

umount 사용하려면 -d다음 을 사용할 수 있습니다 .

umount /mnt/dir
losetup -d /dev/loop0

파일에 HD 이미지와 -P같은 파티션이있는 경우 OS에 따라 매개 변수를 사용할 수 있으며 파일 컨텐츠에 파티션을 맵핑합니다.

losetup -P /dev/loop0 /path/file.iso # will create /dev/loop0 
ls /dev/loop0p* #the partitions in the format /dev/loop0pX

이것은 기본적으로 localhost디스크 이미지의 루프백입니다.
Monica와의 가벼움 경주

2
losetupmount -o loop리눅스 다릅니다. illumos와 FreeBSD는 다른 구문과 동일하지만 다른 커널 (예 : hurd, illumos 또는 kFreeBSD)을 사용하는 GNU 배포판에서는 작동하지 않습니다.
Stéphane Chazelas

추가 자동화 기능은 다음과 같습니다 losetup. unix.stackexchange.com/a/430415/32558
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

6

시험:

mount -o loop /path/to/file.iso /mnt

다음에 추가 할 수 있습니다 loop.

  • -t msdos 플로피
  • -t iso9660 CD-ROM 이미지 용

리눅스는 보통 파일 형식을 추측하려고합니다.


6

losetup -P 다중 파티션 이미지를위한 자동화

명령 줄에서 디스크 이미지를 마운트하는 방법은 무엇입니까? | Unix & Linux Stack Exchange에 대해 언급 losetup -P했으며 다음은 일을 더 자동화하는 편리한 Bash 함수입니다. 용법:

$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2

$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there

$ sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                                                      DIO
/dev/loop1         0      0         0  0 /full/path/to/my.img

$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0

출처:

los() (
  img="$1"
  dev="$(sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    echo "$dst"
    sudo mkdir -p "$dst"
    sudo mount "$part" "$dst"
  done
)
losd() (
  dev="/dev/loop$1"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    sudo umount "$dst"
  done
  sudo losetup -d "$dev"
)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.