বুটেবল লিনাক্স বিতরণ চিত্র তৈরি করার প্রয়াসে আমি কোন পদক্ষেপগুলি অনুপস্থিত করছি?


6

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

  1. এটি পুরো চিত্র ধারণ করতে একটি ফাঁকা ফাইল তৈরি করে:

    dd if=/dev/zero of=/tmp/test.img bs=512 count=1250000
    
  2. ইমেজ ফাইলটির সাথে একটি লুপব্যাক ডিভাইস ফাইল সংযুক্ত করে:

    losetup /dev/loop0 /tmp/test.img
    
  3. আমাদের সাথে কারসাজি করার আগে আমাদের partedএকটি মিডিয়া লেবেল প্রকারের সংজ্ঞা দিতে হবে:

    parted -s /dev/loop0 mklabel msdos
    
  4. চিত্র ফাইলের মধ্যে প্রথম পার্টিশনটি 512MB করুন:

    parted -s -a opt /dev/loop0 mkpart primary ext2 '0%' 512MB
    
  5. প্রথম পার্টিশনটিকে "বুটেবল" হিসাবে সেট করুন:

    parted -s /dev/loop0 set 1 boot on
    
  6. প্রথম পার্টিশনে একটি এক্সট 2 ফাইল সিস্টেম তৈরি করে:

    mkfs.ext2 -b 1024 /dev/loop0p1
    
  7. উপরে নির্মিত পার্টিশন টেবিল সংরক্ষণ করার সময় গ্রাবের বুটস্ট্র্যাপ কোডের মঞ্চ 1 ইনস্টল করে:

    dd if=/boot/grub/stage1 of=/dev/loop0 bs=446 count=1
    
  8. মিডিয়াতে প্রথম 512 বাইট (স্টেজ 1 এবং পার্টিশন সারণী এড়িয়ে যাওয়া) পরে গ্রাবের বুটস্ট্র্যাপ কোডের স্টেজ 2 ইনস্টল করে:

    dd if=/boot/grub/stage2 of=/dev/loop0 bs=512 seek=1
    
  9. চিত্র ফাইলের প্রথম পার্টিশনটি মাউন্ট পয়েন্টে মাউন্ট করুন:

    mount /dev/loop0p1 /mnt/image
    
  10. পার্টিশন এবং অ্যামাউন্টে সমস্ত ডেটা অনুলিপি করুন।

  11. dd কোনও হার্ড ড্রাইভ বা ফ্ল্যাশ মিডিয়াতে চিত্র ফাইল।

এই পদক্ষেপগুলি করতে ব্যবহার করা হচ্ছে আমি ddএকটি হার্ড ড্রাইভ বা ফ্ল্যাশ ড্রাইভ এবং একটি কীড়া উত্তরাধিকার কনসোল আমি কোথায় বুট করতে সক্ষম হন বুট করার ইমেজ ফাইল, কিন্তু শুধুমাত্র নির্দিষ্ট করে root, kernelএবং initrdমান। যদি আমি গ্রাব লিগ্যাসি rootএবং setupকমান্ডগুলির মাধ্যমে ইনস্টল করার চেষ্টা করি তবে আমি কোনও ত্রুটি পাই না তবে ডিভাইসটি গীব্রিশ করতে বুট হয়। চলমান এবং fdisk -lউত্পাদন:

Partition 1 has different physical/logical beginnings (non-Linux?):
phys(0,32,33) logical(0,37,14)
Partition 1 has different physical/logical endings:
phys(62,53,55) logical(336,27,19)

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


# 4 এর আগে # 7 ধাপটি সম্পাদন করার চেষ্টা করুন। আমি সন্দেহ করি যে ডিডি আপনার খাত / প্রত্যাশার মতো সেক্টরের শেষ রক্ষা করবে।
বুড়ো

@ সাউদস্ট আপনি কেবল সমস্যার সমাধান করেছেন! আপনি যদি কোনও উত্তর তৈরি করতে চান তবে আমি এটি গ্রহণ করব! ধন্যবাদ!
ব্যবহারকারী1646428

উত্তর:


1
  1. চিত্র ফাইলের মধ্যে প্রথম পার্টিশন 512MB করুন

    parted -s -a opt /dev/loop0 mkpart primary ext2 '0%' 512MB

# 4 ধাপে আপনি পার্টিশন টেবিলের প্রথম এন্ট্রিটি পরিবর্তন করতে একটি ইউটিলিটি ব্যবহার করেন, যা সেক্টর / ব্লকের শেষে এমবিআর এর বুটলোডার ধারণ করে।

  1. উপরে নির্মিত পার্টিশন টেবিল সংরক্ষণ করার সময় গ্রাবের বুটস্ট্র্যাপ কোডের মঞ্চ 1 ইনস্টল করে:

    dd if=/boot/grub/stage1 of=/dev/loop0 bs=446 count=1

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

এক্ষেত্রে গন্তব্য ডিভাইসটি এইচডিডি বা এসএসডি, সম্ভবত এটি 512- (বা 4096) -বিতে খাতগুলির উপর ভিত্তি করে। একটি ব্লক ডিভাইসে একটি পঠন বা লিখন অপারেশন অবশ্যই পুরো খাতের জন্য।
যখন কেবল "446 বাইট" র "শর্ট" লেখার চেষ্টা করা হবে, ডিস্ক নিয়ামক (বা ওএস) বাধ্য হবে, তবে ক্ষেত্রটিকে তার সঠিক / পূর্ণ দৈর্ঘ্যের জন্য প্যাড করতে (66 (বা ৩ )৫০) ব্রেটি যুক্ত করবে।
একটি ব্লক রাইটিং কেবল খাতটির আংশিক পরিবর্তন এবং "অলিখিত অংশ" সংরক্ষণের উদ্দেশ্যে নয়।

এই রাইট অপারেশন, অতএব, পূর্বে ইনস্টল করা পার্টিশন টেবিলটিকে ওভারাইট করে দেবে।

সহজ সমাধানটি হল পদক্ষেপ # 4 এর আগে # 7 ধাপ সম্পাদন করা। এটি খালি পার্টিশন টেবিলের সাহায্যে পুরো এমবিআর সেক্টরটি লিখবে এবং তারপরে কেবল একটি এন্ট্রি সম্পাদনা করবে।

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