Nighpher, আমি আপনার প্রশ্নের উত্তর দিতে চেষ্টা করব, কিন্তু বুট প্রক্রিয়ার একটি আরো ব্যাপক বর্ণনার জন্য, চেষ্টা আইবিএম নিবন্ধ ।
ঠিক আছে, আমি ধরে নিচ্ছি যে আপনি GRUB বা GRUB2 কে আপনার বুটলোডার হিসাবে ব্যাখ্যার জন্য ব্যবহার করছেন। প্রথমে, যখন বিআইওএস আপনার ডিস্কটি বুটলোডার লোড করার জন্য অ্যাক্সেস করে, তখন এটি ডিস্ক অ্যাক্সেসের জন্য এর অন্তর্নির্মিত রুটিনগুলি ব্যবহার করে, যা বিখ্যাত 13 ঘন্টা বাধায় সংরক্ষণ করা হয়। বুটলোডার (এবং সেটআপ পর্যায়ে কার্নেল) ডিস্ক অ্যাক্সেস করার সময় সেই রুটিনগুলি ব্যবহার করে। নোট করুন যে BIOS প্রসেসরের রিয়েল মোড (16 বিট) মোডে চলে, সুতরাং এটি 2 ^ 20 বাইটের বেশি র্যামের ঠিকানা করতে পারে না (2 ^ 20 নয় 2 address 16 কারণ রিয়েল মোডে প্রতিটি ঠিকানা সেগমেন্ট_এড্রেস * 16 + অফসেট সমন্বিত) যেখানে বিভাগের ঠিকানা এবং অফসেট উভয়ই 16-বিট, http://en.wikedia.org/wiki/X86_memory_segmentation দেখুন )। সুতরাং, এই রুটিনগুলি 1 এমআইবি র্যামের বেশি র্যাম অ্যাক্সেস করতে পারে না, এটি একটি কঠোর সীমাবদ্ধতা এবং একটি বড় অসুবিধা।
বিআইওএস এমবিআর থেকে বুটলোডার কোডটি লোড করে - আপনার ডিস্কের প্রথম 512 বাইট এবং এটি কার্যকর করে। আপনি যদি GRUB ব্যবহার করছেন তবে সেই কোডটি GRUB পর্যায় 1। এই কোডটি GRUB পর্যায়ে 1.5 লোড করে, যা ডিস্ক স্পেসের প্রথম 32 কিবিতে অবস্থিত, ডস সামঞ্জস্যতা অঞ্চল বা ফাইল সিস্টেমের একটি নির্দিষ্ট ঠিকানা থেকে হয়। এটি করার জন্য ফাইল সিস্টেমটি বোঝার দরকার নেই, কারণ 1.5 ম পর্যায়ে ফাইল সিস্টেমে রয়েছে এটি "কাঁচা" কোড এবং সরাসরি র্যামে লোড করে কার্যকর করা যেতে পারে: http://www.pixbeat.org/ ডকস / ডিস্ক / । ডিস্ক থেকে র্যামে স্টেজ 1.5 লোড বিআইওএস ডিস্ক অ্যাক্সেস রুটিন ব্যবহার করে।
স্টেজ ১.৫-এ ফাইল-সিস্টেম ইউটিলিটি রয়েছে, যাতে এটি ফাইল সিস্টেম থেকে স্টেজ 2 পড়তে পারে (ভাল, এটি এখনও ডিস্ক থেকে র্যামে পড়তে BIOS 13h ব্যবহার করে, তবে এখন এটি ইনোড ইত্যাদি সম্পর্কিত ফাইল-সিস্টেমের তথ্যগুলি বুঝতে পারে এবং এর বাইরে কাঁচা কোড পেতে পারে) ডিস্ক)। পুরানো বায়োসগুলি তাদের ডিস্কের ঠিকানা মোডে সীমাবদ্ধতার কারণে পুরো এইচডি অ্যাক্সেস করতে সক্ষম না হতে পারে - তারা সিলিন্ডার-হেড-সেক্টর সিস্টেমটি ব্যবহার করতে পারে, ডিস্কের প্রথম 8 গিগাবাইটের বেশি সম্বোধন করতে অক্ষম: http: //en.wikedia। org / wiki / সিলিন্ডার-প্রধান-সেক্টর ।
স্টেজ 2 র্যামে কার্নেলটি লোড করে (আবার, বিআইওএস ডিস্ক ইউটিলিটিগুলি ব্যবহার করে)। এটি যদি ২.6++ কার্নেল হয় তবে এর মধ্যে থ্রিমারফ সংকলিত রয়েছে, সুতরাং এটি লোড করার দরকার নেই। এটি যদি পুরানো কার্নেল হয় তবে বুটলোডার স্ট্যান্ডলোন আরআরডি চিত্রটি মেমরিতে লোড করে, যাতে কার্নেল এটি মাউন্ট করতে পারে এবং ডিস্ক থেকে আসল ফাইল সিস্টেম মাউন্ট করার জন্য ড্রাইভার পেতে পারে।
সমস্যাটি হ'ল কার্নেল (এবং র্যামডিস্ক) ওজন 1 এমআইবি এর বেশি হয়, সুতরাং এগুলি র্যামে লোড করতে আপনাকে প্রথমে 1 এমআইবিতে কার্নেলটি লোড করতে হবে, তারপরে সুরক্ষিত মোডে (32 বিট) লাফাতে হবে, লোড করা কার্নেলটিকে উচ্চ মেমরিতে নিয়ে যাবে (ফ্রি রিয়েল মোডের জন্য প্রথম 1 এমআইবি), তারপরে আবার রিয়েল (16 বিট) মোডে ফিরে আসুন, ডিস্ক থেকে প্রথম 1 এমআইবিতে র্যামডিস্ক পান (যদি এটি পৃথক আরআরডি এবং পুরানো কার্নেল হয়) তবে সম্ভবত সুরক্ষিত (32 বিট) মোডে স্যুইচ করুন, এটি যেখানে এটি রয়েছে সেখানে রেখে দিন, সম্ভবত বাস্তব মোডে ফিরে আসুন (বা না: /programming/4821911/does-grub-switch-to-protected-mode ) এবং কার্নেল কোডটি কার্যকর করুন। সতর্কতা: আমি বর্ণনার এই অংশটির পূর্ণতা এবং নির্ভুলতা সম্পর্কে পুরোপুরি নিশ্চিত নই।
এখন, যখন আপনি শেষ পর্যন্ত কার্নেলটি চালান, আপনার ইতিমধ্যে এটি এবং বুটলোডার দ্বারা র্যামডিস্কটি র্যামে লোড করা হয়েছে , যাতে কার্নেলটি আপনাকে বাস্তব রুট ফাইল সিস্টেম এবং এতে পিভট রুট মাউন্ট করার জন্য র্যামডিস্ক থেকে ডিস্ক ইউটিলিটিগুলি ব্যবহার করতে পারে। ramfs ড্রাইভারগুলি কার্নেলে উপস্থিত রয়েছে, সুতরাং এটি অবশ্যই অবশ্যই initramfs এর বিষয়বস্তু বুঝতে পারে।