একটি ইমগ ফাইলের ধরণটি কীভাবে সন্ধান করবেন এবং এটি মাউন্ট করবেন?


36

আমাকে একটি .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
#

উত্তর:


34

কমান্ড চালানোর চেষ্টা করুন fdisk -l <img file>। সাধারণত যদি .imgফাইলগুলি কেভিএম ভিএম থেকে সম্পূর্ণ ডিস্ক হয় তবে তারা প্রযুক্তিগতভাবে ভার্চুয়াল ডিস্ক।

উদাহরণ

আমি একটি সেন্টস কেভিএম ভিএম পেয়েছি যা 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

বিঃদ্রঃ

এটি কেবলমাত্র তখনই কাজ করবে যদি মাউন্ট "পার্টিশন" এর মধ্যে ফাইল সিস্টেমের ধরণ নির্ধারণ করতে পারে যা আপনি মাউন্ট করার চেষ্টা করছেন। আপনাকে অন্তর্ভুক্ত করতে হবে -t auto, বা নির্দিষ্ট হতে হবে এবং mountএটি -t ext4উদাহরণস্বরূপ বলতে হবে tell

তথ্যসূত্র


# mount -t auto -o ro,loop,offset=512 gmapsupp.img /mnt/iso/\mount: you must specify the filesystem type
লুইজি

# fdisk -l gmapsupp.img Disk gmapsupp.img: 0 MB, 0 bytes 255 heads, 63 sectors/track, 0 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System gmapsupp.img1 1 9 65536 0 Empty Partition 1 has different physical/logical endings: phys=(1023, 15, 8) logical=(8, 40, 32) Partition 1 does not end on cylinder boundary.
লুইজি

@ লুইগি - আপনি কি আপনার প্রশ্নের আপডেট হিসাবে এই মন্তব্যগুলি পোস্ট করতে পারেন? কি হচ্ছে তা আমি দেখতে পাচ্ছি না।
slm

@ লুইজি - -t autoপার্টিশনের ধরণ সনাক্ত করতে পারে এমন কোনও গ্যারান্টি নেই । আপনাকে কী কাজ করে তা দেখার জন্য আপনাকে অন্যদের চেষ্টা করতে হবে।
slm

২ য় পার্টিশনের জন্য অফসেট কীভাবে নির্ধারণ করবেন? 512x14 কেন? এবং আমার প্রথম W95 FAT16 (LBA) -t vfatবিভাগটি আমার প্রথম বিভাগটি মাউন্ট করতে ব্যর্থ হয়েছে mount
নেকেতভি

21

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

1
এক বা দুই-লাইনের উত্তরগুলি প্রায়শই সেই সহায়ক হিসাবে বিবেচিত হয় না। আপনার সুপারিশের ব্যাখ্যাটি প্রসারিত করা বা প্রাসঙ্গিক ডকুমেন্টেশন বা সহায়ক সংস্থানগুলির সাথে লিঙ্ক করার কথা বিবেচনা করুন।
HalosGhost

কিছুটা ব্যাখ্যার সাথে অবশ্যই আরও ভাল, আমার পক্ষে এখানে সবচেয়ে দক্ষ উত্তর, ধন্যবাদ ফাইয়েজ / হ্যালোসগোস্ট!
tisc0

বিভাজক: অজানা ডিস্ক লেবেল
ব্যবহারকারীর 180874

1

দেখে মনে হচ্ছে @ এসএলএম এর কিছু উইঙ্কি ম্যাথ রয়েছে, বা কমপক্ষে fdisk -lআউটপুট মেলে না । সংশোধনগুলি থেকে দেখে মনে হচ্ছে uসিলিন্ডার থেকে সেক্টরে পরিবর্তিত এফডিস্কে প্যারামিটার যুক্ত করা হচ্ছে ? ডুনো, তবে এটি আমার উপর কিছুই করে না যেহেতু ডিফল্টটি সেক্টর হওয়া উচিত।

আমার ছবিতে:

$ fdisk -l bone-debian-7.5-2015-01-14-beaglebone.img
Disk bone-debian-7.5-2015-01-14-beaglebone.img: 3.7 GiB, 3965190144 bytes, 7744512 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device                                     Boot     Start       End  Blocks  Id System
bone-debian-7.5-2015-01-14-beaglebone.img1 *         2048    198655   98304   e W95 FAT16 (LBA)
bone-debian-7.5-2015-01-14-beaglebone.img2         198656   3481599 1641472  83 Linux

$ sudo mount -t vfat -o loop,offset=1048576,ro bone-debian-7.5-2015-01-14-beaglebone.img /mnt

কোথায়

offset = Block size from 'Units' x Fdisk 'Start' column

আমার উদাহরণে fdisk বলছে 2048 * 512 ব্লকের আকার = 1048576 এ শুরু করুন।


1

fileকমান্ডের একটি আধুনিক সংস্করণ স্টার্টসেক্টরকে fdisk বা parted এর চেয়ে অনেক বেশি সুবিধাজনক উপায়ে রিপোর্ট করেছে:

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

1

losetup -P স্বয়ংক্রিয়তা

নিম্নলিখিত স্ক্রিপ্টগুলি একটি চিত্রের সমস্ত পার্টিশন স্বয়ংক্রিয়ভাবে মাউন্ট করে।

ব্যবহার:

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

উবুন্টু 16.04 এ পরীক্ষিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.