কিভাবে ডিডি দিয়ে তৈরি এসডি-কার্ড চিত্রটি মাউন্ট করবেন?


21

আমি আমার রাস্পবেরি পাই এসডি কার্ড ব্যবহার করে একটি চিত্র তৈরি করেছি dd:

sudo dd if=/dev/sdf of=/home/myusername/raspberry-backup-2014-04-10.img

এসডি-কার্ডে দুটি পার্টিশন (একটি ভিফ্যাট, একটি এক্সট 4) রয়েছে যা আমি কার্ডটি প্লাগ ইন করার পরে স্বয়ংক্রিয়ভাবে মাউন্ট হয়ে যায় are

আমার প্রশ্ন: আমি .img ফাইল থেকে এই পার্টিশনগুলি কীভাবে মাউন্ট করতে পারি?


আরো বিস্তারিত:

$ fdisk -l raspberry-backup-2014-04-10.img 

Disk raspberry-backup-2014-04-10.img: 3974 MB, 3974103040 bytes
255 heads, 63 sectors/track, 483 cylinders, total 7761920 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
Disk identifier: 0x000981cb

                          Device Boot      Start         End      Blocks   Id  System
raspberry-backup-2014-04-10.img1            8192      122879       57344    c  W95 FAT32 (LBA)
raspberry-backup-2014-04-10.img2          122880     7761919     3819520   83  Linux

আপনি ছবিটি ডি এসডি কার্ডে না লিখে মাউন্ট করতে চান?
অরেঞ্জটাক্স

হ্যাঁ, আমি .img ফাইলের মধ্যে থাকা ফাইল সিস্টেমে সম্পূর্ণ অ্যাক্সেস পেতে চাই যাতে আমি অনুলিপি / সংশোধন / মোছা / ইত্যাদি করতে পারি। এসডি কার্ড ছাড়াই ফাইলগুলি
মিডিডি

হয়তো এই প্রশ্ন আপনাকে সাহায্য করে।
অরেঞ্জটাক্স

দুর্ভাগ্যক্রমে এটি কার্যকর হয় না, উভয় প্রচেষ্টা চেষ্টা করে tried প্রথমটি / dev / loop0p1 ডিভাইস তৈরি করে নি। দ্বিতীয়টি (আমি সেই অনুযায়ী প্রারম্ভিক পয়েন্টটি গণনা করেছি) একটি wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other errorসমস্যা ছুড়ে
ফেলেছে

এছাড়াও, sudo fdisk -l /dev/loop0দাবিগুলি: ডিস্ক / ডেভ / লুপ 0 এ একটি বৈধ পার্টিশন টেবিল নেই।
মিঃডি

উত্তর:


33

প্রতিটি পার্টিশনের জন্য আলাদা ইমেজ তৈরির প্রয়োজন বা কোনও ইউটিলিটি ইনস্টল করার প্রয়োজনীয়তা এড়াতে kpartxআপনি কমান্ডের offsetমধ্যে একটি নির্দিষ্ট করে প্রতিটি পার্টিশন পৃথকভাবে মাউন্ট করতে পারেন mount

প্রথমে চিত্র ফাইলের পার্টিশনগুলি পরীক্ষা করুন এবং ব্যবহার করে অফসেটটি নির্ধারণ করুন fdisk:

$ fdisk -u -l rpi_image280914 

Disk rpi_image280914: 16.0 GB, 16012804096 bytes
255 heads, 63 sectors/track, 1946 cylinders, total 31275008 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
Disk identifier: 0x000cdac7

           Device Boot      Start         End      Blocks   Id  System
rpi_image280914p1   *        2048      514047      256000    c  W95 FAT32 (LBA)
rpi_image280914p2          540672    31242239    15350784   83  Linux

Startআপনি যে পার্টিশনটি চান সেটির সেক্টরটি ধরুন এবং সেই মানটি Unitsআকার দিয়ে গুণ করুন। সুতরাং আপনি যদি দ্বিতীয় পার্টিশন চান আপনি পাবেন 540672 * 512 = 276824064

এখন একটি ফোল্ডার তৈরি করুন এবং পার্টিশনটি মাউন্ট করুন:

mkdir rpi_partition2
sudo mount -o loop,offset=276824064 rpi_image280914 rpi_partition2/

পার্টিশন ডেটা দিয়ে আপনি যা চান তা শেষ হয়ে গেলে:

sudo umount rpi_partition2/
rm -r rpi_partition2/

17

কিছু সংযোজনীয় পরীক্ষার পরে আমি সমাধানটি নিজেই পেয়েছি: kpartx

sudo kpartx -a raspberry-backup-2014-04-10.img

এই আদেশটি তৈরি /dev/mapper/loop0p1এবং /dev/mapper/loop0p2। এরপরে এই পার্টিশনগুলি সরাসরি এগিয়ে মাউন্ট করা যায়:

sudo mount -o rw -t ext4 /dev/mapper/loop0p2 mount_target/

1

যদি আপনার লক্ষ্যটি কোনও পার্টিশনের (ফাইল সিস্টেম) সামগ্রীর অন্বেষণ বা সংশোধন করা হয় তবে এই কমান্ড লাইনটি এসডি কার্ডের ফাইল সিস্টেম my_sdcard_dump.img ডিরেক্টরি মাউন্ট_ডিরের মধ্যে মাউন্ট করবে ।

part_id=2; INFILE=my_sdcard_dump.img; MOUNTPT=mount_dir PARTITION=${part_id}; sudo mount "$INFILE" "$MOUNTPT" -o loop,offset=$[ `/sbin/sfdisk -d "$INFILE" | grep "start=" | head -n $PARTITION | tail -n1 | sed 's/.*start=[ ]*//' | sed 's/,.*//'` * 512 ]

0

একাধিক পার্টিশন সহ পুরো ডিস্কের একটি চিত্র নিয়ে কাজ করা বেশ জটিল । লুপব্যাক ডিভাইসের সাথে সংযুক্ত থাকা সত্ত্বেও লিনাক্স একটি নিয়মিত ফাইলের বাইরে কোনও পার্টিশন টেবিল পড়ার জন্য ডিজাইন করা হয়নি, সুতরাং আপনাকে অবশ্যই পার্টিশনের অফসেটগুলি সাবধানে সনাক্ত করতে হবে এবং সেগুলি mountকমান্ডের কাছে পাঠাতে হবে ।

প্রতিটি পার্টিশনের পৃথক চিত্র তৈরি করা ভাল উপায়:

sudo dd if=/dev/sdf1 of=/home/myusername/raspberry-backup-sdf1-2014-04-10.img
sudo dd if=/dev/sdf2 of=/home/myusername/raspberry-backup-sdf2-2014-04-10.img

এখন আপনি খুব সহজেই এই ফাইলগুলি চিকিৎসা করতে পারে যেন তারা কোন এক ডিস্কে পৃথক পার্টিশন ছিল, তাদের মাউন্ট আপনি সাধারণতঃ হবে একটি বাস্তব ডিস্ক পার্টিশন, তাদের কাছে ম্যাপিং দ্বারা লুপ ডিভাইস । একটি লুপ ডিভাইস, বা লুপব্যাক ডিভাইস, ভার্চুয়াল ডিভাইস যা লিনাক্সের জন্য একটি ফাইলকে একটি ব্লক ডিভাইস (একটি ডিস্ক বা পার্টিশনের মতো) হিসাবে বিবেচনা করার জন্য একটি অনুবাদ স্তর সরবরাহ করে।

লুপ ডিভাইসগুলির /dev/loop0মাধ্যমে সাধারণত হয় /dev/loop8losetupকমান্ডটি দিয়ে একটি অব্যবহৃত লুপ ডিভাইস সনাক্ত করুন :

$ sudo losetup /dev/loop0
loop: can't get info on device /dev/loop0: No such device or address

এই প্রতিক্রিয়াটি একটি অ-স্বাক্ষরিত লুপ ডিভাইসকে নির্দেশ করে। এখন আমরা আমাদের ইমেজ ফাইলগুলির একটিতে লুপ ডিভাইসটি নির্ধারণ করতে পারি:

$ sudo losetup /dev/loop0 /home/myusername/raspberry-backup-sdf1-2014-04-10.img

এই কমান্ড থেকে আউটপুট অনুপস্থিতি সাফল্য নির্দেশ করে। এখন /dev/loop0বেশিরভাগ উদ্দেশ্যে /dev/sdf1আপনার এসডি কার্ডের সমতুল্য সমতুল্য এবং আপনি সাধারণভাবে যেমন এটি মাউন্ট করতে পারেন:

sudo mount -t vfat /dev/loop0 /media/sdimage-1

অন্যান্য পার্টিশনটি মাউন্ট করতে অন্য লুপ ডিভাইস ব্যবহার করে প্রক্রিয়াটি পুনরাবৃত্তি করুন। আপনার কাজ শেষ হয়ে গেলে, ফাইল সিস্টেমগুলি আনমাউন্ট করুন এবং লুপ ডিভাইসগুলি আনসাইন করুন:

sudo umount /dev/loop0
sudo losetup -d /dev/loop0

আমি দুটি চিত্র ফাইল তৈরি করা এড়াতে চাই, কারণ - অন্যান্য সামান্য কারণগুলির মধ্যে - আমি এই চিত্রটি অন্য লোকগুলিতে বিতরণ করতে চাই যাতে তারা তাদের এসডি-কার্ডগুলি আরম্ভ করার জন্য এটি ব্যবহার করতে পারে। সুতরাং / বুট ইত্যাদির বিভিন্ন পার্টিশন একটি ফাইলে থাকতে হবে।
মিঃডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.