এসডি কার্ডে থাকা (তবে মূলটির মতো কমপ্যাক্ট) থেকে কীভাবে একটি চিত্র (.আইএমজি) তৈরি করবেন?


20

আমি চেষ্টা করেছিলাম:

sudo dd bs=4k if=/dev/mmcblk0 of=/media/1BAB47551C66A42B/raspbian_migs2.gz

এটি .6..6 গিগাবাইট (কার্ডের আকার, কার্ডে যা আছে তা MB০০ এমবি রয়েছে) দিয়ে একটি আইএমজি ফাইল তৈরি করে।

এবং:

sudo dd bs=4k if=/dev/mmcblk0 | gzip > /media/1BAB47551C66A42B/raspbian_migs2.gz

২.7 গিগাবাইট সহ একটি .gz ফাইল তৈরি করে।

Http://www.raspberrypi.org/downloads থেকে আসল রাস্পবিয়ান ( ডেবিয়ান 7 (হুইজি)) 494.44 এমআইবি রয়েছে।

এসডি কার্ডের মধ্যে থেকে কীভাবে আমি আকারে একটি চিত্র তৈরি করতে পারি?

(আমি উবুন্টুতে আছি।)


উত্তর:


18

আপনি রুটারের একটি মন্তব্যে উল্লেখ করেছেন যে ক) আপনি প্রাথমিক পার্টিশনের আকারটি কমিয়ে দিয়েছিলেন gparted, তবে ddএখনও পুরো কার্ডটি এবং অনুলিপিটি অনুলিপি করেছেন) যা আপনি ছবিতে উভয় পার্টিশন অন্তর্ভুক্ত করতে চান।

"এ" ইস্যুটি ব্যাখ্যা করা সহজ: আপনি এখনও পুরো কার্ডটি অনুলিপি করছেন কারণ এটিই /dev/mmcblk0বোঝায়। পৃথক পার্টিশন অবশ্যই /dev/mmcblk0p1এবং /dev/mmcblk0p2। এটি "বি" ইস্যুতে জটিলতা, তবে আপনি ddপ্রতিটি পার্টিশনটি কেবল দুটি পার্টিশনকে একত্রে তৈরি করতে পারবেন না , কারণ পার্টিশন সারণির শুরুতে /dev/mmcblk0 প্রতিটি বিভাগের সূচনা এবং দৈর্ঘ্য সূচকে সূচিত হয়। তা ছাড়া, ছবিটি ব্যবহারযোগ্য হবে না।

যাইহোক, আপনি থেকে প্রতিটি পার্টিশন দৈর্ঘ্য পেতে পারেন fdisk -l, এবং ব্যবহার যে জন্য কিছু প্যারামিটার নির্ধারণ করতে dd। উদাহরণ স্বরূপ:

> fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 16.1 GB, 16138633216 bytes
4 heads, 16 sectors/track, 492512 cylinders, total 31520768 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: 0x00017b69

Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1    8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2  122880    26746879    13312000   83  Linux

"স্টার্ট" এবং "শেষ" ইউনিটগুলি সেক্টর, এবং লক্ষ্য করুন যে খাতটির আকার দেওয়া হয়েছে, 512 বাইট। জন্য /dev/mmcblk0p2, 26746879 (শেষ খাতে) - 122880 (প্রথম সেক্টর) = 26623999/2 (kB র প্রতি 2 খাতে) / 1024 (মেগাবাইট প্রতি kB র) / 1024 (গিগাবাইট প্রতি মেগাবাইট) = 12,69, যা আমি gparted ব্যবহার পার্টিশন বড় হয়েছি 12 জিবিতে, সুতরাং এটি সঠিক দেখাচ্ছে (সত্যই আমার স্টোর সহ বিভাজক হিসাবে 1000 নয় এবং 1024 ব্যবহার করা উচিত, যা 13.31 গিগাবাইটে কার্যকর হয় তবে আমার সন্দেহ হয় জিপিআর্ট এবং অন্যান্য কিছু সরঞ্জাম 1024 ব্যবহার করে)।

সুতরাং আপনি যে জিনিসটি যাচাই করতে চান তা হ'ল আপনার দ্বিতীয় বিভাজনটি যে সেটাকে সেট করেছেন তা আসলেই ছোট আকার। এরপরে, কেবল এই সংখ্যার সাথে ব্যবহার করুন dd; আমার জন্য এটি হবে:

dd if=/dev/mmcblk0 of=rpi.img bs=512 count=26746880

কীভাবে ddকাজ করে তার একটি ভুল বোঝাবুঝির মাধ্যমে কোনও ধরণের বন্ধ এড়াতে আমি সেখানে একটি অতিরিক্ত খাত পেয়েছি । এটি কাজ করে কিনা তা যাচাই করার একটি সহজ উপায় রয়েছে:

> fdisk -l rpi.img

Disk rpi.img: 102 MB, 102400000 bytes
255 heads, 63 sectors/track, 12 cylinders, total 200000 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: 0x00017b69

Device Boot      Start         End      Blocks   Id  System
rpi.img1          8192      122879       57344    c  W95 FAT32 (LBA)
rpi.img2        122880    26746879    13312000   83  Linux

লক্ষ্য করুন যে এখানে কিছুটা তফাত আছে: "স্টার্ট" এবং "শেষ" সেক্টরগুলি মূল পার্টিশনের টেবিলের সাথে মেলে তবে শীর্ষের স্ট্যাটাসের মোট আকারটি কেবলমাত্র 102 এমবি! এটি হ'ল আমি সত্যই পরম count=200000হিসাবে ব্যবহার ddকরেছি কারণ আমি 12 জিবি অনুলিপিটি ("20000 সেক্টরগুলিও লক্ষ্য করুন") নিয়ে সত্যিই বিরক্ত করতে চাইনি। নীচে টেবিলটি এর প্রতিফলন না করার কারণটি হল fdisk পার্টিশনের ডেটা থেকে অনুলিপিটির এসডি কার্ডের শুরু থেকে চিত্রের শুরুতে অনুলিপি ভারব্যাটিয়াম থেকে তার তথ্য পাচ্ছে, যা আমি দ্বিতীয় অনুচ্ছেদে উল্লেখ করেছি যেমন গুরুত্বপূর্ণ রক্ষণাবেক্ষণে. আমি যদি (যথাযথভাবে) বাকীটি অনুলিপি করে রাখতাম তবে সংখ্যাগুলি কোপাসেটিক হবে এবং চিত্রটি ব্যবহারযোগ্য হবে।

চেষ্টা করে দেখুন :)


ওএসএক্স-এ, fdisk সেক্টর আকারটি পরিষ্কারভাবে বাইটে মুদ্রণ করে না। এটি পরিবর্তে "জ্যামিতি: 966/255/63 [15523840 সেক্টর]" সিলিন্ডার / প্রধান / সেক্টর উপস্থাপন করে। এক্ষেত্রে বিএস এবং গণনার কোন মান ব্যবহার করা উচিত?
আর্থার হেবার্ট

@ আর্থার হবার্ট: মোট বাইটস / মোট সেক্টর। উপরে প্রথম ক্ষেত্রে যেমন 16138633216/31520768 = 512, দ্বিতীয় 102400000/200000 = 512. হবে
স্বর্ণকেশ

1
আপনি ব্যবহার করতে পারেন fdisk -l <device>এবং এটি ইন্টারেক্টিভ মোডে না গিয়ে টেবিলটি মুদ্রণ করা উচিত।
বার্তো

5

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

সহজ সমাধান, তবে কার্ডের সমস্ত খালি স্থান আবার লিখতে হবে। মনে রাখবেন যে এসডি কার্ড লাইফস্পন পুনর্লিখনের সংখ্যার দ্বারা সীমাবদ্ধ, সুতরাং এটি পছন্দ পদ্ধতি নয়।

dd bs=4M if=/dev/zero of=/root/junk
sync
rm junk

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

zerofree /dev/mmcblk0p2

আরও জানতে http://intgat.tigress.co.uk/rmy/uml/index.html এ পড়ুন

কি আপনার মনে রাখতে হবে যে করছে DD , / dev / mmcblk0 আপনি পুরো ডিভাইসের প্রতিলিপি এর, এমনকি যদি পার্টিশন ছোট। আপনি যদি উপরের কোনও পদ্ধতি ব্যবহারের আগে প্রধান পার্টিশনটি প্রসারিত করতে রাসপি-কনফিগার ব্যবহার করেন তবে আপনি ভাল থাকবেন

PS যদি আপনি ফর্ম্যাট চিত্রের ফাইলটি পরিবর্তন করতে আপত্তি করেন না তবে আপনি পারটিমেজ ব্যবহার করতে পারেন যা জ্ঞাত ফাইল সিস্টেমগুলির জন্য এখনও অবরুদ্ধ ব্লকগুলি বাদ দেয় যদিও তাদের মধ্যে কিছুটা ময়লা থাকে। ব্যাকআপের দুর্নীতি এড়ানোর জন্য ফাইল সিস্টেম মাউন্ট না করা হলে আবার পার্টিম্যাজ ব্যবহার করা ভাল। আপনি সম্ভবত এটি কেবল পঠনযোগ্য পুনরায় গণনা করেই পালাতে পারবেন তবে আমি এটি আপনার বিবেচনার উপর ছেড়ে দেব।


চেষ্টা আমার খোঁজা অংশ হিসেবে এই কাজ করতে, আমি শুধু আমি যে ডেটা আছে acomodate করার এসডি কার্ড পার্টিশন কমাতে gparted ব্যবহৃত, তারপর আমি চেষ্টা DD ING এবং ফলাফল একই 7.6GB ফাইল, partimage নাকিসুরে কথা 2 পার্টিশন সংরক্ষণ (/ হয় বুট + /) 1 টি ছবিতে
এমএফ_

সম্ভবত আমি এটিকে যথেষ্ট পরিষ্কার করে বলিনি - আপনি যখন এটি আগে সংক্ষেপে জিজিপ দিয়ে চেষ্টা করেছিলেন তখন এটির একটি পার্থক্য করা উচিত।
RooTer

এই পদ্ধতিতে কার্ডটি পূরণ করা পুরো লেখার চক্রের গোছা তৈরি করে এবং কার্ডের জীবনকালকে ছোট করবে। চেষ্টা করুনdd bs=4M if=/dev/zero of=/root/junk
nc4pk


4

সংক্ষিপ্ত উত্তর - 2 জিবি এসডি কার্ড ব্যবহার করুন।

দীর্ঘ উত্তর, dd"ভাল" ডেটা কোথায় শেষ হবে তার কোনও ধারণা নেই, আপনাকে এটি কোনওভাবে বলতে হবে।

দুটি উপায় রয়েছে, সহজ 2 জিবি এসডি কার্ড ব্যবহার করা, যা স্বয়ংক্রিয়ভাবে 2 জিবি ছাড়িয়ে অনুলিপি করা বন্ধ করে দেবে এবং আপনার ইচ্ছামতো 500 এমবি সংক্ষেপিত ফাইল তৈরি করবে।

অন্যভাবে, জড়িতদের আরও জটিল, আপনার পার্টিশন টেবিল থেকে সঠিক ডেটা আকার গণনা করা এবং ddকমান্ডের প্যারামিটার হিসাবে এই সঠিক আকারটি নির্দিষ্ট করা । আপনি সেই উদ্দেশ্যে bs=XXX(ব্লকের আকার) এবং count=XXX(ব্লক গণনা) পরামিতি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি bs=10M10 এমবি ব্লক আকারের জন্য নির্দিষ্ট করতে পারেন (এটি আপনার কমান্ডগুলিতে ব্যবহার করা 4 কে ব্লকের আকারের তুলনায় অবশ্যই অনুলিপি করা আরও দ্রুত করবে) এবং count=20010 এমবি * 200 = 2000 এমবি (2 জিবি) অনুলিপি করতে পারেন । আপনার এসডি কার্ড পার্টিশন স্কিম অনুসারে আপনাকে ব্লকের আকার এবং ব্লক গণনা সামঞ্জস্য করতে হবে ।


1
ddএকটি নির্দিষ্ট আকার দেওয়া কখনই কাজ করবে না । এটি অনুমান করে যে ফাইল সিস্টেমের সমস্ত প্রকৃত ডেটা ডিভাইসের শুরুতে খুব সুন্দরভাবে সাজানো হয়েছে, সুতরাং আপনার যদি 8 জিবি পার্টিশনে 2 জিবি থাকে তবে আপনাকে কেবল প্রথম 2 জিবি অনুলিপি করতে হবে। এটি মিথ্যা। এই 2 জিবি ডেটা পুরো স্থান জুড়ে ছড়িয়ে ছিটিয়ে থাকবে, বিশেষত আধুনিক এসডি কার্ডগুলিতে যা সমস্ত উপলব্ধ ব্লক কমপক্ষে একবার ব্যবহার না করা অবধি ব্লকগুলিকে পুনরায় ব্যবহার না করে (এটিকে পরিধান সমাহার বলা হয় এবং এটি কার্ডের আয়ু দীর্ঘায়িত করে)।
স্বর্ণলোকস

@ গোল্ডলোকস যদি আমি সমস্ত পার্টিশনকে সর্বোচ্চ সম্ভাব্য আকারে (কেবলমাত্র ডেটা) সঙ্কুচিত করতে এসডিকার্ডের আকার পরিবর্তন করি তবে ??
এমএফ_

@ গোল্ডিলোকস, দয়া করে প্রশ্নটি এবং উত্তরটি আরও মনোযোগ সহকারে পড়ুন, আমি আপনার বন্য কল্পনা যেমন আপনাকে বলেছিল তেমন আমি 8 গিগাবাইট এসডি কার্ডে 2 জিবি বিভাজনের কথা বলছি।
লেনিক

1
লেনিক: হ্যাঁ আমি কিছুটা হতবাক হয়ে গেলাম আমি আপনাকে সেভাবে ব্যাখ্যা করেছি, সমস্ত ক্ষমা - দুর্ভাগ্যক্রমে আপনি পোস্টটি সম্পাদনা না করা পর্যন্ত আমার ডাউনটোটকে বিপরীত করতে পারবেন না: / যদিও আমি এখনও মনে করি না যে এই উত্তরটি বিশেষভাবে কার্যকর (কোনও অপরাধ - - - কারণ এটি কেবল একটি বিভাজনকেই ডিডিং নয় , এগুলি কীভাবে করবেন সে সম্পর্কে নির্দেশাবলী আবারও দরকারী নয়), তবে আমি এটি করব। @ এমএফ_ হ্যাঁ, এটি করণীয় (আপনি কি আমার উত্তরটি পড়েছেন? এটি কার্যকর হবে ...)
স্বর্ণলোকস

উত্তরটি আমি সম্পাদনা করেছি কেন এটি কার্যকর নয় তা জানেন না, বিশেষত যখন আপনি ঠিক একই উত্তর দিয়েছেন, কেবলমাত্র আরও বিশদ সহ।
লেনিক

1

dd - copy and convertআপনার অনুরোধ করা কাজটি করার সঠিক সরঞ্জাম নয়। এটি একটি নিম্ন স্তরের, সেক্টর বাই সেক্টর অনুলিপি (এবং রূপান্তরকারী) সরঞ্জাম, যা বুট সেক্টর, ফর্ম্যাট ডিভাইস এবং সমস্ত ধরণের নিম্ন স্তরের কাজগুলি অনুলিপি করতে দুর্দান্ত। আপনি যখন ব্যবহার করবেন তখন ddসেক্টর বাই সেক্টরটি চিত্রটিতে অনুলিপি করছেন, এমনকি এটি ফাইল সিস্টেম স্ট্রাকচারের অন্তর্ভুক্ত না হলেও।

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

খালি খাতগুলি অনুলিপি করা এড়ানোর একটি জনপ্রিয় সমাধান হ'ল ফাইল লেভেল কপি সিস্টেম ব্যবহার করা - এবং ক্লোনজিলা একক, একটি সিডি থেকে বুটেবল, এর মতো ye olde Norton Ghostতবে ক্লোনজিলা লিনাক্স (এবং আরও) ফাইল সিস্টেম সমর্থন করে। সুতরাং, এটি কেবল ব্যবহৃত ফাইলগুলি অনুলিপি করবে এবং কেবলমাত্র সেই ফাইলগুলি থেকে একটি ধারক তৈরি করবে। আকার উল্লেখযোগ্যভাবে হ্রাস!


1

আমি একই একই প্রশ্ন ছিল এবং একটি সহজ সরঞ্জাম ব্যবহার করতে চেয়েছিলেন। অনুসন্ধান করার পরেও একটি না পেয়ে আমি mkimg.sh লিখেছি । আমি যে প্রক্রিয়াটি আমি ব্যবহার করেছি তার রূপরেখা: /raspberrypi//a/37899/32585

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