আমি কীভাবে একটি রাস্পবেরি পাই লিনাক্স ডিস্ট্রো চিত্রটি মাউন্ট করতে পারি?


37

সাধারণ ফাইল সিস্টেমের চিত্রগুলি সহজেই মাউন্ট করা যায়:

mount system.img /mnt

পরীক্ষিত, এবং সংশোধিত। তবে যখন আমি রাস্পবেরি পাই সিস্টেমের চিত্রটি (যেমন রাস্পবিয়ান) দিয়ে চেষ্টা করি, তখন আমি পাই:

mount: unknown filesystem type '(null)'

এবং আমি যা দিয়ে চেষ্টা -tকরব তা কার্যকর নয়। আমি এই চিত্রটি কীভাবে মাউন্ট করতে পারি?


2
এমএস উইন্ডোজের সমান্তরাল প্রশ্ন: raspberrypi.stackexchange.com/questions/28457/… ?
স্বর্ণলোকস

উত্তর:


71

এই প্রশ্নের উত্তর অন্য প্রশ্নের উত্তরের অংশ হিসাবে দেওয়া হয়েছে, তবে এটি এখানে প্রথাগত চিকিত্সা প্রাপ্য তাই এটির পুনরাবৃত্তি করা চলবে না।

আপনি পুরো চিত্রটি মাউন্ট করতে পারবেন না কারণ এটিতে দুটি পার্টিশন এবং একটি বুট সেক্টর রয়েছে। যাইহোক, আপনি যদি চিত্রের পৃথক পার্টিশনগুলি মাউন্ট করতে পারেন তবে আপনি যদি ফাইলের মধ্যে তাদের অফসেট জানেন। তাদের সন্ধানের জন্য চিত্রটি একটি ব্লক ডিভাইস হিসাবে পরীক্ষা করুন fdisk -l whatever.img। আউটপুটটিতে এর মতো একটি সারণী অন্তর্ভুক্ত করা উচিত:

Device         Boot     Start       End  Blocks  Id System
whatever.img1            8192    122879   57344   c W95 FAT32 (LBA)
whatever.img2          122880   5785599 2831360  83 Linux

এই দুটি পার্টিশন। প্রথমটির "FAT32", এবং অন্যটি "লিনাক্স" লেবেলযুক্ত। এই টেবিলের উপরে, সামগ্রিকভাবে ডিভাইস সম্পর্কে কিছু অন্যান্য তথ্য রয়েছে:

Units: sectors of 1 * 512 = 512 bytes

Startপার্টিশনের ব্লক দ্বারা এই ইউনিটের আকারকে গুণিত করে আমরা অফসেটটি বাইটসে খুঁজে পেতে পারি :

  • 1 ম পার্টিশন 512 * 8192 = 4194304
  • দ্বিতীয় বিভাজন 512 * 122880 = 62914560

এগুলি কমান্ডের offsetবিকল্পের সাথে ব্যবহার করা যেতে পারে mount। প্রতিটি পার্টিশনের ধরন সম্পর্কে আমাদের একটি ধারণাও রয়েছে fdisk। সুতরাং, ধরে নেই যে আমাদের ডিরেক্টরি আছে /mnt/img/oneএবং /mnt/img/twoমাউন্ট পয়েন্ট হিসাবে উপলব্ধ:

mount -v -o offset=4194304 -t vfat whatever.img /mnt/img/one
mount -v -o offset=62914560 -t ext4 whatever.img /mnt/img/two

যদি আপনি এখানে "ওভারল্যাপিং লুপ" ত্রুটি পান তবে আপনার সংস্করণটির mountজন্য আপনাকে প্রথম পার্টিশনের অফসেটের পাশাপাশি আকার নির্দিষ্ট করতে হবে। এটি আনমাউন্ট করুন এবং ব্লকের সংখ্যা ব্যবহার করুন (57344) * 512 (= 29360128):

mount -v -o offset=4194304,sizelimit=29360128 \
    -t vfat whatever.img /mnt/img/one  

ছবিতে এর পরে কিছুই নেই বলে দ্বিতীয় পার্টিশনের একটি সিজিলিমেটের দরকার নেই।

আপনি এখন দুটি পার্টিশন অ্যাক্সেস করতে পারেন। আপনি যদি এগুলিতে কোনও পরিবর্তন করার ইচ্ছা না রাখেন তবে -r(কেবল পঠনযোগ্য) স্যুইচটিও ব্যবহার করুন । আপনি যদি কিছু পরিবর্তন করেন তবে এই পরিবর্তনগুলি .imgফাইলে অন্তর্ভুক্ত করা হবে।

মনে রাখবেন যে /bootসিস্টেমটি চলার পরে প্রথম পার্টিশনটি সম্ভবত দ্বিতীয় পার্টিশনে মাউন্ট করা হবে ।


12
কে-পার্টেক্স এটি আপনার জন্য আরও সহজ করে kpartx -a whatever.imgতোলে : উপযুক্ত (লুপ) নোড তৈরি করে, যা আপনি পরে ইচ্ছায় মাউন্ট করতে পারেন। kpartx -d whatever.img(আনমাউন্ট করা) লুপ নোডগুলি মুছতে চালান ।


একসাথে রুট এবং বুট পার্টিশনটি কীভাবে মাউন্ট করবেন: unix.stackexchange.com/q/342463/9689 ?
গ্রজেগোর্জ ওয়েয়ারজোইইকি

1
পিএস যদি "ওভারল্যাপ" ত্রুটি এড়ানোর জন্য উভয় পার্টিশন একই সাথে মাউন্ট করতে চায় তবে কেবল sizelimitবিকল্পের সাথে পার্টিশনের আকার নির্দিষ্ট করুন । আরও তথ্যের জন্য: unix.stackexchange.com/a/342466/9689 । (বিটিডাব্লু। উপরের উত্তরটি সেই বিকল্পের উদাহরণ প্রদানের জন্য আপডেট করা যেতে পারে)
গ্রেজগোর্জ ওয়েয়ারজোইকিকি

2
বরং নিজে গুন চেয়ে, আপনি ব্যাশ এর পাটিগণিত সম্প্রসারণ ব্যবহার করতে পারেন: $((8192*512))
রুসলান

20

losetupপার্টিশন অনুসন্ধান মাধ্যমে সরবরাহ করে -P। এটির সাহায্যে পূর্ণ ডিস্ক চিত্রের মাউন্টিং পার্টিশন যেমন রাস্পবিয়ান এসডি কার্ড চিত্রটি খুব সহজ হয়ে যায়:

losetup -P /dev/loop0 raspbian.img
mount /dev/loop0p2 /mnt
mount /dev/loop0p1 /mnt/boot

এটি মানুষের ত্রুটির পক্ষে কম প্রবণ বলে মনে হচ্ছে। আমি কি মাউন্ট কমান্ডগুলিতে লেবেল ব্যবহার করতে পারি?
ctrl-alt-delor

1

প্রথমে আমি fdisk পার্স করতে এবং অফসেটগুলি বের করার জন্য awk / grep ব্যবহার করছিলাম তবে খুঁজে পেলাম এটি কিছুটা জটিল, ফ্লেকি এবং পরে বোঝা শক্ত। সবচেয়ে সহজ পদ্ধতিটি আমি খুঁজে পেয়েছি:

IMAGE_FILE="YOUR IMAGE FILE GOES HERE"
TMP=$(mktemp -d)
LOOP=$(sudo losetup --show -fP "${IMAGE_FILE}")
sudo mount ${LOOP}p2 $TMP
sudo mount ${LOOP}p1 $TMP/boot/

# do stuff to ${TMP}/ which is rpi filesystem

# cleanup
umount ${TMP}/boot/
umount ${TMP}
rmdir ${TMP}

এটি আপনার জন্য একটি টেম্প-ডির তৈরি করে, পরবর্তী লুপ-ডিভাইসটিকে স্বয়ংক্রিয়ভাবে বরাদ্দ করে এবং এটি আপনার জন্য p1এবং p2পার্টিশন ডিভাইস হিসাবে সেট করে এবং বুট এবং রুটকে মাউন্ট করে।

আপনি ক্লিনআপ অংশটি একটি প্রস্থান-ট্র্যাপেও রাখতে পারেন, তাই যদি কিছু ব্যর্থ হয় তবে আপনার ঝোলা মাউন্ট / ফাইলগুলি থাকবে না:

set -e
function cleanup {
  sudo umount -f $TMP/boot/
  sudo umount -f $TMP
  rmdir $TMP
}
trap cleanup EXIT

0

যদি fdisk -l আর্চ লিনাক্সের পরিবর্তে সেক্টরগুলির সাথে প্রদর্শিত হয় ... "ওভারল্যাপিং লুপ ত্রুটি" এর ক্ষেত্রে ব্লকের সংখ্যা সন্ধান করার আরেকটি উপায় দ্বিতীয় বিভাগ থেকে প্রথম পার্টিশনের বাইটে অফসেট বিয়োগ করা হয় এবং দুটি দ্বারা বিভক্ত। উদাহরণস্বরূপ (62914560-4194304) / 2 = 29360128

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