DEV Community

Cover image for Linux-এর ভিতরের Architecture বুঝি: GNU, Coreutils, Shell, Terminal, Kernel ও Desktop Environment
Ragib Hasan
Ragib Hasan Subscriber

Posted on

Linux-এর ভিতরের Architecture বুঝি: GNU, Coreutils, Shell, Terminal, Kernel ও Desktop Environment

Linux নিয়ে কাজ করতে গেলে আমরা প্রায়ই কয়েকটি নাম বারবার শুনি—Linux Kernel, GNU, GNU Coreutils, GCC, glibc, Bash, Shell, Terminal, GNOME, KDE ইত্যাদি।

কিন্তু সমস্যা হচ্ছে, এগুলো আসলে কে কোথায় থাকে, কার কাজ কী, আর একজন user যখন Terminal-এ ls লিখে তখন সেই command কীভাবে শেষ পর্যন্ত Kernel এবং Hardware-এর কাছে পৌঁছায়—এটা পরিষ্কার না হলে Linux-এর পুরো architecture-টাই অনেকটা অস্পষ্ট থেকে যায়।

এই লেখায় সেই পুরো বিষয়টাকে ধাপে ধাপে বোঝার চেষ্টা করা হবে।


১. Linux আর Linux Distribution-এর পার্থক্য

Linux এবং Linux Distribution একই জিনিস নয়।

Linux মূলত Kernel-এর কথা বোঝায়, আর একটি সম্পূর্ণ Linux Distribution হলো Kernel-এর সঙ্গে আরও অনেক প্রয়োজনীয় component-এর সমন্বয়।

একটি পূর্ণাঙ্গ Linux distribution-এর মধ্যে শুধু Kernel থাকলেই হয় না। এর সঙ্গে বিভিন্ন ধরনের utilities, package manager, system services, desktop environment, tools এবং configuration প্রয়োজন হয়।

Linux Distribution Architecture

একটি conceptual structure:

Linux Distribution
│
├── Linux Kernel
├── GNU Utilities
├── Package Manager
├── System Services
├── Desktop Environment
├── Applications
└── Other Tools
Enter fullscreen mode Exit fullscreen mode

২. GNU আসলে কী?

GNU বুঝতে হলে GNU project-এর ধারণাটি বুঝতে হবে।

GNU-এর পূর্ণরূপ GNU's Not Unix

GNU project-এর উদ্দেশ্য ছিল Unix-এর মতো একটি free software ecosystem তৈরি করা, যেখানে operating system তৈরির জন্য প্রয়োজনীয় বিভিন্ন component free software হিসেবে পাওয়া যাবে।

GNU-কে শুধু একটি single software হিসেবে দেখলে ভুল হবে।

বরং এটাকে একটি বড় software ecosystem/project হিসেবে দেখা যায়।

GNU Ecosystem

Conceptually:

                 GNU Project
                     │
        ┌────────────┼────────────┐
        │            │            │
       GCC          glibc       Coreutils
        │            │            │
     Compiler     C Library     Commands
        │                         │
        └────────────┬────────────┘
                     │
                  Bash
                     │
                User Space
Enter fullscreen mode Exit fullscreen mode

৩. GNU-এর গুরুত্বপূর্ণ component

GNU ecosystem-এর বিভিন্ন গুরুত্বপূর্ণ component-এর মধ্যে রয়েছে:

  • GCC
  • glibc
  • GNU Coreutils
  • Bash
  • GDB

GCC

GCC বা GNU Compiler Collection source code compile করার জন্য ব্যবহৃত হয়।

Conceptually:

C Source Code
      │
      ▼
     GCC
      │
      ▼
Executable / Machine Code
Enter fullscreen mode Exit fullscreen mode

glibc

GNU C Library application এবং operating system-এর বিভিন্ন functionality ব্যবহারের জন্য গুরুত্বপূর্ণ library layer।

Conceptually:

C Program
   │
   ▼
glibc
   │
   ▼
System Calls
   │
   ▼
Linux Kernel
Enter fullscreen mode Exit fullscreen mode

৪. GNU Coreutils

এখন আসি এই আলোচনার অন্যতম গুরুত্বপূর্ণ অংশে:

GNU Coreutils

GNU Coreutils হলো অনেকগুলো fundamental command-line utility/program-এর collection।

এর মধ্যে আমরা প্রতিদিনের Linux কাজের সময় বিভিন্ন command ব্যবহার করি:

ls
cp
rm
cat
grep
Enter fullscreen mode Exit fullscreen mode

সহজভাবে:

GNU Coreutils
│
├── ls
├── cp
├── rm
├── cat
└── grep
Enter fullscreen mode Exit fullscreen mode

এখানে একটি গুরুত্বপূর্ণ বিষয় হলো—ls কোনো magical Linux keyword নয়। এটি একটি command-line utility/program।


৫. Terminal আসলে কী?

এখন প্রশ্ন:

আমি command লিখব কোথায়?

উত্তর:

Terminal-এ।

Terminal হচ্ছে এমন একটি user-facing program/interface যেখানে user command লিখতে পারে এবং output দেখতে পারে।

যেমন:

ls
Enter fullscreen mode Exit fullscreen mode

লিখলে Terminal-এ current directory-এর files এবং directories-এর output দেখা যায়।

কিন্তু Terminal নিজে ls command-এর কাজ করে না।

এখানেই Shell-এর প্রয়োজন হয়।


৬. Terminal আর Shell এক জিনিস নয়

এটি Linux শেখার সময় সবচেয়ে common confusion-এর একটি।

Terminal ≠ Shell
Enter fullscreen mode Exit fullscreen mode

Terminal হলো command input/output interface।

অন্যদিকে Shell হলো command interpreter।

Terminal user-এর input গ্রহণ করে, আর Shell সেই command interpret করে এবং প্রয়োজনীয় program execute করার workflow পরিচালনা করে।

Terminal and Shell

সহজভাবে:

Terminal
   │
   ▼
Shell
   │
   ▼
Command / Program
Enter fullscreen mode Exit fullscreen mode

৭. Bash কী?

Bash = Bourne Again SHell

Bash হলো একটি shell program।

যখন তুমি Terminal-এ লিখো:

ls
Enter fullscreen mode Exit fullscreen mode

তখন Bash command-টি interpret করে এবং প্রয়োজনীয় executable program চালানোর workflow পরিচালনা করে।

Conceptually:

Terminal
   │
   │ command
   ▼
 Bash
   │
   │ interpret
   ▼
Command / Program
   │
   ▼
Kernel
Enter fullscreen mode Exit fullscreen mode

Shell-এর কাজ হলো user-এর command এবং system-এর মধ্যে একটি গুরুত্বপূর্ণ interface হিসেবে কাজ করা।


৮. Shell অনেক ধরনের হতে পারে

শুধু Bash-ই একমাত্র shell নয়।

Linux/Unix ecosystem-এ বিভিন্ন shell পাওয়া যায়, যেমন:

  • sh
  • ksh
  • bash
  • zsh
  • csh

একটি গুরুত্বপূর্ণ বিষয় হলো:

Shell এবং Terminal একই জিনিস নয়।

একই Terminal application-এর মাধ্যমে বিভিন্ন shell ব্যবহার করা সম্ভব।


৯. ls দিলে আসলে কী হয়?

এখন পুরো architecture-এর সবচেয়ে গুরুত্বপূর্ণ অংশে আসি।

ধরো তুমি Terminal খুলে লিখলে:

ls
Enter fullscreen mode Exit fullscreen mode

আমাদের চোখে মনে হয়:

User → ls → Output
Enter fullscreen mode Exit fullscreen mode

কিন্তু ভিতরে আরও কয়েকটি layer কাজ করছে।

Linux Command Execution Flow
Conceptually:

User
  │
  ▼
Terminal
  │
  ▼
Shell
  │
  ▼
ls
  │
  ▼
Linux Kernel
  │
  ▼
File System / Storage
  │
  ▼
Kernel
  │
  ▼
ls
  │
  ▼
Shell
  │
  ▼
Terminal
  │
  ▼
User
Enter fullscreen mode Exit fullscreen mode

এটাই Linux command-line architecture বোঝার সবচেয়ে গুরুত্বপূর্ণ mental model।


১০. ls command-এর complete journey

ধাপে ধাপে দেখি।

Step 1 — User

User keyboard থেকে লিখল:

ls
Enter fullscreen mode Exit fullscreen mode

Step 2 — Terminal

Terminal input গ্রহণ করল।

Step 3 — Shell

Command shell-এর কাছে গেল।

Step 4 — Shell interpretation

Shell বুঝল এটি ls command।

Step 5 — ls program

ls executable program চালু হলো।

Step 6 — Kernel interaction

ls প্রয়োজনীয় system functionality ব্যবহারের জন্য Kernel-এর সঙ্গে interact করে।

Step 7 — File System / Storage

Kernel filesystem/storage থেকে প্রয়োজনীয় information সংগ্রহ করে।

Step 8 — Result

Result আবার ফিরে আসে:

Kernel
 ↓
ls
 ↓
Shell
 ↓
Terminal
 ↓
User
Enter fullscreen mode Exit fullscreen mode

শেষে Terminal screen-এ files এবং directories-এর list দেখা যায়।


১১. Kernel কী করে?

এখন প্রশ্ন:

Kernel কেন দরকার?

Computer-এর Hardware-এর মধ্যে রয়েছে:

  • CPU
  • RAM
  • SSD/HDD
  • Network devices
  • Keyboard
  • Mouse
  • Display

এই Hardware resources সরাসরি সাধারণ user application পরিচালনা করে না।

এখানে Linux Kernel গুরুত্বপূর্ণ ভূমিকা পালন করে।

Conceptually:

USER
 │
 ▼
User-space Software
 │
 ▼
Linux Kernel
 │
 ▼
Hardware
Enter fullscreen mode Exit fullscreen mode

Kernel system-এর resources এবং hardware-এর সঙ্গে কাজ করে।


১২. User Space এবং Kernel Space

Linux architecture বোঝার জন্য User Space এবং Kernel Space-এর distinction গুরুত্বপূর্ণ।

┌──────────────────────────────┐
│          USER SPACE          │
│                              │
│ Applications                 │
│ Terminal                     │
│ Shell                        │
│ GNU Coreutils                │
│ Libraries                    │
│ Other Utilities              │
│                              │
├──────────────────────────────┤
│         KERNEL SPACE         │
│                              │
│ Linux Kernel                 │
│ Process Management           │
│ Memory Management            │
│ File Systems                 │
│ Device Management            │
│                              │
├──────────────────────────────┤
│           HARDWARE           │
│                              │
│ CPU │ RAM │ Storage │ Devices│
└──────────────────────────────┘
Enter fullscreen mode Exit fullscreen mode

User-space-এর program প্রয়োজন অনুযায়ী Kernel-এর services ব্যবহার করে।


১৩. Desktop Environment কেন দরকার?

এখন আরেকটি গুরুত্বপূর্ণ প্রশ্ন:

Terminal কোথা থেকে পেলাম?

Operating system install করার পর আমরা যে graphical desktop দেখি—windows, menus, file manager, panels, graphical applications ইত্যাদি—এসবের বড় অংশ Desktop Environment-এর মাধ্যমে পাওয়া যায়।

Desktop Environment

একটি Desktop Environment-এর মধ্যে থাকতে পারে:

  • GUI
  • Window Management
  • File Manager
  • Terminal
  • Panels
  • Menus
  • Desktop tools

১৪. GNOME এবং KDE Plasma

Linux ecosystem-এ একাধিক Desktop Environment ব্যবহার করা যায়।

দুটি পরিচিত উদাহরণ:

GNOME

GNOME
├── GNOME Terminal
├── File Manager
├── GUI
└── Window Management
Enter fullscreen mode Exit fullscreen mode

KDE Plasma

KDE Plasma
├── Konsole
├── File Manager
├── GUI
└── Window Management
Enter fullscreen mode Exit fullscreen mode

অর্থাৎ:

Desktop Environment
        │
   ┌────┴────┐
   ▼         ▼
 GNOME    KDE Plasma
   │         │
Terminal   Konsole
Enter fullscreen mode Exit fullscreen mode

এখানে Desktop Environment পরিবর্তন করলেও underlying Linux Kernel একই থাকতে পারে।


১৫. পুরো Linux Architecture একসঙ্গে

এখন সবগুলো concept এক জায়গায় রাখলে:

                         USER
                           │
                           ▼
              ┌──────────────────────┐
              │  DESKTOP ENVIRONMENT │
              │   GNOME / KDE        │
              └──────────┬───────────┘
                         │
                         ▼
              ┌──────────────────────┐
              │       TERMINAL       │
              │ GNOME Terminal       │
              │ Konsole              │
              └──────────┬───────────┘
                         │
                         ▼
              ┌──────────────────────┐
              │        SHELL         │
              │   Bash / Zsh / sh    │
              └──────────┬───────────┘
                         │
                         ▼
              ┌──────────────────────┐
              │    GNU COREUTILS     │
              │ ls / cp / rm / cat   │
              └──────────┬───────────┘
                         │
                         ▼
              ┌──────────────────────┐
              │     LINUX KERNEL     │
              │ Process / Memory /   │
              │ Filesystem / Devices │
              └──────────┬───────────┘
                         │
                         ▼
              ┌──────────────────────┐
              │       HARDWARE       │
              │ CPU / RAM / Storage  │
              └──────────────────────┘
Enter fullscreen mode Exit fullscreen mode

সবচেয়ে গুরুত্বপূর্ণ mental model:

User
 ↓
Terminal
 ↓
Shell
 ↓
Utility
 ↓
Kernel
 ↓
Hardware / Storage
 ↓
Result
Enter fullscreen mode Exit fullscreen mode

১৬. Final Takeaway

Linux-এর command line বাইরে থেকে খুব simple মনে হয়।

তুমি শুধু লিখছো:

ls
Enter fullscreen mode Exit fullscreen mode

কিন্তু এর পিছনে কাজ করছে একাধিক software layer:

User
 ↓
Terminal
 ↓
Shell
 ↓
GNU Utility
 ↓
Kernel
 ↓
Hardware / File System
 ↓
Result
Enter fullscreen mode Exit fullscreen mode

আর Linux distribution-এর বড় picture:

Linux Distribution
│
├── Linux Kernel
├── GNU / User-space Tools
├── Libraries
├── Package Manager
├── System Services
├── Desktop Environment
└── Applications
Enter fullscreen mode Exit fullscreen mode

এই relationship-গুলো পরিষ্কারভাবে বুঝে ফেলতে পারলে Linux command line, filesystem, processes এবং পরবর্তী Docker-related concepts শেখার foundation অনেক শক্ত হয়ে যায়।

Top comments (0)