কभी লিনাক্সের, একটি ওপেন-সোর্স অপারেটিং সিস্টেমের, বিভিন্ন স্টেজের বিষয়ে কৌতূহলী হয়েছেন? পুরো বুট প্রসেস জানা আপনাকে ইস্যু ট্রাবলশুট করতে সাহায্য করতে পারে — বিশেষ করে আপনি যদি অ্যাডমিনিস্ট্রেটর হন।
আপনার ডিভাইস পাওয়ার অন করার পেছনে কী ঘটে? পড়তে থাকুন জানতে।
BIOS
Basic Input/Output System (BIOS) হলো একটি লো-লেভেল ফার্মওয়্যার যা আপনার কম্পিউটারের মাদারবোর্ডে একটি ছোট মেমরি চিপে স্টোরড থাকে। এই ফার্মওয়্যার স্টার্ট-আপ প্রসেসে সাহায্য করে এবং আপনার মেশিন এবং অন্যান্য কানেক্টেড ডিভাইসের মাঝপথে ডেটা ফ্লো ম্যানেজ করে, যেন মাউস, প্রিন্টার এবং ভিডিও অ্যাডাপ্টার।
BIOS-এর প্রাইমারি ফাংশন, উপরে দেখানো, হলো Power-On Self Test (POST) রান করা। এই টেস্ট সিস্টেম হার্ডওয়্যারের অপারেবিলিটি ভেরিফাই করে এবং বুট সেক্টর খুঁজে বের করে, যেটি বাকি প্রসেসের জন্য জরুরি সফটওয়্যার ধারণ করে। POST যদি সফল হয়, BIOS পরবর্তী ধাপ, Stage One Boot Loader, সিস্টেমের RAM-এ লোড করবে।
POST যদি সফল না হয়, BIOS একটি কোড রিটার্ন করবে যা আপনি ট্রাবলশুটিংয়ে ব্যবহার করতে পারেন।
Stage One Boot Loader
বুট লোডারের প্রথম স্টেজ — যাকে Master Boot Record (MBR) বা Guided Partition Table (GPT) বলা হয় — প্রোগ্রামকে অনলাইন আনার জন্য ডিজাইন করা হয়।
MBR একটি সিম্পল সফটওয়্যার যেটার কোনো বিল্ট-ইন আন্ডারস্ট্যান্ডিং নেই ফাইল সিস্টেমের। ফলস্বরূপ, আপনাকে সবসময় স্টেজ টু বুট লোডার MBR এবং হার্ড ড্রাইভের প্রথম পার্টিশনের মাঝপথে স্টোর করতে হবে।
MBR একবার স্টেজ টু বুট লোডার ডিটেক্ট করলে, কন্ট্রোল হস্তান্তর করে।
Stage Two Boot Loader
স্টেজ টু বুট লোডারের কাজ হলো কার্নেল খুঁজে বের করা এবং মেমরিতে লোড করা।
অধিকাংশ লিনাক্স ডিস্ট্রিবিউশন তিনটি ভিন্ন বুট লোডার ব্যবহায় করে — GRUB, GRUB2 বা LILO। আপনি সবচেয়ে সম্ভবত GRUB2 দেখবেন, নিচে চিত্রিত, যেহেতু এটি সবচেয়ে নতুন।
বুট লোডার একবার একটি কার্নেল খুঁজে পেলে এবং মেমরিতে লোড করলে, কন্ট্রোল হস্তান্তর করে। এটিও আপনার ডিভাইসের ফাইল সিস্টেমের একটি ইমেজ পাঠায় যা কার্নেল ব্যবহার করতে পারে মডিউলগুলো খুঁজে বের করতে।
কার্নেল
যেহেতু সকল কার্নেল কমপ্রেসড ফরম্যাটে অস্তিত্ব বজায় রাখে হার্ড ড্রাইভ স্পেস বাঁচাতে, কন্ট্রোল পাওয়ার মात्र এটি প্রথমে সেলফ-এক্সট্র্যাক্ট করবে। তারপর এটি বুট লোডার থেকে পাওয়া ফাইল সিস্টেমের ইমেজ ভার্সন মাউন্ট করবে।
কার্নেল সিস্টেমের হার্ডওয়্যার ডিটেক্ট করবে এবং ইমেজকে ডিস্কের রুট ফাইলে সুইপ 오ভার করবে।
init (systemd)
এরপর, কার্নেল ইনিশিয়ালাইজেশন (init) সিস্টেম শুরু করবে — প্রথম প্রসেস যা বুটিং প্রসেসের জন্য জরুরি সকল প্রসেস স্পাউন করে। অধিকাংশ সিস্টেমে, এটি systemd হবে।
Systemd-এর প্রাইমারি ফাংশন হলো সকল ডেমন — ব্যাকগ্রাউন্ড প্রসেস এবং সার্ভিস — লঞ্চ করা যা সিস্টেম চালানোর জন্য জরুরি। এই সার্ভিসগুলো ইনিশিয়ালাইজেশনের পরেও চলতে থাকবে এবং এসেনশিয়াল সিস্টেম প্রসেস ম্যানেজ করবে যেন বিভিন্ন সিস্টেম মেসেজ লগিং, ডিভাইস ট্র্যাক রাখা, এবং ফাইল সিস্টেম সিস্টেম মেমরির সাথে সিঙ্ক্রোনাইজড থাকে।
আপনি যদি কৌতূহলী হন systemd কী সার্ভিসগুলো রান করছে, systemctl কমান্ড নিজে দিয়ে রান করলে একটি ফুল লিস্ট রিটার্ন করবে।
আপনি systemd ব্যবহার করেও বুটে অন্যান্য সার্ভিস শুরু করতে পারেন systemctl কমান্ড এবং আপনি যে সার্ভিস শুরু করতে চান সেটির কম্বিনেশন দিয়ে। উদাহরণস্বরূপ, আপনি যদি চান সিস্টেম NFS-এর স্ট্যাটাস চেক করে, আপনি লিখতে পারেন systemctl status nfs-server.service। আপনি start, stop, enable বা disable একটি সার্ভিস systemctl এবং সেগুলোর একটা দিয়ে কম্বাইন করে।
Runlevel
Run level INIT-এর একটি স্টেট, এবং আপনার সিস্টেম ডিফাইন করে কী সার্ভিসগুলো রান করছে। স্ট্যান্ডার্ড লিনাক্স কার্নেল সাতটি ভিন্ন রানলেভেল সাপোর্ট করে:
- 0: সিস্টেম হল্ট, পাওয়ার অফ হওয়ার জন্য রেডি
- 1: সিঙ্গেল ইউজার মোড
- 2: মাল্টিপল ইউজার মোড, নো নেটওয়ার্ক ফাইল সিস্টেম
- 3: মাল্টিপল ইউজার মোড, কমান্ড লাইন ইন্টারফেস ব্যবহার করে গ্রাফিক্যাল ইউজার ইন্টারফেসের বদলে
- 4: ইউজার-ডিফাইনড
- 5: মাল্টিপল ইউজার মোড, গ্রাফিক্যাল ইউজার ইন্টারফেস ব্যবহার করে যা অধিকাংশ লিনাক্স সিস্টেম ডিফল্টলি বুটInto করে
- 6: রিবুট
আপনি যদি কোনো কারণে রানলেভেল পরিবর্তন করতে চান, INIT telinit কমান্ড দিয়ে সেটি পরিবর্তন করার জন্য দায়বদ্ধ, উপরে দেখানো।
বুট প্রসেস ব্রেকডাউন
এই ব্রেকডাউন মাত্র লিনাক্স বুট প্রসেসের একটি ওভারভিউ এবং কিছু ফাইনার ডিটেইল বাদ দিয়েছে। তবে, এটি আপনাকে যে ইনফরমেশন দরকার সেটি দিতে পারে যেকোনো সমস্যা ট্রাবলশুট করতে যা আপনি মুখোমুখি হতে পারেন।