Initial ramdisk
লিনাক্স সিস্টেমে, initrd (প্রাথমিক র্যামডিস্ক) হল মেমরিতে একটি অস্থায়ী রুট ফাইল সিস্টেম লোড করার একটি স্কিম, যা লিনাক্স স্টার্টআপ প্রক্রিয়ার অংশ হিসাবে ব্যবহার করা হয়। initrd এবং initramfs (আইএনআইটিিয়াল র্যাম ফাইল সিস্টেম থেকে) এটি অর্জনের দুটি ভিন্ন পদ্ধতি বোঝায়। উভয়ই সাধারণত আসল মূল ফাইল সিস্টেম বসানোর আগে প্রস্তুতি নিতে ব্যবহৃত হয়। অনেক লিনাক্স ডিস্ট্রিবিউশন একটি একক, জেনেরিক লিনাক্স কার্নেল ইমেজ পাঠায় যা ডিস্ট্রিবিউশনের ডেভেলপাররা বিশেষভাবে বিভিন্ন ধরনের হার্ডওয়্যারে বুট করার জন্য তৈরি করে। এই জেনেরিক কার্নেল ইমেজের জন্য ডিভাইস ড্রাইভারগুলি লোডযোগ্য কার্নেল মডিউল হিসাবে অন্তর্ভুক্ত করা হয়েছে কারণ একটি কার্নেলে অনেক ড্রাইভারকে স্ট্যাটিকভাবে কম্পাইল করার ফলে কার্নেল ইমেজটি অনেক বড় হয়, সম্ভবত সীমিত মেমরি সহ কম্পিউটারে বুট করার জন্য খুব বড় হয়, বা কিছু ক্ষেত্রে বুট-টাইম ক্র্যাশ বা অস্তিত্বহীন বা দ্বন্দ্বপূর্ণ হার্ডওয়্যার অনুসন্ধানের কারণে অন্যান্য সমস্যা সৃষ্টি করে। এই স্থির-সংকলিত কার্নেল পদ্ধতিটি কার্নেল মেমরিতে এমন মডিউলগুলিও ছেড়ে দেয় যা আর ব্যবহার করা হয় না বা প্রয়োজন হয় না, এবং বুটের সময় রুট ফাইল সিস্টেমটি মাউন্ট করার জন্য প্রয়োজনীয় মডিউলগুলি সনাক্ত এবং লোড করার সমস্যা উত্থাপন করে, বা সেই বিষয়টির জন্য, কোথায় বা রুট ফাইল সিস্টেমটি কী তা অনুমান করে। বিষয়টিকে আরও জটিল করার জন্য, রুট ফাইল সিস্টেমটি একটি সফ্টওয়্যার রেইড ভলিউম, এলভিএম, এনএফএস (ডিস্কবিহীন ওয়ার্কস্টেশনে) বা একটি এনক্রিপ্ট করা পার্টিশনে থাকতে পারে। এই সমস্ত কিছুর জন্য বিশেষ প্রস্তুতির প্রয়োজন হয়। আরেকটি জটিলতা হ 'ল হাইবারনেশনের জন্য কার্নেল সমর্থন, যা মেমরির পুরো বিষয়বস্তুর একটি চিত্র একটি সোয়াপ পার্টিশন বা একটি নিয়মিত ফাইলে ফেলে কম্পিউটারকে ডিস্কে স্থগিত করে, তারপরে পাওয়ার অফ করে দেয়। পরবর্তী বুটে, এই ছবিটি মেমরিতে আবার লোড করার আগে অ্যাক্সেসযোগ্য করে তুলতে হবে। কার্নেলে এতগুলি বিশেষ ক্ষেত্রে হার্ডকোড পরিচালনা এড়াতে, একটি অস্থায়ী মূল ফাইল-সিস্টেম সহ একটি প্রাথমিক বুট পর্যায়-যা এখন প্রাথমিক ব্যবহারকারী স্থান নামে অভিহিত-ব্যবহার করা হয়। এই রুট ফাইল-সিস্টেমে ইউজার-স্পেস হেল্পার থাকতে পারে যারা হার্ডওয়্যার সনাক্তকরণ, মডিউল লোডিং এবং আসল রুট ফাইল-সিস্টেম মাউন্ট করার জন্য প্রয়োজনীয় ডিভাইস আবিষ্কার করে। বাস্তবায়ন এই প্রাথমিক মূল ফাইল সিস্টেমের একটি চিত্র (কার্নেল চিত্র সহ) অবশ্যই লিনাক্স বুটলোডার বা কম্পিউটারের বুট ফার্মওয়্যার দ্বারা অ্যাক্সেসযোগ্য কোথাও সংরক্ষণ করতে হবে। এটি রুট ফাইল সিস্টেম নিজেই হতে পারে, অপটিক্যাল ডিস্কে বুট ইমেজ, স্থানীয় ডিস্কে একটি ছোট পার্টিশন (একটি বুট পার্টিশন, সাধারণত এক্সটি2 বা এফএটি ফাইল সিস্টেম ব্যবহার করে), বা একটি টিএফটিপি সার্ভার (এমন সিস্টেমে যা ইথারনেট থেকে বুট করতে পারে) হতে পারে। বুটলোডার কার্নেল এবং প্রাথমিক রুট ফাইল সিস্টেমের চিত্রটি মেমরিতে লোড করবে এবং তারপরে কার্নেলটি শুরু করবে, যা ছবির মেমরি ঠিকানায় চলে যাবে। বুট সিকোয়েন্সের শেষে, কার্নেল তার প্রথম কয়েকটি ডেটা ব্লক থেকে ছবির বিন্যাস নির্ধারণ করার চেষ্টা করে, যা হয় initrd বা initramfs স্কিমে নিয়ে যেতে পারে। initrd স্কিমে, চিত্রটি একটি ফাইল সিস্টেম ইমেজ (ঐচ্ছিকভাবে সংকুচিত) হতে পারে, যা একটি বিশেষ ব্লক ডিভাইসে () উপলব্ধ করা হয় যা তারপর প্রাথমিক মূল ফাইল সিস্টেম হিসাবে মাউন্ট করা হয়। সেই ফাইল সিস্টেমের ড্রাইভারকে অবশ্যই কার্নেলে স্থিতিশীলভাবে সংকলিত করতে হবে। অনেক ডিস্ট্রিবিউশন মূলত কম্প্রেসড এক্সটি2 ফাইল সিস্টেম ইমেজ ব্যবহার করে, অন্যগুলি (ডেবিয়ান 3.1 সহ) মেমরি-সীমিত সিস্টেমে বুট করার জন্য ক্র্যামফ ব্যবহার করে, যেহেতু ক্র্যামফএস ইমেজটি ডিকম্প্রেশনের জন্য অতিরিক্ত জায়গার প্রয়োজন ছাড়াই জায়গায় মাউন্ট করা যেতে পারে। একবার প্রাথমিক রুট ফাইল সিস্টেম চালু হয়ে গেলে, কার্নেল তার প্রথম প্রক্রিয়া হিসাবে কার্যকর হয়; যখন এটি প্রস্থান করে, তখন কার্নেল ধরে নেয় যে আসল রুট ফাইল সিস্টেমটি মাউন্ট করা হয়েছে এবং স্বাভাবিক ইউজার-স্পেস বুট প্রক্রিয়া শুরু করার জন্য কার্যকর করা হয়। initramfs স্কিমে (লিনাক্স কার্নেল 2.6.13 থেকে উপলব্ধ), চিত্রটি একটি সিপিও আর্কাইভ হতে পারে (ঐচ্ছিকভাবে সংকুচিত)। আর্কাইভটি কার্নেল দ্বারা একটি টি. এম. পি. এফ-এর একটি বিশেষ উদাহরণে আনপ্যাক করা হয় যা প্রাথমিক মূল ফাইল সিস্টেমে পরিণত হয়। এই স্কিমের সুবিধা হল কার্নেলে কম্পাইল করার জন্য কোনও মধ্যবর্তী ফাইল সিস্টেম বা ব্লক ড্রাইভারের প্রয়োজন নেই। কিছু সিস্টেম একটি initramfs ইমেজ তৈরি করতে ড্রাকট প্যাকেজ ব্যবহার করে। initramfs পরিকল্পনায়, কার্নেলটি তার প্রথম প্রক্রিয়া হিসাবে কার্যকর হয় যা থেকে বেরিয়ে আসার আশা করা হয় না। কিছু অ্যাপ্লিকেশনের জন্য, initramfs ক্যাসপার ইউটিলিটি ব্যবহার করে ইউনিয়নএফএস ব্যবহার করে শুধুমাত্র-পঠনযোগ্য মূল ফাইল সিস্টেম চিত্রের উপর একটি অধ্যবসায় স্তর আচ্ছাদন করতে একটি লিখনযোগ্য পরিবেশ তৈরি করতে পারে। উদাহরণস্বরূপ, ওভারলে ডেটা একটি ইউএসবি ফ্ল্যাশ ড্রাইভে সংরক্ষণ করা যেতে পারে, যখন একটি লাইভ সিডিতে সংরক্ষিত একটি সংকুচিত স্কোয়াশএফএস রিড-অনলি চিত্র একটি রুট ফাইল সিস্টেম হিসাবে কাজ করে। কোন অ্যালগরিদমগুলি এটিতে স্থিতিশীলভাবে সংকলিত হয়েছিল তার উপর নির্ভর করে, কার্নেল gzip, bzip2, LZMA, XZ, LZO, LZ4 এবং zstd দিয়ে সংকুচিত initrd/initramfs চিত্রগুলি আনপ্যাক করতে পারে। কিছু লিনাক্স ডিস্ট্রিবিউশন যেমন ডেবিয়ান একটি কাস্টমাইজড initrd ইমেজ তৈরি করবে যা শুধুমাত্র কিছু নির্দিষ্ট কম্পিউটার বুট করার জন্য প্রয়োজনীয় যা কিছু রয়েছে, যেমন এটিএ, এসসিএসআই এবং ফাইল সিস্টেম কার্নেল মডিউল। এগুলি সাধারণত রুট ফাইল সিস্টেমের অবস্থান এবং প্রকারকে এম্বেড করে। অন্যান্য লিনাক্স ডিস্ট্রিবিউশনগুলি (যেমন ফেডোরা এবং উবুন্টু) আরও সাধারণ initrd ইমেজ তৈরি করে। এগুলি কেবলমাত্র মূল ফাইল সিস্টেমের (বা এর ইউ. ইউ. আই. ডি) ডিভাইসের নাম দিয়ে শুরু হয় এবং বুট করার সময় অবশ্যই অন্যান্য সমস্ত কিছু আবিষ্কার করতে হবে। এই ক্ষেত্রে, সফ্টওয়্যারটিকে অবশ্যই রুট ফাইল সিস্টেম মাউন্ট করার জন্য কাজগুলির একটি জটিল ক্যাসকেড সম্পাদন করতে হবেঃ বুট প্রক্রিয়াটি যে কোনও হার্ডওয়্যার ড্রাইভারের উপর নির্ভর করে তা অবশ্যই লোড করতে হবে। একটি সাধারণ ব্যবস্থা হল সাধারণ স্টোরেজ ডিভাইসগুলির জন্য কার্নেল মডিউলগুলি initrd-এ প্যাক করা এবং তারপরে কম্পিউটারের সনাক্তকৃত হার্ডওয়্যারের সাথে মিলে যাওয়া মডিউলগুলি টানতে একটি হটপ্লাগ এজেন্টকে আহ্বান করা। বুট স্প্ল্যাশ স্ক্রিন প্রদর্শনকারী সিস্টেমে, ভিডিও হার্ডওয়্যারটি অবশ্যই আরম্ভ করতে হবে এবং একজন ইউজার-স্পেস হেল্পার বুট প্রক্রিয়ার সাথে লকস্টেপে ডিসপ্লেতে অ্যানিমেশন আঁকতে শুরু করে। যদি রুট ফাইল সিস্টেমটি এন. এফ. এস-এ থাকে, তবে এটি অবশ্যই প্রাথমিক নেটওয়ার্ক ইন্টারফেসটি আনতে হবে, একটি ডি. এইচ. সি. পি ক্লায়েন্টকে আহ্বান করতে হবে, যার সাহায্যে এটি একটি ডি. এইচ. সি. পি ইজারা পেতে পারে, এন. এফ. এস শেয়ারের নাম এবং এন. এফ. এস সার্ভারের ঠিকানা ইজারা থেকে বের করতে পারে এবং এন. এফ. এস শেয়ার মাউন্ট করতে পারে। যদি রুট ফাইল সিস্টেমটি কোনও সফ্টওয়্যার রেইড ডিভাইসে রয়েছে বলে মনে হয়, তবে রেইড ভলিউম স্প্যানগুলি কোন ডিভাইসে রয়েছে তা জানার কোনও উপায় নেই; সমস্ত উপলব্ধ ব্লক ডিভাইসগুলি স্ক্যান করতে এবং প্রয়োজনীয়গুলি অনলাইনে আনার জন্য স্ট্যান্ডার্ড এমডি ইউটিলিটিগুলিকে অবশ্যই আহ্বান করতে হবে। যদি রুট ফাইল সিস্টেমটি লজিক্যাল ভলিউমে থাকে বলে মনে হয়, তবে এটি ধারণকারী ভলিউম গ্রুপটি স্ক্যান করতে এবং সক্রিয় করতে এলভিএম ইউটিলিটিগুলিকে অবশ্যই আহ্বান করতে হবে। যদি রুট ফাইল সিস্টেমটি একটি এনক্রিপ্ট করা ব্লক ডিভাইসে থাকে, তবে সফ্টওয়্যারটিকে একটি সহায়ক স্ক্রিপ্ট আহ্বান করতে হবে যাতে ব্যবহারকারীকে একটি পাসফ্রেজ টাইপ করতে এবং/অথবা একটি হার্ডওয়্যার টোকেন (যেমন একটি স্মার্ট কার্ড বা একটি ইউএসবি সুরক্ষা ডঙ্গল) সন্নিবেশ করতে বলা হয় এবং তারপরে ডিভাইস ম্যাপারের সাথে একটি ডিক্রিপশনের লক্ষ্য তৈরি করতে হয়। কিছু ডিস্ট্রিবিউশন ইভেন্ট-চালিত হটপ্লাগ এজেন্ট যেমন উডেভ ব্যবহার করে, যা হার্ডওয়্যার ডিভাইস হিসাবে সহায়ক প্রোগ্রামগুলিকে আহ্বান করে, ডিস্ক পার্টিশন এবং নির্দিষ্ট নিয়মের সাথে মেলে এমন স্টোরেজ ভলিউম অনলাইনে আসে। এটি আবিষ্কারকে সমান্তরালভাবে চালানোর অনুমতি দেয় এবং রুট ফাইল সিস্টেমে পৌঁছানোর জন্য ধীরে ধীরে এলভিএম, রেড বা এনক্রিপশনের নির্বিচারে নেস্টিংয়ে ক্যাসকেড করে। যখন রুট ফাইল সিস্টেমটি অবশেষে দৃশ্যমান হয়, তখন যে কোনও রক্ষণাবেক্ষণের কাজ যা একটি মাউন্ট করা রুট ফাইল সিস্টেমে চলতে পারে না, রুট ফাইল সিস্টেমটি কেবল পঠনযোগ্যভাবে মাউন্ট করা হয় এবং যে কোনও প্রক্রিয়া যা অবশ্যই চলতে থাকবে (যেমন স্প্ল্যাশ স্ক্রিন হেল্পার এবং এর কমান্ড এফআইএফও) নতুন মাউন্ট করা রুট ফাইল সিস্টেমে উত্তোলন করা হয়। চূড়ান্ত মূল ফাইল সিস্টেমটি কেবল মাউন্ট করা যাবে না, কারণ এটি প্রাথমিক মূল ফাইল সিস্টেমের স্ক্রিপ্ট এবং সরঞ্জামগুলিকে কোনও চূড়ান্ত পরিচ্ছন্নতার কাজের জন্য অ্যাক্সেসযোগ্য করে তুলবে নাঃ একটি initrd-এ, নতুন মূলটি একটি অস্থায়ী মাউন্ট পয়েন্টে মাউন্ট করা হয় এবং pivot _ root (8) দিয়ে জায়গায় ঘোরানো হয় (যা বিশেষভাবে এই উদ্দেশ্যে চালু করা হয়েছিল)। এটি প্রাথমিক রুট ফাইল সিস্টেমকে একটি মাউন্ট পয়েন্টে (যেমন) ছেড়ে দেয় যেখানে সাধারণ বুট স্ক্রিপ্টগুলি পরে initrd দ্বারা ধারণ করা মেমরি মুক্ত করার জন্য এটি আনমাউন্ট করতে পারে। একটি initramfs-এ, প্রাথমিক মূল ফাইল সিস্টেমটি ঘোরানো যাবে না। পরিবর্তে, এটি কেবল খালি করা হয় এবং চূড়ান্ত মূল ফাইল সিস্টেমটি উপরে মাউন্ট করা হয়। বেশিরভাগ প্রাথমিক রুট ফাইল সিস্টেম একটি শেল স্ক্রিপ্ট হিসাবে প্রয়োগ করে এবং এইভাবে কিছু প্রয়োজনীয় ইউজার-স্পেস ইউটিলিটি (সাধারণত ব্যস্তবক্স টুলকিট) সহ একটি ন্যূনতম শেল (সাধারণত/বিন/অ্যাশ) অন্তর্ভুক্ত করে। আরও স্থান বাঁচানোর জন্য, শেল, ইউটিলিটি এবং তাদের সহায়ক গ্রন্থাগারগুলি সাধারণত স্থান অপ্টিমাইজেশান সক্ষম করে সংকলিত করা হয় (যেমন জিসিসির "-ওএস" ফ্ল্যাগ সহ) এবং এই উদ্দেশ্যে বিশেষভাবে লিখিত সি গ্রন্থাগারের একটি ন্যূনতম সংস্করণ কিলিবসির সাথে সংযুক্ত করা হয়। লিনাক্স ডিস্ট্রিবিউশনের জন্য অন্যান্য ব্যবহারগুলি সাধারণত সম্পূর্ণরূপে একটি initramfs থেকে চলে, কারণ কোনও স্থায়ী স্টোরেজ সেট আপ করার আগে তাদের অবশ্যই ইনস্টলার ইন্টারফেস এবং সমর্থনকারী সরঞ্জামগুলি হোস্ট করতে সক্ষম হতে হবে। টিনি কোর লিনাক্স এবং পপি লিনাক্স সম্পূর্ণরূপে initrd থেকে চলতে পারে। অন্যান্য অপারেটিং সিস্টেমে সাদৃশ্য উইন্ডোজ ভিস্তা থেকে, উইন্ডোজ একটি ডব্লিউআইএম ডিস্ক ইমেজ ফাইল থেকে বুট করতে পারে, যার জন্য ফাইলের বিন্যাস প্রকাশিত হয়; এটি জিপ বিন্যাসের অনুরূপ, তবে এটি হার্ড লিঙ্ক, ডিডুপ্লিকেট করা অংশগুলিকে সমর্থন করে এবং চাংক-বাই-চাঙ্ক কম্প্রেশন ব্যবহার করে। এই ক্ষেত্রে, পুরো ডব্লিউআইএম প্রাথমিকভাবে র্যাম-এ লোড করা হয়, তারপরে কার্নেল সূচনা করা হয়। এরপরে, লোড করা ডব্লিউআইএম একটি নির্ধারিত ড্রাইভ লেটার সহ সিস্টেমরুট হিসাবে উপলব্ধ। উইন্ডোজ ইনস্টলার এটি ব্যবহার করে যাতে এটি BOOT.WIM থেকে বুট হয় এবং তারপর ইনস্টল করার জন্য উইন্ডোজ ফাইলগুলির সংগ্রহ হিসাবে INSTALL.WIM ব্যবহার করে। এছাড়াও, উইন্ডোজ প্রি-ইনস্টলেশন এনভায়রনমেন্ট (উইন্ডোজ পিই) কিছু অ্যান্টিভাইরাস এবং ব্যাকআপ/দুর্যোগ পুনরুদ্ধার সফ্টওয়্যারের পৃথক-বুট সংস্করণের ভিত্তি হিসাবে একই ব্যবহার করে। উইন্ডোজ ইনস্টল করাও সম্ভব যাতে এটি সর্বদা একটি ফিজিক্যাল ড্রাইভে রাখা ডাব্লুআইএম বা ভিএইচডি ফাইল থেকে বুট হয়। যাইহোক, এটি খুব কমই ব্যবহৃত হয় কারণ উইন্ডোজ বুট লোডার বুট-টাইম কার্নেল মডিউলগুলির জন্য. sys ফাইলগুলি লোড করতে সক্ষম, যা লিনাক্সে initrd প্রয়োজন। আরও দেখুন ড্রাকট বুস্টার initramfs জেনারেটর লিনাক্স স্টার্টআপ প্রসেস তালিকা যেগুলি লিনাক্স ডিস্ট্রিবিউশনগুলি র্যাম থেকে চলে ই. এফ. আই. এস. টি. ইউ. বি বুটিং ই. এফ. আই ফার্মওয়্যারকে একটি লিনাক্স কার্নেল লোড করার অনুমতি দেয় (আর্চ লিনাক্স উইকি) রেফারেন্স বাহ্যিক লিঙ্ক ডেবিয়ান initramfs-সরঞ্জামগুলির বিশদ তুলনা প্রারম্ভিক ইউজারস্পেস সমর্থনে আল্ট ইউ. আর. এল লিনাক্স কার্নেলে কার্নেল ডকুমেন্টেশনের বিশদ তুলনা