মৌলিক

লিনাক্স কী: কার্নেল, ডিস্ট্রিবিউশন ও ফাইল সিস্টেম সহজ ভাষায়

হালনাগাদ: · Skillaria.Top

লিনাক্স হলো ওপেন সোর্স অপারেটিং সিস্টেমের কার্নেল, যা প্রসেসর, মেমরি, ডিস্ক ও নেটওয়ার্ক নিয়ন্ত্রণ করে; ইউটিলিটি, প্যাকেজ ম্যানেজার ও ইনিশিয়ালাইজেশন সিস্টেমসহ কার্নেল মিলে তৈরি হয় Ubuntu, Debian বা Fedora-এর মতো ডিস্ট্রিবিউশন। লিনাক্স বেশিরভাগ সার্ভার, কন্টেইনার ও ক্লাউডে চলে, তাই এতে কাজ করার দক্ষতা DevOps ইঞ্জিনিয়ার ও সিস্টেম অ্যাডমিনিস্ট্রেটরের মৌলিক প্রয়োজন।

লিনাক্স হলো ওপেন সোর্স অপারেটিং সিস্টেমের কার্নেল, যার ওপর ভিত্তি করে সার্ভার, ডেস্কটপ ও এমবেডেড ডিভাইসের পূর্ণাঙ্গ সিস্টেম গড়ে ওঠে। "লিনাক্স সার্ভার" বললে সাধারণত একটি একক প্রোগ্রাম বোঝানো হয় না, বরং বোঝানো হয় একটি ডিস্ট্রিবিউশন: কার্নেলের সঙ্গে ইউটিলিটি, লাইব্রেরি, প্যাকেজ ম্যানেজার ও ইনিশিয়ালাইজেশন সিস্টেমের একটি সেট। চলুন দেখি লিনাক্স আসলে কী, এর উপাদান কী কী, এবং প্রায় প্রতিটি DevOps ইঞ্জিনিয়ারের কেন এটি দরকার।

লিনাক্স হলো কার্নেল, পুরো সিস্টেম নয়

কঠোরভাবে বললে, লিনাক্স শুধু কার্নেল। কার্নেল হলো সেই প্রোগ্রাম যা বুটলোডারের পরেই প্রথম চালু হয় এবং কম্পিউটার চালু থাকা পর্যন্ত মেমরিতে থাকে। এটি প্রসেসরের সময় প্রসেসগুলোর মধ্যে ভাগ করে, মেমরি বরাদ্দ করে, ড্রাইভারের মাধ্যমে ডিস্ক ও নেটওয়ার্ক কার্ডের সঙ্গে কাজ করে এবং অ্যাক্সেসের অনুমতি নিয়ন্ত্রণ করে।

সাধারণ প্রোগ্রাম হার্ডওয়্যারের সঙ্গে সরাসরি যোগাযোগ করে না। কোনো এডিটর ফাইল সেভ করার সময় সিস্টেম কল (open, write, close) পাঠায়, আর কার্নেল ঠিক করে কোন ডিস্ক ব্লকে লেখা হবে এবং প্রসেসের সেই অধিকার আছে কি না। এই বিভাজনের কারণে সিস্টেম স্থিতিশীল থাকে: একটি প্রোগ্রাম ক্র্যাশ করলেও পুরো কম্পিউটার বন্ধ হয়ে যায় না।

কার্নেলের সংস্করণ এক কমান্ডেই দেখা যায়:

$ uname -r
6.8.0-45-generic

১৯৯১ সালে লিনাস টরভাল্ডস কার্নেলটি তৈরি করেন, এবং তখন থেকে এটি উন্মুক্তভাবে বিকশিত হচ্ছে: এর সোর্স কোড GNU GPL সংস্করণ ২ লাইসেন্সের অধীনে আছে, তাই যে কেউ একই শর্তে এটি পড়তে, বদলাতে ও বিতরণ করতে পারে।

লিনাক্স ডিস্ট্রিবিউশন কী

শুধু কার্নেল যথেষ্ট নয়: কমান্ড লেখার জন্য শেল, ফাইল নিয়ন্ত্রণের ইউটিলিটি, লাইব্রেরি এবং প্রোগ্রাম ইনস্টলার দরকার। মৌলিক ইউটিলিটির (ls, cp, bash, grep) বেশিরভাগ এসেছে GNU প্রকল্প থেকে, তাই এই সিস্টেমকে অনেক সময় GNU/Linux বলা হয়। কার্নেল ও এই সমস্ত উপাদান একসঙ্গে সংকলিত ও পরীক্ষিত হয়ে যে প্যাকেজ তৈরি হয়, তাকে ডিস্ট্রিবিউশন বলে।

ডিস্ট্রিবিউশনগুলোর পার্থক্য মূলত প্যাকেজ ম্যানেজার, আপডেট নীতি ও লক্ষ্য ব্যবহারকারীর ওপর নির্ভর করে।

পরিবারউদাহরণপ্যাকেজকোথায় দেখা যায়
DebianDebian, Ubuntu, Linux Mint.deb, aptসার্ভার, ক্লাউড, ওয়ার্কস্টেশন
Red HatRHEL, Fedora, Rocky Linux, AlmaLinux.rpm, dnfএন্টারপ্রাইজ সার্ভার
AlpineAlpine Linuxapkছোট আকারের Docker ইমেজ
ArchArch Linux, Manjaropacmanউৎসাহী ব্যবহারকারী, নতুন প্যাকেজ সংস্করণ

আপনার ডিস্ট্রিবিউশন কোনটি, তা জানা যায় /etc/os-release ফাইল থেকে:

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
ID=ubuntu
ID_LIKE=debian

শেখা ও সার্ভারের জন্য সবচেয়ে বেশি ব্যবহৃত পছন্দ হলো Ubuntu LTS বা Debian: এদের ডকুমেন্টেশন প্রচুর, এবং ইন্টারনেটের নির্দেশনার কমান্ড প্রায় সব সময় কোনো পরিবর্তন ছাড়াই কাজ করে।

সিস্টেম কীভাবে সাজানো: কার্নেল, শেল, ইউজার স্পেস

লিনাক্সকে স্তর হিসেবে ভাবা সহজ। সবচেয়ে নিচে হার্ডওয়্যার। তার ওপরে কার্নেল। আরও ওপরে ইউজার স্পেস: সিস্টেম সার্ভিস, লাইব্রেরি (যেমন glibc) এবং প্রোগ্রাম। মানুষ ও সিস্টেমের মাঝখানে থাকে শেল, সাধারণত bash, যা কমান্ড গ্রহণ করে এবং প্রোগ্রাম চালায়।

  • কার্নেল — প্রসেস, মেমরি, ফাইল সিস্টেম, নেটওয়ার্ক, ড্রাইভার।
  • ইনিশিয়ালাইজেশন সিস্টেম — PID 1 নম্বরের প্রথম প্রসেস; বেশিরভাগ আধুনিক ডিস্ট্রিবিউশনে এটি systemd। এটি অন্যান্য সার্ভিস চালু করে।
  • সার্ভিস (ডেমন) — ওয়েব সার্ভার, SSH সার্ভার, cron, লগিং।
  • শেল ও ইউটিলিটি — টার্মিনালে যা নিয়ে আপনি কাজ করেন।

সার্ভারে সাধারণত কোনো গ্রাফিক্যাল ইন্টারফেস থাকে না: অ্যাডমিনিস্ট্রেটর SSH-এর মাধ্যমে যুক্ত হয়ে কমান্ড লাইনে কাজ করেন। তাই লিনাক্স শেখা মূলত টার্মিনাল শেখা।

লিনাক্স ফাইল সিস্টেম: সব শুরু হয় / থেকে

লিনাক্সে C: বা D: ড্রাইভ নেই। আছে একটি ডিরেক্টরি ট্রি, যার শুরু রুট — /। সব ডিস্ক, ফ্ল্যাশ ড্রাইভ ও নেটওয়ার্ক ফোল্ডার এই ট্রির কোনো ডিরেক্টরিতে মাউন্ট করা হয়। আরেকটি নীতি: লিনাক্সে প্রায় সবকিছুই ফাইল হিসেবে দেখানো হয় — সাধারণ ফাইল, ডিরেক্টরি, ডিভাইস, এমনকি প্রসেসের তথ্যও।

$ ls /
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

ডিরেক্টরিগুলোর অবস্থান FHS (Filesystem Hierarchy Standard) মান অনুযায়ী ঠিক করা, তাই যেকোনো ডিস্ট্রিবিউশনে কনফিগ ফাইল প্রায় একই জায়গায় থাকে।

ডিরেক্টরিযা থাকে
/etcসিস্টেম ও সার্ভিসের কনফিগারেশন: /etc/passwd, /etc/ssh/sshd_config, /etc/fstab
/homeব্যবহারকারীদের হোম ডিরেক্টরি: /home/alice
/rootসুপারইউজার root-এর হোম ডিরেক্টরি
/varপরিবর্তনশীল ডেটা: /var/log-এ লগ, প্যাকেজ ক্যাশ, ডেটাবেস, মেইল কিউ
/usrইনস্টল করা প্রোগ্রাম ও লাইব্রেরি: /usr/bin, /usr/lib
/bin, /sbinমৌলিক কমান্ড; আধুনিক ডিস্ট্রিবিউশনে এগুলো /usr/bin ও /usr/sbin-এর লিংক
/bootকার্নেল (vmlinuz-*), initramfs ও বুটলোডারের ফাইল
/devডিভাইস ফাইল: /dev/sda, /dev/null
/proc, /sysভার্চুয়াল ফাইল সিস্টেম: এর মাধ্যমে কার্নেল প্রসেস ও সেটিংস দেখায়
/tmpঅস্থায়ী ফাইল, রিবুটে প্রায়ই মুছে যায়
/optতৃতীয় পক্ষের সম্পূর্ণ প্যাকেজ করা প্রোগ্রাম
/mnt, /mediaডিস্ক ও অপসারণযোগ্য মিডিয়ার মাউন্ট পয়েন্ট

অ্যাবসোলিউট ও রিলেটিভ পাথ

অ্যাবসোলিউট পাথ / দিয়ে শুরু হয় এবং আপনি এখন কোথায় আছেন তার ওপর নির্ভর করে না: /var/log/syslog। রিলেটিভ পাথ বর্তমান ডিরেক্টরি থেকে গণনা করা হয়: ../logs/app.log। বিন্দু . বর্তমান ডিরেক্টরি, দুটি বিন্দু .. প্যারেন্ট ডিরেক্টরি, আর টিলড ~ আপনার হোম ডিরেক্টরি।

$ pwd
/home/alice
$ cd /var/log
$ cd ..
$ pwd
/var
$ cd ~
$ pwd
/home/alice

/proc: সিস্টেম একগুচ্ছ ফাইল হিসেবে

/proc ডিস্কে সংরক্ষিত থাকে না — কার্নেল এটি চাহিদামতো তৈরি করে। যেমন cat /proc/cpuinfo প্রসেসর দেখায়, cat /proc/meminfo মেমরি দেখায়, এবং প্রতিটি প্রসেসের জন্য /proc/<PID> ডিরেক্টরিতে তার কমান্ড লাইন ও খোলা ফাইল থাকে। ps ও top-এর মতো অনেক ইউটিলিটি আসলে এই ফাইলগুলোই পড়ে।

মাউন্ট

df -h দেখায় কোন ফাইল সিস্টেম কোথায় মাউন্ট করা আছে এবং কতটা জায়গা খালি:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        40G   12G   26G  32% /
/dev/sda1       1.1G  6.1M  1.1G   1% /boot/efi
tmpfs           393M  1.2M  392M   1% /run

স্থায়ী মাউন্ট পয়েন্ট /etc/fstab-এ লেখা থাকে — সিস্টেম বুটের সময় এই ফাইল পড়ে।

লিনাক্স কীভাবে বুট হয়: চালু হওয়া থেকে লগইন পর্যন্ত

বুট প্রক্রিয়া বোঝা থাকলে রিবুটের পর সার্ভার "উঠতে না চাইলে" সমস্যা খুঁজতে সুবিধা হয়। সংক্ষেপে ধারাটি এমন:

  1. ফার্মওয়্যার (UEFI বা BIOS) হার্ডওয়্যার পরীক্ষা করে এবং বুটলোডার খোঁজে।
  2. GRUB বুটলোডার মেনু দেখায় এবং /boot থেকে কার্নেল ও initramfs মেমরিতে লোড করে।
  3. কার্নেল হার্ডওয়্যার চালু করে এবং initramfs-এর সাহায্যে রুট ফাইল সিস্টেম খুঁজে মাউন্ট করে।
  4. systemd PID 1 হিসেবে চালু হয় এবং সঠিক ক্রমে সার্ভিস শুরু করে: নেটওয়ার্ক, লগ, SSH, cron ও অন্যান্য।
  5. লগইন প্রম্পট কনসোলে বা SSH-এর মাধ্যমে দেখা যায়।

বুটের সময় কার্নেলের বার্তা দেখা যায় sudo dmesg বা journalctl -k দিয়ে, আর প্রতিটি ধাপের সময় দেখা যায় systemd-analyze দিয়ে।

ব্যবহারকারী ও অধিকার — অন্তর্নির্মিত সুরক্ষা

লিনাক্স শুরু থেকেই একাধিক ব্যবহারকারীর সিস্টেম। প্রতিটি ফাইলের মালিক, গ্রুপ এবং পড়া, লেখা ও চালানোর অধিকার আছে। সাধারণ ব্যবহারকারী সিস্টেম ফাইল নষ্ট করতে পারে না, আর প্রশাসনিক কাজ করা হয় sudo-এর মাধ্যমে। সুপারইউজার root সব কিছু করতে পারে, তাই সবসময় root হিসেবে কাজ করা ভালো অভ্যাস নয়।

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2847 Oct  1 10:12 /etc/passwd

এই লাইনটির অর্থ: এটি একটি সাধারণ ফাইল, মালিক root পড়তে ও লিখতে পারে, অন্যরা শুধু পড়তে পারে।

DevOps ইঞ্জিনিয়ারের জন্য লিনাক্স কেন জরুরি

DevOps ইঞ্জিনিয়ারের কাছে লিনাক্স কোনো একটি বিষয় নয়, বরং সেই পরিবেশ যেখানে প্রায় পুরো কাজ হয়। প্রতিদিন যেখানে এর সঙ্গে দেখা হয়:

  • সার্ভার। ওয়েব সার্ভার, ডেটাবেস, কিউ — প্রায় সবই লিনাক্সে চলে।
  • কন্টেইনার। Docker লিনাক্স কার্নেলের প্রক্রিয়া ব্যবহার করে — namespaces ও cgroups। কন্টেইনার হলো বিচ্ছিন্ন একটি লিনাক্স প্রসেস, আর তার ইমেজ Debian বা Alpine-এর মতো ডিস্ট্রিবিউশনের ওপর তৈরি।
  • ক্লাউড ও Kubernetes। ক্লাউডের ভার্চুয়াল মেশিন ও ক্লাস্টার নোডও লিনাক্স।
  • CI/CD। পাইপলাইনের বিল্ড লিনাক্স রানারে চলে, আর বিল্ড স্ক্রিপ্ট লেখা হয় bash-এ।
  • ডায়াগনস্টিকস। সার্ভিস ক্রাশ করলে উত্তর খোঁজা হয় journalctl, top, ss, df-এ — এই টুলগুলো না জানলে ঘটনা বিশ্লেষণ অসম্ভব।

ন্যূনতম দক্ষতা: ফাইল সিস্টেমে আত্মবিশ্বাসের সঙ্গে চলাফেরা, অধিকার বোঝা, প্যাকেজ ইনস্টল, systemctl-এর মাধ্যমে সার্ভিস পরিচালনা, লগ পড়া, প্রসেস, নেটওয়ার্ক ও SSH নিয়ে কাজ, এবং সহজ bash স্ক্রিপ্ট লেখা।

লিনাক্স শেখা শুরু করবেন কীভাবে

মূল সিস্টেম বদলে লিনাক্স ইনস্টল করা জরুরি নয়। চেষ্টা করার কয়েকটি নিরাপদ উপায় আছে:

  • ভার্চুয়াল মেশিন (VirtualBox, VMware) এবং Ubuntu Server — ভেঙে ফেলে স্ন্যাপশট থেকে ফিরিয়ে আনা যায়।
  • Windows-এ WSL — Windows টার্মিনালে পূর্ণাঙ্গ Ubuntu পরিবেশ: wsl --install।
  • ক্লাউড সার্ভার — বাস্তব কাজের সবচেয়ে কাছের বিকল্প, SSH-এর মাধ্যমে যুক্ত হয়ে।
  • Docker কন্টেইনার — docker run -it --rm ubuntu bash কয়েক সেকেন্ডে একটি শেল দেয়।

নেভিগেশন দিয়ে শুরু করুন (pwd, ls, cd), তারপর ফাইল ও অধিকার, তারপর প্যাকেজ, প্রসেস ও সার্ভিস। অন্তর্নির্মিত সাহায্য সবসময় হাতের কাছে: man ls বা ls --help।

সংক্ষেপে

লিনাক্স হলো কার্নেল, আর ডিস্ট্রিবিউশন হলো কার্নেল, সঙ্গে ইউটিলিটি, লাইব্রেরি, প্যাকেজ ম্যানেজার ও systemd। পুরো সিস্টেম একটি ডিরেক্টরি ট্রি, যার শুরু রুট /; কনফিগ থাকে /etc-এ, লগ /var/log-এ, আর প্রোগ্রাম /usr-এ। লিনাক্স কী এবং কীভাবে বুট হয় তা বুঝলে সার্ভার, কন্টেইনার ও ক্লাউডের ভিত্তি তৈরি হয়। ফাইল সিস্টেম, বুট ও প্রশাসন কোর্সে হাতে-কলমে শেখানো হয়।

সাধারণ প্রশ্ন

লিনাক্স কি অপারেটিং সিস্টেম, নাকি কার্নেল?

আনুষ্ঠানিকভাবে লিনাক্স একটি কার্নেল, আর অপারেটিং সিস্টেম গঠিত হয় ডিস্ট্রিবিউশনের মাধ্যমে: কার্নেল, GNU ইউটিলিটি, লাইব্রেরি, প্যাকেজ ম্যানেজার ও ইনিশিয়ালাইজেশন সিস্টেম মিলে। কথোপকথনে "লিনাক্স" বলতে সাধারণত পুরো সিস্টেমকেই বোঝানো হয়।

লিনাক্স কি বিনামূল্যে?

কার্নেল ও বেশিরভাগ ডিস্ট্রিবিউশন (Ubuntu, Debian, Fedora) মুক্ত লাইসেন্সে বিনামূল্যে পাওয়া যায়। অর্থ লাগে সাধারণত সাপোর্ট সাবস্ক্রিপশনে, যেমন Red Hat Enterprise Linux-এ।

নতুনদের জন্য কোন লিনাক্স ডিস্ট্রিবিউশন বেছে নেওয়া উচিত?

সার্ভার ও প্রশাসন শেখার জন্য Ubuntu LTS ও Debian উপযুক্ত, কারণ এদের সংস্করণ স্থিতিশীল এবং ডকুমেন্টেশন প্রচুর। জ্ঞান অন্য ডিস্ট্রিবিউশনে স্থানান্তর করা যায়; মূল পার্থক্য প্যাকেজ ম্যানেজারে।

Docker ব্যবহারের জন্য কি লিনাক্স জানা দরকার?

হ্যাঁ, অন্তত মৌলিক ধারণা থাকা দরকার। কন্টেইনার লিনাক্স কার্নেলের প্রক্রিয়ার ওপর তৈরি, ইমেজের ভেতরে থাকে ডিস্ট্রিবিউশন, আর ডিবাগিং হয় শেল কমান্ড দিয়ে।

লিনাক্স ও ইউনিক্সের পার্থক্য কী?

ইউনিক্স ১৯৭০-এর দশকে আসা সিস্টেমের একটি পরিবার, আর লিনাক্স স্বাধীনভাবে লেখা একটি কার্নেল যা ইউনিক্সের ধারণা ও ইন্টারফেস (POSIX মান) অনুসরণ করে। তাই কমান্ড ও কাজের নীতি প্রায় একই রকম।

ভিডিওতে বিষয়টি শিখুন

“Linux: с нуля до уверенного администрирования” কোর্সে বিষয়টি অনুশীলনসহ বিস্তারিত শেখানো হয়েছে।

কোর্সে যান