img 파일의 유형을 찾아 마운트하는 방법은 무엇입니까?

img 파일의 유형을 찾아 마운트하는 방법은 무엇입니까?

.img 파일을 설치해야 하는데 어떤 유형의 .img인지 모르겠습니다. 어떤 유형의 .img 파일인지 어떻게 알 수 있나요?

# mount -t auto -o ro,loop gmapsupp.img /mnt/iso/
mount: you must specify the filesystem type
# file -k gmapsupp.img 
gmapsupp.img: x86 boot sector, code offset 0x0
#

답변1

명령을 실행해 보십시오 fdisk -l <img file>. 일반적으로 .img파일이 KVM 가상 머신의 전체 디스크인 경우 기술적으로는 가상 디스크입니다.

다음 명령을 사용하여 표시되는 CentOS KVM 가상 머신이 있습니다 file.

$ file centostest.img 
centostest.img: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 20755980 sectors, code offset 0x48

다음을 사용하여 실행하세요 fdisk.

$ sudo /sbin/fdisk -lu /kvm/centostest.img
last_lba(): I don't know how to handle files with mode 81ed
You must set cylinders.
You can do this from the extra functions menu.

Disk /kvm/centostest.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes

              Device Boot      Start         End      Blocks   Id  System
/kvm/centostest.img1   *          63      208844      104391   83  Linux
/kvm/centostest.img2          208845    20964824    10377990   8e  Linux LVM
Partition 2 has different physical/logical endings:
     phys=(1023, 254, 63) logical=(1304, 254, 63)

이러한 파티션 중 하나를 마운트하려면 다음 단계를 따르세요.

fdisk(실린더 출력)
  • 블록 크기는 512바이트이고 시작 블록은 63입니다.
  • 오프셋은 512 * 63 = 32256입니다.
fdisk(섹터 출력)
  • 블록 크기는 512바이트이고 시작 블록은 1입니다.
  • 오프셋은 512 * 1 = 512입니다.

따라서 마운트 명령은 다음과 같습니다.

실린더에
$ mount -o loop,offset=32256 centostest.img /mnt/tmp

다른 파티션을 마운트하려면(512 * 208845 = 106928640):

$ mount -o loop,offset=106928640 centostest.img /mnt/tmp
부서에서
$ mount -o loop,offset=512 centostest.img /mnt/tmp

다른 파티션을 마운트하려면(512 * 14 = 7168):

$ mount -o loop,offset=7168 centostest.img /mnt/tmp

노트

이는 마운트하려는 "파티션" 내의 파일 시스템 유형을 mount가 결정할 수 있는 경우에만 작동합니다. 을 포함 -t auto하거나 구체적으로 설명 mount해야 할 수도 있습니다 -t ext4.

인용하다

답변2

parted오프셋 값을 식별하는 데 사용됩니다 .

root@mysystem:~/# parted myimage.img
GNU Parted 2.3
Using /root/myimage.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) u
Unit?  [compact]? B
(parted) print
Model:  (file)
Disk /root/myimage.img: 8589934592B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start        End          Size         Type     File system     Flags
 1      32256B       254983679B   254951424B   primary  ext3            boot
 2      254983680B   1274918399B  1019934720B  primary  linux-swap(v1)
 3      1274918400B  3323013119B  2048094720B  primary  ext3
 4      3323013120B  8587192319B  5264179200B  primary  ext3

(parted) 

이제 오프셋 값이 있으므로 이를 사용하여 파일 시스템을 마운트할 수 있습니다.

# mount -o loop,offset=32256 myimage.img /mnt/disk1 
# mount -o loop,offset=1274918400 myimage.img /mnt/disk2
# mount -o loop,offset=3323013120 myimage.img /mnt/disk3

답변3

img 파일을 마운트하는 또 다른 매우 간단한 방법은 다음을 사용하는 것입니다.kpartx도구( kpartx패키지에서). 설명은 다음과 같습니다.kpartx 매뉴얼 페이지(sudo/root를 사용하여 실행):

원본 디스크 이미지의 모든 파티션을 마운트하려면:

          kpartx -av disk.img

그러면 다음과 같은 줄이 출력됩니다.

          loop3p1 : 0 20964762 /dev/loop3 63

Loop3p1은 파티션에 액세스하는 데 사용할 수 있는 /dev/mapper 아래의 장치 파일 이름입니다(예: fsck it).

          fsck /dev/mapper/loop3p1

다음 위치에 장치를 설치하십시오 /mnt.

mount /dev/mapper/loop3p1 /mnt
   When you're done, you need to remove the devices:

          kpartx -d disk.img

답변4

이 명령의 최신 버전은 filefdisk 또는 pared보다 더 편리한 방식으로 시작 섹터를 보고합니다.

file $img Armbian_jw.img: DOS/MBR boot sector; partition 1 : ID=0x83, start-CHS (0x40,0,1), end-CHS (0x3ff,3,32), startsector 8192, 2883584 sectors

이 단일 출력 라인은 다음과 같이 스크립팅될 수 있습니다.

startsector=$(file $img | sed -n -e 's/.* startsector *\([0-9]*\),.*/\1/p')
offset=$(expr $startsector '*' 512)
echo $offset
 4194304
sudo mount -o loop,offset=$offset $img /mnt

관련 정보