উত্তর:
কমান্ড চালানোর চেষ্টা করুন 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 (সিলিন্ডার আউটপুট)সুতরাং মাউন্ট কমান্ডটি হবে:
সিলিন্ডারে$ 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
# 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.
-t auto
পার্টিশনের ধরণ সনাক্ত করতে পারে এমন কোনও গ্যারান্টি নেই । আপনাকে কী কাজ করে তা দেখার জন্য আপনাকে অন্যদের চেষ্টা করতে হবে।
W95 FAT16 (LBA)
-t vfat
বিভাগটি আমার প্রথম বিভাগটি মাউন্ট করতে ব্যর্থ হয়েছে mount
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
দেখে মনে হচ্ছে @ এসএলএম এর কিছু উইঙ্কি ম্যাথ রয়েছে, বা কমপক্ষে 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 এ শুরু করুন।
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
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 এ পরীক্ষিত।
# mount -t auto -o ro,loop,offset=512 gmapsupp.img /mnt/iso/
\mount: you must specify the filesystem type