Linux에서 dd-created 블록 장치 이미지 (예 : HDD)에서 파티션을 마운트하려면 어떻게해야합니까?

dd 사용하여 만든 전체 디스크의 이미지가 있습니다. 디스크 구조는 다음과 같습니다.

kent@cow:~$ sudo fdisk -l

Disk /dev/sda: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b8508

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           5       90872   729929303+  83  Linux
/dev/sda2           90873       91201     2642692+   5  Extended
/dev/sda5           90873       91201     2642661   82  Linux swap / Solaris

이미지는 다음을 사용하여 작성되었습니다.

dd if=/dev/sda of=image750.img

가능한 경우 이미지에서 / dev / sda1을 마운트하여 내용을 읽을 수 있도록하려면 어떻게해야합니까?

HDD를 다시 복제하는 옵션은 아닙니다. 단일 파티션 만 복제 한 경우 어떻게해야하는지 알고 있습니다. 현재 이미지로 여전히 가능하기를 바랍니다.



답변

요즘 더 좋은 방법이 있습니다. 더 이상 오프셋이나 kpartx를 사용할 필요가 없습니다.

losetup --partscan --find --show disk.img

mount /dev/loop0p1 /mnt

loop0을 해제하려면 umount 후에 사용하십시오.

losetup -d /dev/loop0

답변

나는 오늘이 문제에 부딪 쳤고 나 자신을 상기시키기 위해 대답을 업데이트하고 싶었다. 직접 오프셋을 계산하는 대신 dd 이미지에서 마운트 가능한 장치를 제공하는 도구를 사용할 수 있습니다 : kpartx

http://robert.penz.name/73/kpartx-a-tool-for-mounting-partitions-within-an-image-file/

http://linux.die.net/man/8/kpartx

주어진 경우에는 다음과 같은 것이 필요합니다.

sudo kpartx -a image750.img
sudo mount /dev/mapper/loop1p1 /mount/point -o loop,ro

여기서 loop1p1은 첫 번째 파티션을 나타내고 loop1p2는 두 번째 파티션을 나타냅니다.


답변

첫 번째 부분 인 fdisk -l이 시작 오프셋을 찾습니다. 이 숫자에 512를 곱하면 오프셋 옵션을 얻을 수 있습니다. 따라서 귀하의 경우 sda1의 경우 5 * 512 = 2560입니다. 그런 다음 마운트를 실행하십시오.

mount -o loop,offset=2560 -t auto /path/to/image.dd /mount/point

답변

루프 마운팅은 답의 일부일뿐입니다.

파티션 지정에 대한 도움말 은 http://wiki.edseek.com/guide:mount_loopback#accessing_specific_partitions_in_the_image참조하십시오 . 나는 생각한다 , -o 루프를 장착 당신을 위해 작동합니다 = 32256 /path/to/image750.img을 / mnt 오프셋. 그러나 언급 된 자습서를 읽어야합니다.


답변

losetup -P 오토메이션

https://superuser.com/a/684707/128124 (util-linux v2.21에 추가, Ubuntu 16.04에 추가)에 언급 된 방법 은 다음과 같습니다. 용법:

$ 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"
)

루프 모듈 max_part 구성

util-linux v2.21 이전의 적절한 방법.

loop Ubuntu 14.04의 커널에 내장 된 커널 모듈입니다.

올바르게 구성하면 Linux가 자동으로 장치를 분할합니다.

cat /sys/module/loop/parameters/max_part

loop디바이스가 생성 할 수있는 파티션 수를 나타냅니다.

그것은이다 0더 자동 분할이 발생하지 이유입니다 우분투 14.04에서 기본적으로.

변경하려면 다음을 추가하십시오.

options loop max_part=31

의 파일 /etc/modprobe또는

GRUB_CMDLINE_LINUX="loop.max_part=31"

/etc/default/grub다음 sudo update-grub.

모듈 매개 변수를 설정하는 방법은 https://askubuntu.com/questions/51226/how-to-add-kernel-module-parameters를 참조하십시오.

재부팅 후 수행 할 때 :

sudo losetup -f --show my.img

이미지를 /dev/loopX장치에 마운트하고 파티션을 /dev/loopXpY장치에 자동으로 마운트합니다 .

따라서 재부팅하려는 경우 가장 편리한 방법입니다.

참조


답변

퓨즈와 같은 사용자 모드 파일 시스템이있는 경우 데스크탑 환경에서 Gnome을 좋아하고 gnome-disk-image-mounter와 같은 도구를 설치 한 경우 마우스 오른쪽 버튼을 클릭하여 루트 없이도 열 수 있습니다.


답변

나는 루프 마운트 가 답 이라고 믿는다.

sudo mkdir /path/to/dir/
mount -o loop example.img /path/to/dir/

위는 해당 디렉토리에 마운트해야합니다.

마운트를 해제해야합니다.

umount /path/to/dir