আমি কীভাবে একটি হার্ড ড্রাইভের / বিন / ডিডি দ্বারা নির্মিত একটি `img` মাউন্ট করব?


19

আমি ৮০ জিবি ড্রাইভ ddব্যাকআপ করতাম

dd if=/dev/sdb of=~/sdb.img

এখন আমার সেই ড্রাইভে কিছু ফাইল অ্যাক্সেস করা দরকার তবে আমি ".img" ড্রাইভের উপরে ফিরে অনুলিপি করতে চাই না।

mount ~/sdb.img /mnt/sdbকাজ করে না। এটি ফিরে আসে:

mount: you must specify the filesystem type

আমি ফাইল সিস্টেমের ধরণের সাথে সন্ধান করার চেষ্টা করেছি file -s

fox@shoebox $ file -s sdb.img
sdb.img: x86 boot sector; partition 1: ID=0x12, starthead 1, startsector 63, 10233342 sectors; partition 2: ID=0xc, active, starthead 0, startsector 10233405, 72517410 sectors; partition 3: ID=0xc, starthead 0, startsector 82750815, 73545570 sectors, code offset 0xc0

এটি কি মাউন্ট করা সম্ভব sdb.img, বা ddড্রাইভটি পুনরুদ্ধার করার জন্য আমার ব্যবহার করা উচিত ?

উত্তর:


27

যখন আপনি ব্যবহার ddউপর /dev/sdbপরিবর্তে /dev/sdb1বা /dev/sdb2, আপনি অনুলিপি সব পার্টিশন মধ্যে বলেন ড্রাইভ থেকে এক ফাইল।

আপনাকে অবশ্যই প্রতিটি পার্টিশন পৃথকভাবে মাউন্ট করতে হবে।


একটি ফাইল থেকে একটি পার্টিশন মাউন্ট করার জন্য , আপনাকে প্রথমে অনুসন্ধান করতে হবে যে ফাইলটি সেই পার্টিশনটি কোথায় রয়েছে।

আপনার আউটপুটটি ব্যবহার করে file -s sdb.imgআমরা startsectorsপ্রতিটি বিভাজনের জন্য এটি খুঁজে পাই :

sdb.img: x86 বুট সেক্টর; বিভাগ 1 : আইডি = 0x12, স্টার্টহেড 1, স্টার্টসেক্টর 63 , 10233342 সেক্টর; বিভাজন 2 : আইডি = 0xc, সক্রিয়, স্টার্টহেড 0, স্টার্টসেক্টর 10233405 , 72517410 সেক্টর; বিভাগ 3 : আইডি = 0xc, স্টার্টহেড 0, স্টার্টসেক্টর 82750815 , 73545570 সেক্টর, কোড অফসেট 0xc0

পার্টিশন      স্টার্টসেক্টর
1 63
2 10233405
3 82750815

একটি পার্টিশন, যেখানে মাউন্ট করতে X হয় startsector যে পার্টিশন, রানের:

mount ~/sdb.img /mnt/sdb -o offset=$((X*512))

সুতরাং দ্বিতীয় পার্টিশনটি মাউন্ট করতে আপনাকে রান করতে হবে:

mount ~/sdb.img /mnt/sdb2 -o offset=$((10233405*512))

সিডনোট: এটি /mnt/sdb2চালানোর আগে নিশ্চিত হয়ে নিন যে এটি বিদ্যমান।

আনন্দ কর!


আপডেট: উত্তরে, আমি ধরে নিয়েছি যে আপনার চিত্রের খাতটির আকারটি ছিল 512, দয়া করে কীভাবে এটি গণনা করবেন সে সম্পর্কে এই প্রশ্নটি দেখুন ।


আপনি file -l sdb.imgআপনার প্রশ্নের উত্তরে পোস্টকৃত টেবিলার ফর্ম্যাটে স্টার্টসেক্টরগুলিও পেতে পারেন : unix.stackexchange.com/questions/2668/…
শিক্ষার্থী

@ স্টুডেন্ট: ভবিষ্যতের পাঠকদের জন্য কেবল একটি সংশোধন: এটি হবে fdisk -lনা file -l
রুনিয়াম

আরও স্পষ্টতা - আপনি এই কমান্ডটিতে -u বিকল্পটি যোগ করে 512 বাইট সেক্টরের সংখ্যা পেতে পারেন - সুতরাংfdisk -u -l sdb.img
অ্যারন ম্যাসন

সংস্করণটি যদি fileডিফল্টরূপে কম বাচাল হয়, যোগ করার চেষ্টা -kআউটপুট ধরনের উত্তর দেখানো পেতে সুইচ - এই মত: file -k FILENAME.img
খ্রিস্টান পাইটশ

7

লিনাক্সে স্বীকৃত উত্তরের মধ্যে মাউন্ট কমান্ডগুলি সুস্পষ্টভাবে একটি লুপ ডিভাইস তৈরি করবে। পুরো ডিস্ক চিত্রটি ধরে নিলে একটি সঠিক পার্টিশন টেবিল রয়েছে (যা আপনার কার্নেল বুঝতে সক্ষম) আপনি losetup(8)অফসেট গণনার ঝামেলা বাঁচাতে সরাসরি ব্যবহার করতে পছন্দ করতে পারেন । এছাড়াও kpartxঅন্য কোনও উত্তরের মতো পরামর্শের মতো অতিরিক্ত সরঞ্জামের প্রয়োজন নেই । এটি মূলত নিম্নলিখিতগুলির মতো একই কাজ করবে:

losetup -Prf sdb.imgচিত্রের সাথে প্রথম ফ্রি লুপ ডিভাইস ( -f) কেবলমাত্র পঠনযোগ্য ( -r) হিসাবে যুক্ত করবে sdb.img-Pবিকল্প শক্তির কার্নেল এই লুপ ডিভাইস বিভাগের টেবিল স্ক্যান করতে এবং প্রতিটি পার্টিশনের জন্য লুপ ডিভাইস তৈরি করবে।

সুতরাং আপনি কিছু পেতে পারেন:

$ lsblk
NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0       7:0    0 167.7G  1 loop
├─loop0p1 259:0    0   500M  1 loop
└─loop0p2 259:1    0 167.2G  1 loop
...

আপনি এখন প্রতিটি পার্টিশন মাউন্ট করতে পারেন, অবশ্যই পঠনযোগ্য, পছন্দসই মাউন্টপয়েন্টে।

$ mount -r /dev/loop0p1 /tmp/backup_sdb1

কেবলমাত্র পাঠ্যভাবে রাখা alচ্ছিক, তবে ব্যাকআপ ইমেজের জন্য ভাল জিনিস হতে পারে।

আপডেট: 2012-এ ইউজার-লিনাক্স -২.২১ সহ -Pবিকল্পটি যুক্ত করা হয়েছিল So সুতরাং গৃহীত উত্তরটি লেখার সময় এটি উপলব্ধ ছিল না। এটিও নোট করুন এবং অন্যান্য উত্তরগুলি লিনাক্সের জন্য নির্দিষ্ট। ওপেনবিএসডি এবং নেটবিএসডি-র দ্বারা পরিচালিত ভনোড ডিস্ক vnconfig(8)রয়েছে এবং ফ্রিবিএসডি-র দ্বারা পরিচালিত মেমরি ডিস্ক রয়েছে mdconfig(8)


2

বিকল্পভাবে, আপনি ডাকা একটি দুর্দান্ত সরঞ্জাম ব্যবহার করতে পারেন kpartx। ম্যান পৃষ্ঠা থেকে:

kpartx - পার্টিশন সারণী থেকে ডিভাইসের মানচিত্র তৈরি করুন

এর অর্থ আপনি সরাসরি img ফাইল থেকে ডিভাইস পার্টিশন সহ একটি "সিউডো ডিভাইস" তৈরি করতে পারেন:

$ kpartx -av sdb.img
add map loop0p1 (254:2): 0 2048 linear /dev/loop0 0
add map loop0p2 (254:3): 0 31162 linear /dev/loop0 2048
$ lsblk
.
.
.
loop0                     7:0    0  16.2M  0 loop
├─loop0p1               254:2    0     1M  0 part
└─loop0p2               254:3    0  15.2M  0 part

তারপরে আপনি /dev/mapper/loop0p2উদাহরণস্বরূপ মাউন্ট করতে পারেন , আপনি যদি চিত্রটিতে দ্বিতীয় পার্টিশন চান।

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