এসডি ইমেজ এসডি কার্ডে খাপ খায় না


13

আমি একটি পাই সেট আপ করেছি এবং কিছুক্ষণের জন্য ভাল চলছে (আরপিআই - 1) আমি আরপিআই - 1 এর একটি চিত্র তৈরি করতে চেয়েছিলাম যাতে আমি আমার ২ য় পাই (আরপিআই - 2) -এর একটি অনুলিপি লোড করতে পারি। আরপিআই - 1 তে এসডি কার্ডটি 4 জিবি (কেবলমাত্র অর্ধেকটি ব্যবহৃত হয়) এবং আরপিআই - 2 এ এসডি কার্ডটিও 4 জিবি। আমি RP32 - 1 এর একটি অনুলিপি সাফল্যের সাথে তৈরি করতে Win32 ডিস্ক ইমেজারটি ব্যবহার করি। আমি তখন আরপিআই - 2 এর এসডি কার্ড ফর্ম্যাট করে এসডি ফর্ম্যাটর 4.0 (উইন্ডোজ 7 এ) দিয়ে। তবে, আমি যখন RP32 - 1 এর চিত্রটি RPI - 2 এর এসডি কার্ডে লিখতে Win32 ডিস্ক ইমেজারটি ব্যবহার করি তখন আমি পাই: "ডিস্কে পর্যাপ্ত জায়গা নেই: আকার 7744512 উপলভ্য: 7626752 সেক্টর সেক্টরের আকার: 512"

আমি জানি এটির কোনও খারাপ চিত্র নয় কারণ আমি আরপিআই - 1 এর জন্য এসডি কার্ড ফর্ম্যাট করতে পারি এবং ইমেজটি এতে লিখতে কোনও সমস্যা নেই।

আমি এখানে কি মিস করছি? সমস্ত 4 জিবি এসডি কার্ডগুলি কি একই আকার নয় বা এগুলি কিছুটা আলাদা হয়? আমি মিস করেছি এমন একটি ব্র্যান্ডের নতুন এসডি কার্ডে আপনার কিছু করার দরকার আছে?

(আরপিআই - 1 এসডি কার্ড = সানডিস্ক 4 জিবি // আরপিআই - 2 এসডি কার্ড = কিংস্টন 4 জিবি)


2
একই আকারের কোনও দুটি এসডি কার্ড নেই, যদি না তারা একই উত্পাদনকারী, একই ব্র্যান্ড এবং একই উত্পাদন ব্যাচ থেকে আসে। ব্যাকআপ উদ্দেশ্যে আপনি এসডি কার্ড চিত্র ব্যবহার করবেন না, তবে পরিবর্তে ফাইলগুলি অনুলিপি করুন।
লেনিক

আপনার কম্পিউটার খালি কার্ডে কতটা জায়গা বলে?
বিটা ক্ষয়

উত্তর:


6

প্রকৃতপক্ষে সমস্ত এসডি কার্ড একই আকার নয়। পার্টিশনটি ছোট এসডি-তে ফিট করার জন্য আপনাকে এটি সঙ্কুচিত করতে হবে। আমারও একই সমস্যা ছিল। আমি যা করেছি তার একটি আলাদা এসডি ছিল (আমার ক্ষেত্রে) রাস্পবিয়ান। এবং আমি আমার এসডি প্লাগ ইন করেছি আমি একটি ইউএসবি কার্ড রিডার ব্যবহার করে আকার পরিবর্তন করতে চাই।

আপনার পার্টিশনটি নিরাপদে সঙ্কুচিত করার আগে আপনাকে নিশ্চিত করতে হবে যে আপনি অপসারণ করছেন এমন কোনও উপাত্ত উপস্থিত নেই। আপনি এটি দিয়ে resize2fs -M -p /dev/sda2করতে পারেন (ইউএসবি-কার্ড রিডার এবং আপনি যে আকারটি পরিবর্তন করতে চান তার লিনাক্স বিভাজনের সঠিক পথ সহ আপনাকে / dev / sda2 বিকল্পযুক্ত করতে হবে)। এটি সম্ভাব্য ক্ষুদ্রতম আকারে ফাইল সিস্টেমকে আকার পরিবর্তন করবে। আপনি আসলে যা চান তা সঠিকভাবে নির্দিষ্ট করতে পারেন তবে এটিতে কিছু গণিত এবং মাপগুলি ব্লক সাইজ এবং সেক্টরগুলিতে রূপান্তর করা হয় এবং কী নয়। এটি না করা নিরাপদ এবং সহজ।

এর পরে আপনি পার্টটি সঙ্কুচিত করতে পারেন। আমি মনে করি আমি এটির fdiskজন্য ব্যবহার করেছি । পার্টটির সঠিক শুরু অবস্থানটি পান, একই শুরুর অবস্থানটি ব্যবহার করে এটি একটি পুনরায় তৈরি করুন, তবে ছোট আকারের সাথে মুছুন।

অবশেষে পুরো পার্টিশনটি ব্যবহার করে আপনার ফাইল সিস্টেমটি আবার বড় করতে হবে resize2fs -p /dev/sda2


আমি এই উত্তরটি কিছুটা স্পষ্ট করে বলতে চাই কারণ আমি এটি অনুসরণ করা একটি বাচ্চাকে কঠিন বলে মনে করি। আমি প্রথম এসডি কার্ডে পার্টিশনগুলি আনমাউন্ট করেছি। তারপরে e2fsck -f /dev/mmcblk0p2ধারাবাহিকতা পরীক্ষা করতে আমাকে চালাতে হয়েছিল (আমি এমএমসিবিএলকি 0 এর দ্বিতীয় বিভাজনটি সঙ্কুচিত করছি)। তারপরে আমাকে resize2fs -M -p /dev/mmcblk0p2প্রস্তাবিত হিসাবে চালানোর অনুমতি দেওয়া হয়েছিল ।
অডিওফ্যান্যাটিক


1

আপনি ফাইল সিস্টেমের একটি টারবাল তৈরি করা থেকে ভাল হবেন, কারণ আপনি যখন একটি সম্পূর্ণ ডিস্ক চিত্র তৈরি করেন, আপনি মুছে ফেলা ডেটাও অনুলিপি করেন। আপনি যখন কোনও ফাইল মুছবেন, তখন ইনোডটি লিঙ্কযুক্ত থাকলেও প্রকৃত তথ্য এখনও ডিস্কে রয়েছে। একটি পূর্ণ ডিস্ক চিত্র ব্যবহার করে ddসেই পুরানো ডেটা অনুলিপি করা হবে (আপনি যদি প্রথমে এটির উপরে ওভাররাইট করেন তবে /dev/zeroকিছুটা সময় নেয় তবে) তবে ব্যবহারের ব্যাকআপ tarকেবলমাত্র বর্তমান ডেটা অনুলিপি করে।

বা ... আপনি অনেকগুলি ডিস্ট্রিবিউশনের মতো করতে পারেন: নিজের চিত্রটি তৈরি করার আগে আপনার ফাইল সিস্টেমের আকারটি 1.9 গিগের মতো নিরাপদ কিছুতে কমিয়ে দিন এবং আপনি ব্যাকআপটি পুনরুদ্ধার করার পরে ডিস্কটি পূরণ করার জন্য পুনরায় আকার দিন।

ক্যাভ্যাট: আমি উইন্ডোজ ইমেজিং সরঞ্জামগুলির সাথে পরিচিত নই, আমি লিনাক্স ব্যবহারকারী।


1

আপনি যদি লিনাক্স ব্যবহার করেন তবে এখানে একটি ছোট স্ক্রিপ্ট:

#!/bin/bash
# Automatic Image file resizer
# Written by SirLagz
strImgFile=$1

export PATH=$PATH:/sbin

if [[ ! $(whoami) =~ "root" ]]; then
echo ""
echo "**********************************"
echo "*** This should be run as root ***"
echo "**********************************"
echo ""
exit
fi

if [[ -z $1 ]]; then
echo "Usage: ./autosizer.sh <Image File>"
exit
fi

if [[ ! -e $1 || ! $(file $1) =~ "x86" ]]; then
echo "Error : Not an image file, or file doesn't exist"
exit
fi

partinfo=`parted -ms $1 unit B p | awk '{if (NR!=2) {print}}'`  
fileSystemType=`echo "$partinfo" | grep -o 'ext4\|ext3'`
numberOfMatchPart=`echo "$fileSystemType" | wc -l`

if [[ $fileSystemType == "" || $numberOfMatchPart -eq 0 || $numberOfMatchPart -gt 1 ]] ; then
echo "Error : Your partition layout is not currently supported by this tool."
exit
fi

partnumber=`echo "$partinfo" | grep $fileSystemType | awk -F: ' { print $1 } '`
partstart=`echo "$partinfo" | grep $fileSystemType | awk -F: ' { print substr($2,0,length($2)) } '`
loopback=`losetup -f --show -o $partstart $1`

e2fsck -f $loopback

minsize=`resize2fs -P $loopback | awk -F': ' ' { print $2 } '`
minsize=`echo $minsize+200000 | bc`

resize2fs -p $loopback $minsize
sleep 1
losetup -d $loopback

partnewsize=`echo "$minsize * 4096" | bc`
newpartend=`echo "$partstart + $partnewsize" | bc`

parted $1 rm $partnumber
parted $1 unit B mkpart primary $partstart $newpartend
endresult=`parted -m $1 unit B print free | tail -1 | awk -F: ' { print substr($2,0,length($2)) } '`
truncate -s $endresult $1

ক্রেডিট: সিরলগজ (খুব দুঃখিত!)


4
এই স্ক্রিপ্টটি করার কথা বলে আপনি কি তা বোঝাতে এত দয়া করবেন? টেলিপ্যাথির মাধ্যমে আমি কীভাবে প্রয়োজনীয় চিত্রের আকারটি নির্দিষ্ট করতে পারি?
লেনিক

স্ক্রিপ্টটি একটি ইমগিকে ছোট করে, ব্যবহৃত আকারটি নিয়ে, 200000 যুক্ত করতে (লগ ইত্যাদির জন্য) যুক্ত করুন, এই
ইমগের

হাই, আমি এই স্ক্রিপ্টটি লিখেছি তাই নির্দ্বিধায় আমার ব্লগে আমার কোনও প্রশ্ন অঙ্কুরিত করুন: সিরলাগজ.নেট - এই স্ক্রিপ্টটি লিনাক্সে চালানো দরকার। স্ক্রিপ্টটি সম্ভাব্য ন্যূনতম আকারে চিত্রটি কমিয়ে আনবে, পাশাপাশি কিছুটা স্ল্যাক স্পেস। এটি আপনাকে একটি 1 জিবি কার্ডের জন্য একটি 8 জিবি চিত্র (যার মধ্যে কেবল 1 জিবি ব্যবহৃত হয়) রাখতে দেয়।
লরেন্স

পার্টসার্টটিতে echo "$partinfo" | grep $fileSystemType | awk -F: ' { print substr($2,0,length($2) - 1) } 'বি থেকে মুক্তি পেতে "পার্টসার্ট = " ব্যবহার করা উচিত ।
নেটওয়াটার

@ নেটওয়াটারে আমার এই কমান্ডটির কুবুন্টু / ডেবিয়ানের সাথে আলাদা ফলাফল রয়েছে: সিরলাগজ . नेट / ২০১৩ / ২০১৩ / স্ক্রিপ্ট- অটোমেটিক- আরপিআই-আইমেজ- ডাউনসাইজার / ......... ... আমি এই স্ক্রিপ্টটি সাফল্যের সাথে "-1" ছাড়াই ব্যবহার করি ! আমি বুঝতে পারছি না
গিলস গ্র্যান্ডগুইলুম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.