একটি বুটযোগ্য ইউএসবি স্টিককে বিভিন্ন আকারের স্টিকের ক্লোনিং করা


11

হার্ডওয়ার: 2 8 জিবি ইউএসবি ফ্ল্যাশ ড্রাইভ
ডিআইএসটিআরও: পুদিনা 9 এক্সএফসি স্থির লাইভ সিডি

একটি ইউএসবি ফ্ল্যাশ ড্রাইভের দুটি পার্টিশন রয়েছে:
1) FAT32 700MB পুদিনা 9 পার্টিশন
2) ext3 7.3GB casper-rwবিভাজন

লক্ষ্য:
আমি সেই ইউএসবি ফ্ল্যাশ ড্রাইভের একটি নকল তৈরি করতে চাই কারণ আমি আবার স্ক্র্যাচ থেকে ইনস্টল এবং কনফিগার করার সময়টি অতিক্রম করতে চাই না।

অভিজ্ঞতা:
1) আমি খুঁজে পেয়েছি যে ddএই কাজের জন্য কাজ করে না কারণ আমার কোনও ফ্ল্যাশ ড্রাইভ যদি এমনকি 1MB আকারের হয় যা কখনও কখনও সেগুলি হয় তবে অনুলিপিটি নষ্ট হয়ে যায়।

২) আমি দেখতে পেয়েছি যে gpartedদ্বিতীয় ড্রাইভটিকে প্রথমটির মতো করে প্রিফর্ম্যাট করা এবং তারপরে rsyncপ্রতিটি পার্টিশন স্বতন্ত্রভাবে কাজ করা কার্যকর হয় না কারণ কিছু কারণে কিছু ফাইল অনুলিপি করা হয় না এবং ড্রাইভটি চালনাযোগ্য হয় না।

আমি আমার কাজের কাঠিটি রাখতে চাই এবং কেবল এটির অনুলিপি তৈরি করতে এবং আমার বন্ধুদের জন্য লাঠিগুলি কনফিগার করতে চাই। এইভাবে যদি আমি অন্য লাঠিটি বোকা করি তবে আমার বেস স্টিকটি সর্বদা অপেক্ষা করে বসে থাকবে।


আপনি কোন বুটলোডার ব্যবহার করেন (সিসলিনাক্স?)। দয়া করে আপনার পোস্ট থেকে সেই অভিজাতটি সরিয়ে নেওয়ার বিষয়টি বিবেচনা করুন, এটি আপনার প্রশ্নের সাথে কোনও মূল্য যুক্ত করে না।
মাদুর

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

উত্তর:


5

ভূমিকা

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

আমি মনে করি (তবে আমি পরীক্ষা করে দেখিনি) যে মঞ্চ 2টি প্রথম (FAT32) পার্টিশনে রয়েছে। যদি তা হয়, তবে আপনি এই পার্টিশনটি পাইকারিভাবে অনুলিপি করতে পারেন, এবং বুট সেক্টরটিও অনুলিপি করতে পারেন, তারপরে পার্টিশন টেবিলটি সম্পাদনা করুন যাতে দ্বিতীয় পার্টিশনটি অবশিষ্ট স্থানটি ঠিক রাখে এবং দ্বিতীয় পার্টিশনে ফাইলগুলি অনুলিপি করে। আপনি সেইসাথে বুট সেক্টরের এবং প্রথম পার্টিশনের একটি কাঁচা চিত্র একটি হার্ড ডিস্কের কোনও ফাইলে রাখতে পারেন (তবে আপনি এটি ইউএসবি স্টিক থেকেও ক্লোন করতে পারেন)।

ভিন্ন আকারের একটি ক্লোন তৈরি করা

নীচে আমি মূল স্টিকযুক্ত /dev/sdbডিভাইস এবং ক্লোনযুক্ত ডিভাইসটিকে কল করব /dev/sdc; প্রয়োজন অনুসারে বিকল্প নাম প্রয়োজনে মাউন্ট পয়েন্ট তৈরি করুন। আমি ধরে নিলাম FAT32 পার্টিশনটি (ডিস্কের শুরুতে) 1 এবং ext3 পার্টিশনটি 2 নম্বরযুক্ত; প্রয়োজনে বিভিন্ন সংখ্যার বিকল্প দিন।

প্রথম অংশ, যদি একটি লাঠি থেকে ক্লোনিং করা হয়:

head -c 512 </dev/sdb >/dev/sdc
partprobe /dev/sdc
cat </dev/sdb1 >/dev/sdc1

প্রথম অংশ, যদি চিত্র ফাইল থেকে ক্লোনিং করা হয়:

cat boot_sector.img >/dev/sdc
partprobe /dev/sdc
cat first_partition.img >/dev/sdc1

কল করার partprobeপ্রয়োজন রয়েছে যাতে কর্নেলটি ডিস্ক থেকে পার্টিশন টেবিলটি পুনরায় লোড করে (এটি বুট সেক্টরে রয়েছে এবং উপরের যে কোনও একটি দৃশ্যে প্রথম কমান্ড বুট সেক্টরটি পরিবর্তন করে)। যদি আপনি এটি বাদ দেন তবে হয় ত্রুটি পাবেন বা কার্নেল নীরবে লাঠিটিতে আবর্জনা লিখবে।

চিত্র ফাইল করতে:

head -c 512 </dev/sdb >boot_sector.img 
cat /dev/sdb1 >first_partition.img

বুট সেক্টর এবং প্রথম পার্টিশন পাওয়ার পরে, দ্বিতীয় পার্টিশনের আকার পরিবর্তন করতে আপনাকে আবার পার্টিশন টেবিলটি সম্পাদনা করতে হবে। আপনি সঠিক ইনপুটটি খাওয়ানোর মাধ্যমে এটি স্বয়ংক্রিয়ভাবে করতে পারেন fdisk। সতর্কতা, এটি অত্যন্ত ত্রুটি-প্রবণ এবং আমি এটি পরীক্ষা করিনি। আপনি যদি এই অংশটি পুরোপুরি স্বাচ্ছন্দ্য বোধ করেন না তবে এটি হাত দিয়ে করুন।

sed -e 's/ *#.*//' <<EOF | tr -s ' ' '\n' | tr -d _ | fdisk /dev/sdc
d 2         # delete partition 2
n p 2       # new primary partition 2...
_ _         # ... using all available space
w q         # write and quit
EOF

অবশেষে আবার পার্টিশন টেবিলটি পুনরায় লোড করুন, একটি এক্সট 3 ফাইল সিস্টেম তৈরি করুন এবং ফাইলগুলি এখানে অনুলিপি করুন।

partprobe /dev/sdc
mke2fs -j /dev/sdc2
mount /dev/sdc2 /media/sdc2
cp -a /media/sdb2/ /media/sdc2/
umount /media/sdc2

আরও বড় ক্লোন তৈরির সরলীকৃত পদ্ধতি

আপনি যদি পছন্দ করেন তবে আপনি পুরো স্টিকের একটি চিত্র সঞ্চয় করতে পারেন। আপনি যে চিত্রটি কমপক্ষে বৃহত কোনও স্টিকের উপরে সরাসরি ব্যবহার করতে সক্ষম হবেন: পার্টিশন টেবিলটি পুনরায় পড়ার জন্য কেবল সেই চিত্রটি নতুন স্টিকের সাথে অনুলিপি করুন cat <whole.img >/dev/sdc, তারপরে চালনা করুন partprobe /dev/sdc(বা স্টিকটি আনপ্লাগ করুন এবং এটিকে আবার রেখে দিন)।

তারপরে, আপনি যদি চান তবে আপনি ক্লোনটি বড় করতে পারেন। এই ক্রমে:

  1. পার্টিশনটি বড় করুন। দুর্ভাগ্যক্রমে, আমি কীভাবে এটি একটি সহজ উপায়ে করতে জানি না। কমান্ড partedদিয়ে এটি করতে পারে move(নয় resize, যা ফাইল সিস্টেমকে আকার দেয়), তবে আপনাকে সঠিক যুক্তিগুলি খুঁজে বের করতে হবে - unit sবৃত্তাকার ত্রুটিগুলি এড়ানোর জন্য সেক্টরে স্যুইচ করুন ( )।
  2. ফাইল সিস্টেমটি বড় করুন। এই অংশটি সহজ: কেবলমাত্র resize2fs /dev/sdc2ফাইল সিস্টেমটি পুরো পার্টিশনের আকার ব্যবহার করতে চালিত করুন।

আপনি যদি প্রয়োজনের চেয়ে বড় স্টিক থেকে শুরু করে থাকেন তবে বিপরীত ক্রমে উপরের পদক্ষেপগুলি অনুসরণ করে আপনি এটি সঙ্কুচিত করতে পারেন (প্রথমে ফাইল সিস্টেম সঙ্কুচিত করুন resize2fs, তারপরে পার্টিশনটি সঙ্কুচিত করুন parted)।

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

fdisk -lu whole.img  # note starting sector of partition 2: $S
losetup -fs -o $(($S * 512)) whole.img
# Let $D be the desired size of partition 2, in kB
resize2fs /dev/loop0 $  # replace /dev/loop0 by whatever losetup prints
losetup -d /dev/loop0
parted whole.img
# Use parted to resize the second partition
dd if=/dev/null of=/file/to/truncate seek=1 bs=$(($S/2+$D+1))k

হুম। আমি কি কেবল ইমড ফাইলে দ্বিতীয় পার্টিশনের প্রথম 300mb বা এর অনুলিপি করতে মাথা ব্যবহার করতে পারি না? ফাইলটির শেষে যে সমস্ত খালি স্থান / খালি ব্লকগুলি কেটে দেবে না?
জোশুয়া রবিসন

1
@ জোশুয়া: না, কারণ সমস্ত ফাইলের ডেটা প্রথম 300MB তে থাকার কোনও কারণ নেই এবং এমনকি যদি আপনি এটির মতো কোনও ফাইল সিস্টেমের অংশ নিতে না পারেন তবেও। আপনাকে সঠিক আকারের একটি বৈধ ফাইল সিস্টেম তৈরি করতে হবে। আপনারও সঠিক আকারের একটি পার্টিশন থাকা দরকার; পার্টিশনের আকার বুট সেক্টরে সংরক্ষণ করা হয়। আপনি যদি কোনও ন্যূনতম আকারের চিত্র থেকে শুরু করতে পছন্দ করেন এবং ইচ্ছা করলে এটি বড় করুন, আমি আমার উত্তরে এটি করার একটি উপায় যুক্ত করেছি।
গিলস 'এস-অশুভ হওয়া বন্ধ করুন'

হুম। আমি আগে ফাইলগুলি অনুলিপি করার চেষ্টা করেছি তবে কোনও কারণে সবকিছু অনুলিপি করেনি। আমি সুডোর সাথেও আরএসএনসি চেষ্টা করেছি। এবং আমি মনে করি যে আমি মূল চেষ্টা করেছি এবং এটিও করেছি .... এটি আমার পক্ষে কাজ করছে না। আমি নিশ্চিত যে ড্রাইভগুলি মাউন্ট করা হয়নি ... যাইহোক। আমি জিপিআর্টে ড্রাইভটি সঙ্কুচিত করার সিদ্ধান্ত নিয়েছি এবং তারপরে সেখান থেকে আইএমজি ফাইল তৈরি করব এবং তারপরে এটিকে একটি ছোট ডিস্কে পুনরুদ্ধার করব। জিপিআর্টে প্রাক-সঙ্কুচিত হওয়াই আমি খুঁজে পেতাম simple তারপরও আপনার সাহায্যের জন্য ধন্যবাদ।
জোশুয়া রবিসন

আপনার উত্তর সম্ভবত সঠিক এবং সম্ভবত আমি যা বলছি তা করবে। এটা আমার পক্ষে খুব জটিল। সুতরাং আমি জিপিআরটিড প্রাক সঙ্কুচিত পদ্ধতিতে গিয়েছিলাম।
জোশুয়া রবিসন

এই লাইনে একটি টাইপো আছে head -c 512 </dev/sdb >/bev/sdc?
অ্যান্টোনিও

3

। $: sudos gddrescue ddrescue ইনস্টল করুন

~ $: ddrescue / dev / sda / dev / sdb -v

;

সিনট্যাক্স: ইউটিলিটি / উত্স / ড্রাইভ / গন্তব্য / ড্রাইভ --verbose

মন্তব্য: অগ্রগতি এবং ত্রুটি পরীক্ষা করে দেখায় যাতে আপনি জানেন যে এটি গ্রহণযোগ্য কিনা বা কোথাও ঝুলতে রয়েছে। আপনি বি = যোগ করতে পারেন যা আকার আকার আপনি চান। "gddrescue" হ'ল "ddrescue" এর গুই ভিত্তিক সংস্করণ তবে আমি কেবল উপরে ddrescue ব্যবহার করেছি কারণ এটি কোনও সমস্যা ছাড়াই কাজ করে।


2
মনে রাখবেন যে সঠিক বিন্যাসটি ddrescue -v /dev/sda /dev/sdb(বিকল্পগুলি ডিভাইস / ফাইলগুলির নামের আগে আসে)। এই সরঞ্জামটি নির্দেশ করার জন্য ধন্যবাদ! ব্যবহারের চেয়ে অনেক সহজ dd!
xmnboy

0

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

আমাকে নিশ্চিত করতে হয়েছিল যে আমি যে ইউএসবিতে ক্লোনিং করছি তা লাইভ বুট করার জন্য ইতিমধ্যে ফর্ম্যাট করা হয়েছে। উভয় ইউএসবি-তে প্লাগড এবং 8 জিবি ড্রাইভে কেবল ডান ক্লিক করা; ক্লিক করে copyতারপরে GB৪ জিবি ড্রাইভটি নির্বাচন করা হয়েছে, এটি আপনাকে একগুচ্ছ জিজ্ঞাসা করবে যেমন "আপনি কি নিশ্চিত যে এটি সঠিক ড্রাইভ, সমস্ত কিছু মুছে যাবে" সমস্ত জাজ। কেবল এটির মাধ্যমে পড়ুন এবং নিশ্চিত করুন যে সবকিছু যথাযথভাবে রয়েছে, আপনাকে আসলে খুব বেশি কিছু করতে হবে না।

প্রক্রিয়াটি শেষ হওয়ার জন্য অপেক্ষা করুন এবং আপনি প্রস্তুত set পরীক্ষিত বলেছেন ইউএসবি এবং সবকিছু কাজ করেছে!

আমি ইউএসবি থেকে ইউএসবিতে লাইভ ডিস্ট্রোস ক্লোনিং করে কমপক্ষে এটি আমার পক্ষে সহজতম উপায় বলে মনে করেছি।

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