Booting process of Linux
লিনাক্সের মাল্টি-স্টেজ বুটিং প্রক্রিয়াটি অনেক দিক থেকে বিএসডি এবং অন্যান্য ইউনিক্স-স্টাইলের বুট প্রক্রিয়াগুলির অনুরূপ, যেখান থেকে এটি উদ্ভূত হয়েছে। একটি লিনাক্স ইনস্টলেশন বুট করার একাধিক পর্যায় এবং সফ্টওয়্যার উপাদান রয়েছে, যার মধ্যে রয়েছে ফার্মওয়্যার সূচনা, একটি বুট লোডার কার্যকর করা, একটি লিনাক্স কার্নেল চিত্র লোড করা এবং চালু করা এবং বিভিন্ন স্টার্টআপ স্ক্রিপ্ট এবং ডেমন কার্যকর করা। এই পর্যায় এবং উপাদানগুলির প্রত্যেকটির জন্য বিভিন্ন বৈচিত্র্য এবং পদ্ধতি রয়েছে; উদাহরণস্বরূপ, GRUB, কোরবুট বা দাস ইউ-বুট বুট লোডার হিসাবে ব্যবহার করা যেতে পারে (ঐতিহাসিক উদাহরণ হল LILO, SYSLINUX বা লোডলিন), যেখানে স্টার্টআপ স্ক্রিপ্টগুলি ঐতিহ্যবাহী init-শৈলী হতে পারে, অথবা সিস্টেম কনফিগারেশনটি আধুনিক বিকল্পের মাধ্যমে যেমন সিস্টেমডি বা আপস্টার্টের মাধ্যমে সঞ্চালিত করা যেতে পারে। লিনাক্স স্টার্টআপ প্রক্রিয়ার প্রাথমিক পর্যায়গুলি কম্পিউটার স্থাপত্যের উপর অনেক বেশি নির্ভর করে। আইবিএম পিসি সামঞ্জস্যপূর্ণ হার্ডওয়্যার একটি স্থাপত্য লিনাক্স সাধারণত ব্যবহৃত হয়; এই সিস্টেমে, বিআইওএস একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যা অন্যান্য সিস্টেমে সঠিক এনালগ নাও থাকতে পারে। নিম্নলিখিত উদাহরণে, আইবিএম পিসি সামঞ্জস্যপূর্ণ হার্ডওয়্যার অনুমান করা হয়ঃ প্রকৃত হার্ডওয়্যার প্ল্যাটফর্মের জন্য নির্দিষ্ট পাওয়ার-অন স্ব-পরীক্ষার মতো প্রারম্ভিক কাজগুলি বিআইওএস সম্পাদন করে। একবার হার্ডওয়্যার গণনা করা হয়ে গেলে এবং বুট করার জন্য প্রয়োজনীয় হার্ডওয়্যারটি সঠিকভাবে শুরু হয়ে গেলে, বিআইওএস কনফিগার করা বুট ডিভাইস থেকে বুট কোডটি লোড করে এবং কার্যকর করে। বুট লোডার প্রায়শই ব্যবহারকারীকে সম্ভাব্য বুট বিকল্পগুলির একটি মেনু উপস্থাপন করে এবং একটি ডিফল্ট বিকল্প থাকে, যা কিছু সময় অতিবাহিত হওয়ার পরে নির্বাচিত হয়। একবার নির্বাচন করা হয়ে গেলে, বুট লোডারটি মেমরিতে কার্নেলটি লোড করে, এটিকে কিছু পরামিতি সরবরাহ করে এবং এটিকে নিয়ন্ত্রণ দেয়। কার্নেলটি যদি সংকুচিত হয়, তা হলে তা নিজেই ডিকম্প্রেস হয়ে যাবে। এরপরে এটি প্রয়োজনীয় হার্ডওয়্যার এবং মেমরি পেজিংয়ের মতো সিস্টেম ফাংশনগুলি সেট আপ করে এবং স্টার্ট _ কার্নেল () কল করে যা বেশিরভাগ সিস্টেম সেটআপ (ইন্টারাপ্ট, বাকি মেমরি ম্যানেজমেন্ট, ডিভাইস এবং ড্রাইভার ইনিশিয়ালাইজেশন ইত্যাদি) সম্পাদন করে। এরপরে এটি আলাদাভাবে, নিষ্ক্রিয় প্রক্রিয়া, সময়সূচী এবং init প্রক্রিয়া শুরু করে, যা ব্যবহারকারীর জায়গায় কার্যকর করা হয়। init-এ হয় স্ক্রিপ্ট থাকে যা শেল (sysv, bsd, runit) দ্বারা সম্পাদিত হয় অথবা কনফিগারেশন ফাইল থাকে যা বাইনারি উপাদান (সিস্টেমডি, আপস্টার্ট) দ্বারা সম্পাদিত হয়। ইনিশিয়ালের নির্দিষ্ট স্তর (সিএসভি, বিএসডি) বা লক্ষ্য (সিস্টেমডি) রয়েছে, যার প্রত্যেকটিতে নির্দিষ্ট পরিষেবার সেট (ডেমন) রয়েছে। এগুলি বিভিন্ন নন-অপারেটিং সিস্টেম পরিষেবা এবং কাঠামো প্রদান করে এবং ব্যবহারকারীর পরিবেশ গঠন করে। একটি সাধারণ সার্ভার পরিবেশ একটি ওয়েব সার্ভার, ডাটাবেস পরিষেবা এবং নেটওয়ার্কিং শুরু করে। সাধারণ ডেস্কটপ পরিবেশ একটি ডেমন দিয়ে শুরু হয়, যাকে ডিসপ্লে ম্যানেজার বলা হয়, যা একটি গ্রাফিক পরিবেশ শুরু করে যা একটি গ্রাফিকাল সার্ভার নিয়ে গঠিত যা একটি মৌলিক অন্তর্নিহিত গ্রাফিকাল স্ট্যাক এবং একটি লগইন ম্যানেজার প্রদান করে যা শংসাপত্রগুলি প্রবেশ করতে এবং একটি অধিবেশন নির্বাচন করার ক্ষমতা প্রদান করে। ব্যবহারকারী সঠিক শংসাপত্রগুলি প্রবেশ করানোর পরে, সেশন ম্যানেজার একটি অধিবেশন শুরু করে। একটি অধিবেশন হল ইউ. আই উপাদানগুলির (প্যানেল, ডেস্কটপ, অ্যাপলেট ইত্যাদি) মতো প্রোগ্রামগুলির একটি সেট। যা একসঙ্গে একটি সম্পূর্ণ ডেস্কটপ পরিবেশ তৈরি করতে পারে। শাটডাউনে, একটি নিয়ন্ত্রিত পদ্ধতিতে সমস্ত ব্যবহারকারী স্থান কার্যকারিতা বন্ধ করার জন্য init কল করা হয়। একবার অন্যান্য সমস্ত প্রক্রিয়া শেষ হয়ে গেলে, init কার্নেলে একটি সিস্টেম কল করে সিস্টেমটি বন্ধ করার নির্দেশ দেয়। পর্যায় বুট লোডার বুট লোডার পর্যায় কম্পিউটার স্থাপত্যের উপর নির্ভর করে পরিবর্তিত হয়। যেহেতু পূর্ববর্তী পর্যায়গুলি অপারেটিং সিস্টেমের জন্য নির্দিষ্ট নয়, তাই x86 এবং x 86-64 স্থাপত্যের জন্য বায়োস-ভিত্তিক বুট প্রক্রিয়াটি তখনই শুরু বলে মনে করা হয় যখন মাস্টার বুট রেকর্ড (এমবিআর) কোডটি বাস্তব মোডে কার্যকর করা হয় এবং প্রথম পর্যায়ের বুট লোডারটি লোড করা হয়। ইউইএফআই সিস্টেমে, লিনাক্স কার্নেল সরাসরি ইউইএফআই ফার্মওয়্যার দ্বারা ইএফআইএসটিইউবি-এর মাধ্যমে কার্যকর করা যেতে পারে, তবে সাধারণত বুট লোডার হিসাবে জিআরইউবি 2 বা সিস্টেমডি-বুট ব্যবহার করে। নীচে কিছু জনপ্রিয় বুট লোডারের সারসংক্ষেপ দেওয়া হলঃ বিভিন্ন অপারেটিং সিস্টেম এবং স্বয়ংক্রিয় কনফিগারেশনের স্বয়ংক্রিয় সনাক্তকরণে সক্ষম হওয়ার কারণে GRUB 2 GRUB 1 থেকে আলাদা। প্রথম পর্যায়টি মাস্টার বুট রেকর্ড (এম. বি. আর) থেকে বি. আই. ও. এস দ্বারা লোড এবং কার্যকর করা হয়। মধ্যবর্তী পর্যায়ের লোডার (stage1.5, সাধারণত core.img) লোড করা হয় এবং স্টেজ1 লোডার দ্বারা কার্যকর করা হয়। দ্বিতীয় পর্যায়ের লোডার (পর্যায় 2,/বুট/গ্রাব/ফাইল) stage1.5 দ্বারা লোড করা হয় এবং জিআরইউবি স্টার্টআপ মেনু প্রদর্শন করে যা ব্যবহারকারীকে একটি অপারেটিং সিস্টেম বেছে নিতে বা স্টার্টআপ পরামিতিগুলি পরীক্ষা ও সম্পাদনা করতে দেয়। একটি মেনু এন্ট্রি বেছে নেওয়ার পরে এবং ঐচ্ছিক পরামিতিগুলি দেওয়ার পরে, জিআরইউবি লিনাক্স কার্নেলটিকে মেমরিতে লোড করে এবং এতে নিয়ন্ত্রণ প্রেরণ করে। GRUB 2 অন্য বুট লোডারের চেইন-লোডিং করতেও সক্ষম। ইউইএফআই সিস্টেমে, স্টেজ 1 এবং stage1.5 সাধারণত একই ইউইএফআই অ্যাপ্লিকেশন ফাইল (যেমন x64 ইউইএফআই সিস্টেমের জন্য grubx64.efi)। সিস্টেমডি-বুট (পূর্বে গুমিবুট), সিস্টেমডি-র সাথে অন্তর্ভুক্ত একটি বুটলোডার যার জন্য ন্যূনতম কনফিগারেশন প্রয়োজন (শুধুমাত্র ইউইএফআই সিস্টেমের জন্য)। SYSLINUX/ISOLINUX হল একটি বুট লোডার যা FAT ফাইল সিস্টেম থেকে সম্পূর্ণ লিনাক্স ইনস্টলেশন বুট করার ক্ষেত্রে বিশেষজ্ঞ। এটি প্রায়শই বুট বা রেসকিউ ফ্লপি ডিস্ক, লাইভ ইউএসবি এবং অন্যান্য লাইটওয়েট বুট সিস্টেমের জন্য ব্যবহৃত হয়। আইএসওএলআইএনইউএক্স সাধারণত লিনাক্স লাইভ সিডি এবং বুটেবল ইনস্টল সিডি দ্বারা ব্যবহৃত হয়। আরইএফইন্ড, ইউইএফআই সিস্টেমের জন্য একটি বুট ম্যানেজার। কোরবুট হল ইউ. ই. এফ. আই বা বি. আই. ও. এস-এর একটি বিনামূল্যে প্রয়োগ এবং সাধারণত সিস্টেম বোর্ডের সাথে স্থাপন করা হয়, এবং প্রয়োজনে বিক্রেতার দ্বারা প্রদত্ত ক্ষেত্রের আপগ্রেড। কোরবুটের অংশগুলি সিস্টেম বায়োস হয়ে ওঠে এবং বুট করার পরে স্মৃতিতে থাকে। দাস ইউ-বুট হল এমবেডেড সিস্টেমের জন্য একটি বুট লোডার। এটি এমন সিস্টেমে ব্যবহৃত হয় যেখানে বায়োস/ইউইএফআই নেই বরং বুট লোডারকে মেমরিতে পড়তে এবং এটি কার্যকর করার জন্য কাস্টম পদ্ধতি ব্যবহার করে। ঐতিহাসিক বুট লোডার, যা এখন আর সাধারণ ব্যবহারে নেই, তার মধ্যে রয়েছেঃ লিলো ফাইল সিস্টেম বিন্যাস বোঝে না বা বিশ্লেষণ করে না। পরিবর্তে, একটি লাইভ সিস্টেমে একটি কনফিগারেশন ফাইল (/ইত্যাদি/লিলো. কনফ) তৈরি করা হয় যা কার্নেল এবং র্যাম ডিস্কের (initrd বা initramfs) অবস্থান সম্পর্কে কাঁচা অফসেট তথ্য (ম্যাপার টুল) ম্যাপ করে। কনফিগারেশন ফাইল, যার মধ্যে বুট পার্টিশন এবং প্রত্যেকটির জন্য কার্নেল পাথনামের মতো ডেটা রয়েছে, পাশাপাশি প্রয়োজনে কাস্টমাইজড বিকল্পগুলি, তারপর বুটলোডার কোডের সাথে এমবিআর বুটসেক্টরে একসাথে লেখা হয়। যখন এই বুটসেক্টরটি বিআইওএস দ্বারা পড়া এবং নিয়ন্ত্রণ দেওয়া হয়, তখন লিলো মেনু কোডটি লোড করে এবং এটি আঁকে এবং তারপর লিনাক্স কার্নেল বা চেইন-লোড অন্য কোনও বুট-লোডার গণনা এবং লোড করতে ব্যবহারকারীর ইনপুটের সাথে সঞ্চিত মানগুলি ব্যবহার করে। GRUB 1 এর কনফিগারেশন ফাইল অ্যাক্সেস করার জন্য রান-টাইমে সাধারণ ফাইল সিস্টেমগুলি পড়ার যুক্তি অন্তর্ভুক্ত করে। এটি জিআরইউবি 1-কে ফাইল সিস্টেম থেকে তার কনফিগারেশন ফাইলটি এমবিআর-এ এম্বেড করার পরিবর্তে পড়ার ক্ষমতা দেয়, যা এটিকে রান-টাইমে কনফিগারেশন পরিবর্তন করতে এবং অফসেটগুলির উপর নির্ভর করার পরিবর্তে মানব-পঠনযোগ্য বিন্যাসে ডিস্ক এবং পার্টিশনগুলি নির্দিষ্ট করতে দেয়। এতে একটি কমান্ড-লাইন ইন্টারফেসও রয়েছে, যা ভুল কনফিগার বা দূষিত হলে GRUB ঠিক করা বা সংশোধন করা সহজ করে তোলে। লোডলিন হল একটি বুট লোডার যা একটি চলমান ডস বা উইন্ডোজ 9x কার্নেলকে রান টাইমে লিনাক্স কার্নেল দিয়ে প্রতিস্থাপন করতে পারে। এটি এমন হার্ডওয়্যারের ক্ষেত্রে কার্যকর হতে পারে যা সফ্টওয়্যারের মাধ্যমে চালু করা প্রয়োজন এবং যার জন্য এই ধরনের কনফিগারেশন প্রোগ্রামগুলি মালিকানাধীন এবং শুধুমাত্র ডস-এর জন্য উপলব্ধ। এই বুটিং পদ্ধতির আজকাল কম প্রয়োজন, কারণ লিনাক্সে প্রচুর হার্ডওয়্যার ডিভাইসের জন্য ড্রাইভার রয়েছে, তবে এটি মোবাইল ডিভাইসে কিছু ব্যবহার দেখেছে। আরেকটি ব্যবহার হল যখন লিনাক্স একটি স্টোরেজ ডিভাইসে অবস্থিত থাকে যা বুট করার জন্য বিআইওএস-এর কাছে উপলব্ধ নয়ঃ ডস বা উইন্ডোজ বিআইওএস সীমাবদ্ধতার জন্য উপযুক্ত ড্রাইভারগুলি লোড করতে পারে এবং সেখান থেকে লিনাক্স বুট করতে পারে। কার্নেল লিনাক্স কার্নেল মেমোরি ম্যানেজমেন্ট, টাস্ক সিডিউলিং, আই/ও, আন্তঃপ্রক্রিয়া যোগাযোগ এবং সামগ্রিক সিস্টেম নিয়ন্ত্রণের মতো সমস্ত অপারেটিং সিস্টেম প্রক্রিয়া পরিচালনা করে। এটি দুটি পর্যায়ে লোড করা হয়-প্রথম পর্যায়ে, কার্নেল (একটি সংকুচিত চিত্র ফাইল হিসাবে) মেমরিতে লোড করা হয় এবং ডিকম্প্রেস করা হয়, এবং মৌলিক মেমরি পরিচালনার মতো কয়েকটি মৌলিক ফাংশন সেট আপ করা হয়। এরপরে নিয়ন্ত্রণটি শেষবারের মতো মূল কার্নেল শুরু প্রক্রিয়ায় স্যুইচ করা হয়। একবার কার্নেল সম্পূর্ণরূপে কার্যকরী হয়ে গেলে-এবং তার শুরুর অংশ হিসাবে, লোড এবং কার্যকর হওয়ার পরে-কার্নেলটি চালানোর জন্য একটি init প্রক্রিয়া সন্ধান করে, যা (পৃথকভাবে) একটি ব্যবহারকারীর স্থান এবং ব্যবহারকারীর পরিবেশ এবং চূড়ান্ত লগইনের জন্য প্রয়োজনীয় প্রক্রিয়াগুলি সেট করে। অন্যান্য প্রক্রিয়া থেকে কল সাপেক্ষে, কার্নেলটি নিজেই নিষ্ক্রিয় হতে দেওয়া হয়। কিছু প্ল্যাটফর্মের জন্য (যেমন এআরএম 64-বিট), পরিবর্তে বুট লোডার দ্বারা কার্নেল ডিকম্প্রেশন সম্পাদন করতে হয়। কার্নেলটি সাধারণত একটি ইমেজ ফাইল হিসাবে লোড করা হয়, যা zlib দিয়ে zImage বা bzImage বিন্যাসে সংকুচিত হয়। এর শীর্ষে একটি রুটিন ন্যূনতম পরিমাণে হার্ডওয়্যার সেটআপ করে, চিত্রটিকে সম্পূর্ণরূপে উচ্চ মেমরিতে ডিকম্প্রেস করে এবং কনফিগার করা থাকলে যে কোনও র্যাম ডিস্কের নোট নেয়। এরপরে এটি./arch/i386/boot/head এর মাধ্যমে কার্নেল স্টার্টআপ এবং স্টার্টআপ _ 32 () (x86 ভিত্তিক প্রসেসরের জন্য) প্রক্রিয়াটি কার্যকর করে। কার্নেলের জন্য স্টার্টআপ ফাংশন (সোয়াপার বা প্রসেস 0 নামেও পরিচিত) মেমরি ম্যানেজমেন্ট (পেজিং টেবিল এবং মেমরি পেজিং) প্রতিষ্ঠা করে, সিপিইউ-এর ধরন এবং ফ্লোটিং পয়েন্ট ক্ষমতার মতো কোনও অতিরিক্ত কার্যকারিতা সনাক্ত করে এবং তারপরে স্টার্ট _ কার্নেল () কলের মাধ্যমে অ-স্থাপত্য নির্দিষ্ট লিনাক্স কার্নেল কার্যকারিতায় স্যুইচ করে। স্টার্ট _ কার্নেল বিভিন্ন ধরনের প্রারম্ভিক ফাংশন সম্পাদন করে। এটি ইন্টারাপ্ট হ্যান্ডলিং (আইআরকিউ) সেট আপ করে, মেমোরি আরও কনফিগার করে, ইনিশিয়াল প্রসেস (প্রথম ইউজার-স্পেস প্রসেস) শুরু করে এবং তারপর সিপিইউ _ আইডল () এর মাধ্যমে নিষ্ক্রিয় কাজ শুরু করে। উল্লেখযোগ্যভাবে, কার্নেল স্টার্টআপ প্রক্রিয়াটি প্রাথমিক র্যাম ডিস্ক ("initrd") মাউন্ট করে যা আগে বুট পর্যায়ে অস্থায়ী রুট ফাইল সিস্টেম হিসাবে লোড করা হয়েছিল। initrd ড্রাইভার মডিউলগুলিকে অন্যান্য ডিভাইসের উপর নির্ভর না করে সরাসরি মেমরি থেকে লোড করার অনুমতি দেয় (যেমন। একটি হার্ড ডিস্ক) এবং এগুলি অ্যাক্সেস করার জন্য প্রয়োজনীয় ড্রাইভারগুলি (যেমন। একজন সাটা ড্রাইভার)। কার্নেলে স্থিরভাবে সংকলিত কিছু ড্রাইভারের এই বিভাজন এবং initrd থেকে লোড করা অন্যান্য ড্রাইভারগুলি একটি ছোট কার্নেলের অনুমতি দেয়। রুট ফাইল সিস্টেমটি পরে একটি কলের মাধ্যমে পিভট _ রুট ()-এ স্যুইচ করা হয় যা অস্থায়ী রুট ফাইল সিস্টেমটিকে আনমাউন্ট করে এবং পরেরটি অ্যাক্সেসযোগ্য হওয়ার পরে এটিকে আসলটির ব্যবহারের সাথে প্রতিস্থাপন করে। অস্থায়ী রুট ফাইল সিস্টেম দ্বারা ব্যবহৃত মেমোরি তারপর পুনরুদ্ধার করা হয়। এইভাবে, কার্নেল ডিভাইসগুলিকে সূচনা করে, বুট লোডার দ্বারা নির্দিষ্ট রুট ফাইল সিস্টেমকে শুধুমাত্র পঠনযোগ্য হিসাবে মাউন্ট করে এবং ইনিট (/sbin/init) চালায় যা সিস্টেম দ্বারা পরিচালিত প্রথম প্রক্রিয়া হিসাবে মনোনীত করা হয় (পিআইডি = 1)। ফাইল সিস্টেমটি মাউন্ট করার পরে এবং ইনিশিয়াল প্রক্রিয়া শুরু করার পরে কার্নেল দ্বারা একটি বার্তা মুদ্রিত হয়। রুট ফাইল সিস্টেম বসানোর আগে সেটআপ এবং ডিভাইস সম্পর্কিত বিষয়গুলি (র্যাম ডিস্ক বা অনুরূপ) পরিচালনা করার অনুমতি দেওয়ার জন্য এটি ঐচ্ছিকভাবে ইনিটার্ডও চালাতে পারে। রেড হ্যাটের মতে, এই পর্যায়ে বিস্তারিত কার্নেল প্রক্রিয়াটি নিম্নরূপ সংক্ষিপ্ত করা হয়েছেঃ "যখন কার্নেলটি লোড করা হয়, তখন এটি অবিলম্বে কম্পিউটারের মেমোরি শুরু করে এবং কনফিগার করে এবং সমস্ত প্রসেসর, আই/ও সাবসিস্টেম এবং স্টোরেজ ডিভাইস সহ সিস্টেমের সাথে সংযুক্ত বিভিন্ন হার্ডওয়্যার কনফিগার করে। এরপরে এটি মেমরিতে একটি পূর্বনির্ধারিত স্থানে সংকুচিত initrd চিত্রটি সন্ধান করে, এটিকে ডিকম্প্রেস করে, মাউন্ট করে এবং সমস্ত প্রয়োজনীয় ড্রাইভার লোড করে। এরপরে, এটি ফাইল সিস্টেমের সাথে সম্পর্কিত ভার্চ্যুয়াল ডিভাইসগুলি, যেমন এলভিএম বা সফ্টওয়্যার রেইড-কে আরম্ভ করে initrd ডিস্ক চিত্রটি আনমাউন্ট করার আগে এবং একবার দখল করা ডিস্ক চিত্রের সমস্ত মেমোরি মুক্ত করার আগে। কার্নেল তারপর একটি মূল যন্ত্র তৈরি করে, মূল বিভাজনকে কেবল পঠনযোগ্য করে মাউন্ট করে এবং যে কোনও অব্যবহৃত মেমোরি মুক্ত করে। এই সময়ে, কার্নেলটি মেমরিতে লোড করা হয় এবং কার্যকরী হয়। তবে, যেহেতু এমন কোনও ব্যবহারকারী অ্যাপ্লিকেশন নেই যা সিস্টেমে অর্থপূর্ণ ইনপুট দেয়, তাই এটি দিয়ে খুব বেশি কিছু করা যায় না। একটি initramfs-শৈলী বুট অনুরূপ, কিন্তু বর্ণিত initrd বুটের অনুরূপ নয়। এই মুহুর্তে, ইন্টারাপ্টগুলি সক্ষম করার সাথে সাথে, সময় নির্ধারক সিস্টেমের সামগ্রিক ব্যবস্থাপনার নিয়ন্ত্রণ নিতে পারে, প্রি-এম্পটিভ মাল্টি-টাস্কিং প্রদান করতে পারে এবং ব্যবহারকারীর জায়গায় ব্যবহারকারীর পরিবেশ বুট করা চালিয়ে যাওয়ার জন্য init প্রক্রিয়াটি ছেড়ে দেওয়া হয়। প্রারম্ভিক ব্যবহারকারী স্থান initramfs, যা প্রাথমিক ব্যবহারকারী স্থান নামেও পরিচিত, লিনাক্স কার্নেলের সংস্করণ 2.5.46 থেকে উপলব্ধ, যতটা সম্ভব ফাংশন প্রতিস্থাপনের অভিপ্রায় নিয়ে যা আগে কার্নেলটি স্টার্টআপ প্রক্রিয়া চলাকালীন সম্পাদন করত। প্রাথমিক ব্যবহারকারী স্থানের সাধারণ ব্যবহারগুলি হল প্রধান ব্যবহারকারী স্থান ফাইল সিস্টেমটি লোড করতে এবং একটি অস্থায়ী ফাইল সিস্টেম থেকে লোড করতে কোন ডিভাইস ড্রাইভারগুলির প্রয়োজন তা সনাক্ত করা। অনেক ডিস্ট্রিবিউশন initramfs ইমেজ তৈরি এবং রক্ষণাবেক্ষণের জন্য ড্রাকট ব্যবহার করে। প্রাথমিক প্রক্রিয়া একবার কার্নেল শুরু হয়ে গেলে, এটি init প্রক্রিয়া শুরু করে, একটি ডেমন যা তারপর ব্যবহারকারীর স্থান বুটস্ট্র্যাপ করে, উদাহরণস্বরূপ ফাইল সিস্টেমগুলি পরীক্ষা এবং মাউন্ট করে এবং অন্যান্য প্রক্রিয়াগুলি শুরু করে। init সিস্টেম হল প্রথম ডেমন যা শুরু হয় (বুট করার সময়) এবং শেষ ডেমন যা শেষ হয় (শাটডাউনের সময়)। ঐতিহাসিকভাবে এটি ছিল "SysV init", যাকে কেবল "init" বলা হত। আরও সাম্প্রতিক লিনাক্স ডিস্ট্রিবিউশনগুলি সম্ভবত সিস্টেমডি-এর মতো আরও আধুনিক বিকল্পগুলির মধ্যে একটি ব্যবহার করতে পারে। নীচে প্রধান init প্রক্রিয়াগুলির একটি সারসংক্ষেপ রয়েছেঃ SysV init (সহজভাবে "init") ইউনিক্স এবং বিএসডি init প্রক্রিয়াগুলির অনুরূপ, যেখান থেকে এটি উদ্ভূত হয়েছে। একটি স্ট্যান্ডার্ড লিনাক্স সিস্টেমে, init একটি পরামিতি দিয়ে কার্যকর করা হয়, যা রানলেভাল নামে পরিচিত, যা 0 থেকে 6 পর্যন্ত মান নেয় এবং নির্ধারণ করে যে কোন সাবসিস্টেমগুলি কার্যকর করা হয়েছে। প্রতিটি রানলেভেলের নিজস্ব স্ক্রিপ্ট রয়েছে যা প্রদত্ত রানলেভেল স্থাপন বা ছাড়ার সাথে জড়িত বিভিন্ন প্রক্রিয়াকে সংহিতাবদ্ধ করে এবং এই স্ক্রিপ্টগুলিই বুট প্রক্রিয়ায় প্রয়োজনীয় হিসাবে উল্লেখ করা হয়। প্রাথমিক স্ক্রিপ্টগুলি সাধারণত "/ইত্যাদি/আরসি" এর মতো নাম সহ ডিরেক্টরিতে রাখা হয়। init-এর জন্য শীর্ষ স্তরের কনফিগারেশন ফাইল হল/et/inittab। সিস্টেম বুট করার সময়, এটি/ইত্যাদি/inittab-এ একটি ডিফল্ট রানলেভেল নির্দিষ্ট করা আছে কিনা তা পরীক্ষা করে এবং না থাকলে রানলেভেলকে সিস্টেম কনসোলের মাধ্যমে প্রবেশ করার অনুরোধ করে। এরপরে এটি প্রদত্ত রানলেভেলের জন্য সমস্ত প্রাসঙ্গিক বুট স্ক্রিপ্টগুলি চালাতে এগিয়ে যায়, যার মধ্যে রয়েছে লোডিং মডিউল, রুট ফাইল সিস্টেমের অখণ্ডতা পরীক্ষা করা (যা কেবল-পড়ার জন্য মাউন্ট করা হয়েছিল) এবং তারপরে সম্পূর্ণ পঠন-লেখার অ্যাক্সেসের জন্য এটি পুনরায় মাউন্ট করা এবং নেটওয়ার্ক সেট আপ করা। এটি নির্দিষ্ট সমস্ত প্রক্রিয়া তৈরি করার পরে, init সুপ্ত হয়ে যায় এবং তিনটি ঘটনার মধ্যে একটি ঘটার জন্য অপেক্ষা করেঃ যে প্রক্রিয়াগুলি শেষ হতে বা মরতে শুরু করে, একটি বিদ্যুৎ ব্যর্থতার সংকেত, বা/sbin/tilinit-এর মাধ্যমে রানলেভেল আরও পরিবর্তন করার অনুরোধ। সিস্টেমডি হল SysV init-এর একটি আধুনিক বিকল্প। init-এর মতো, systemd হল একটি ডেমন যা অন্যান্য ডেমন পরিচালনা করে। সিস্টেমড সহ সমস্ত ডেমন হল পটভূমি প্রক্রিয়া। লেনার্ট পোয়েটারিং এবং কে সিভার্স, সফ্টওয়্যার ইঞ্জিনিয়ার যারা প্রাথমিকভাবে সিস্টেমড তৈরি করেছিলেন, বিভিন্ন উপায়ে init ডেমনটির দক্ষতাকে অতিক্রম করার চেষ্টা করেছিলেন। তারা নির্ভরতা প্রকাশের জন্য সফ্টওয়্যার কাঠামো উন্নত করতে চেয়েছিল, যাতে সিস্টেম বুট করার সময় সমান্তরালভাবে আরও প্রক্রিয়াকরণ করা যায় এবং শেলের গণনামূলক ওভারহেড হ্রাস করা যায়। প্রতিটি ডেমন-এর জন্য সিস্টেমডি-এর সূচনা নির্দেশাবলী একটি শেল স্ক্রিপ্টের পরিবর্তে একটি ঘোষণাত্মক কনফিগারেশন ফাইলে রেকর্ড করা হয়। আন্তঃপ্রক্রিয়া যোগাযোগের জন্য, সিস্টেমডি ইউনিক্স ডোমেইন সকেট এবং ডি-বাসকে চলমান ডেমনদের জন্য উপলব্ধ করে। সিস্টেমড আক্রমণাত্মক সমান্তরালকরণেও সক্ষম। আরও দেখুন উইন্ডোজ রেফারেন্সের এসওয়াইএসএলআইএনইউএক্স বুটিং প্রক্রিয়া বাহ্যিক লিঙ্কগুলি এম টিম জোন্স বুটচার্টঃ বুট প্রসেস পারফরম্যান্স ভিজ্যুয়ালাইজেশন ইএফআই সিস্টেমে বুটস্ট্র্যাপ প্রক্রিয়া, ম্যাট ফ্লেমিং বুটিং প্রক্রিয়া লিনাক্স কার্নেল