ویرگول
ورودثبت نام
Pouria
Pouriaدانشجوی رشته مهندسی نرم افزار، دانشگاه ملی مهارت
Pouria
Pouria
خواندن ۷ دقیقه·۲ ماه پیش

مفاهیم اساسی لینوکس | از کرنل تا محیط گرافیکی

لینوکس یکی از قدرتمندترین سیستم‌عامل‌های جهان است که بر پایه اصول متن‌باز ساخته شده و در سرورها، دسکتاپ‌ها و حتی گوشی‌های هوشمند استفاده می‌شود. اگر تازه با لینوکس آشنا شده‌اید، درک مفاهیم اساسی لینوکس مثل هسته (Kernel)، توزیع‌ها، بوت‌لودر و محیط‌های گرافیکی ضروری است.

در این مقاله، به‌طور جامع به بررسی این موضوعات می‌پردازیم تا بتوانید لینوکس را از صفر درک کنید.

مفاهیم لینوکس
مفاهیم لینوکس


هسته لینوکس (Kernel): قلب تپنده سیستم

کرنل لینوکس چیست؟ هسته یا کرنل، هسته مرکزی سیستم‌عامل لینوکس است که نقش چسب بین سخت‌افزار و نرم‌افزارها را ایفا می‌کند. بدون هسته، لینوکس نمی‌تواند کار کند، زیرا این بخش مسئولیت مدیریت منابع سخت‌افزاری مثل CPU، RAM و دیسک را بر عهده دارد.

وظایف اصلی کرنل لینوکس

کرنل لینوکس وظایف متنوعی دارد که آن را از دیگر سیستم‌عامل‌ها متمایز می‌کند. اولاً، هسته ارتباط بین اپلیکیشن‌ها و سخت‌افزار را برقرار می‌کند، مثلاً وقتی برنامه‌ای نیاز به خواندن فایل از هارد دارد، هسته این کار را مدیریت می‌کند. دوماً، مدیریت فرآیندها (Processes) را انجام می‌دهد، یعنی اولویت‌بندی کارهای سیستم برای جلوگیری از هنگ کردن کامپیوتر شما. سوماً، با کنترل دسترسی‌ها (Permissions) امنیت را تأمین می‌کند. هسته لینوکس مدولار است، یعنی بدون ریبوت کردن کامل سیستم، می‌توانید ماژول‌های اضافی را (مثل درایور کارت گرافیک) اضافه کنید.

تفاوت کرنل با دیگر اجزا

کرنل لینوکس فقط پایه است و بدون توزیع‌ها (Distributions) کامل نیست. مثلاً، در مقایسه با ویندوز، هسته لینوکس رایگان و متن‌باز است، که اجازه سفارشی‌سازی می‌دهد. نسخه‌های مختلف هسته (مثل ۵.۱۵ یا ۶.۲) با به‌روزرسانی‌ها بهبود می‌یابند تا پشتیبانی بهتری از سخت‌افزارهای جدید داشته باشند.


توزیع‌های لینوکس (Distributions): بسته‌های آماده برای استفاده

توزیع‌های لینوکس چیست؟ توزیع یا Distro، مجموعه‌ای از نرم‌افزارها، برنامه‌ها و ابزارها است که با هسته لینوکس ترکیب شده تا یک سیستم‌عامل کامل بسازد. بدون توزیع، هسته خام است و قابل استفاده برای کاربران عادی نیست.

انواع توزیع‌های لینوکس

توزیع‌ها بر اساس نیاز کاربران متفاوت‌اند. مثلاً، اوبونتو (Ubuntu) برای مبتدیان مناسب است با رابط گرافیکی ساده. دبیان (Debian) پایدار و برای سرورها ایده‌آل است. فدورا (Fedora) برای توسعه‌دهندگان با آخرین فناوری‌ها. آرچ لینوکس (Arch) برای کاربران پیشرفته که می‌خواهند سیستم را دستی سفارشی کنند. هر توزیع شامل هسته، شل، و محیط دسکتاپ است.

درس سایت distrosea.com میتونید توزیع های مختلف را امتحان کنید.

سایت distrosea محل استفاده دمو از توزیع های لینوکس
سایت distrosea محل استفاده دمو از توزیع های لینوکس

تصویری از دسکتاپ توزیع manjaro
تصویری از دسکتاپ توزیع manjaro


بوت‌لودر (Bootloader): شروع‌کننده سیستم

بوت‌لودر در لینوکس چیست؟ بوت‌لودر برنامه‌ای است که سیستم‌عامل را بوت می‌کند و هسته را بارگذاری می‌کند. بدون آن، سیستم عامل بالا نمی‌آید و کاربر نمیتواند از سیستم استفاده کند. این موضوع جزو مفاهیم اساسی لینوکس و سیستم عامل است.

تصویری از بوت لودر grub
تصویری از بوت لودر grub

انواع بوت‌لودرها

معروف‌ترین‌ها GRUB (Grand Unified Bootloader) و ISOLINUX هستند. GRUB چندسیستمه را پشتیبانی می‌کند (مثل بوت دوگانه ویندوز و لینوکس). ISOLINUX برای رسانه‌های بوت‌شدنی مثل USB استفاده می‌شود.

مدیریت بوت‌لودر

در نصب توزیع، بوت‌لودر خودکار نصب می‌شود. درصورت نیاز، میتوانید با استفاده از ابزار های در ترمینال یا بصورت رابط گرافیکی بوت‌لودر سیستم‌خود را مدیریت کنید.

برای مثال Grub Customizer بصورت گرافیکی و فایل کانفیگ grub در مسیر /etc/default/grub برای ویرایش بوت‌لودر‌ وجود دارد


سرویس‌ها (Services): برنامه‌های پس‌زمینه

سرویس در لینوکس چیست؟ سرویس برنامه‌ای است که در پس‌زمینه سیستم شما اجرا می‌شود و وظایف را به‌صورت مداوم انجام می‌دهد. سرویس های مختلفی در لینوکس وجود دارد. نمونه هایی از سرویس های مهم لینوکس:

  • httpd: سرویس وب‌سرور آپاچی برای میزبانی وب‌سایت‌ها.

  • nfsd: برای اشتراک‌گذاری فایل‌ها در شبکه (Network File System).

  • sshd: برای دسترسی از راه دور از طریق SSH.

  • cron: برای اجرای خودکار وظایف زمان‌بندی‌شده (مثل بک‌آپ).

برای مدیریت سرویس ها، میتوانید از ابزار systemctl از طریق ترمینال بهره ببرید و در محیط گرافیکی، با ابزار هایی مثل System Monitor کار کنید.

مدیریت سرویس ها در ترمینال

لینوکس مدرن از Systemd برای مدیریت سرویس‌ها استفاده می‌کند. دستورات کلیدی:

  • شروع سرویس: sudo systemctl start httpd

  • توقف سرویس: sudo systemctl stop httpd

  • فعال‌سازی در بوت: sudo systemctl enable httpd

  • بررسی وضعیت: sudo systemctl status httpd


فایل سیستم: سازماندهی داده ها در لینوکس

فایل سیستم (File System) روش ذخیره و سازمان‌دهی داده ها در یک سیستم‌عامل است.

فایل سیستم تعیین می‌کند چگونه فایل‌ها در بلوک‌های دیسک ذخیره شوند، مجوزها (Permissions) مدیریت شوند، و عملیات مثل خواندن/نوشتن انجام گیرد. لینوکس از چندین لایه استفاده می‌کند: کرنل فایل سیستم را مدیریت می‌کند، و ابزارهایی مثل mkfs برای ایجاد آن استفاده می‌شوند.

از نظر فنی، فایل سیستم شامل Inodes (برای metadata فایل‌ها مثل مالک و اندازه) و Superblock (برای اطلاعات کلی مثل فضای آزاد) است. مثلاً، در ext4، هر فایل یک Inode دارد که اجازه مدیریت میلیون‌ها فایل را می‌دهد.

فایل سیستم های رایج:

  • ext4: پیش‌فرض اوبونتو و اکثر توزیع‌ها، سریع، پایدار، و مناسب برای دسکتاپ و سرور.

  • NTFS: پیش‌فرض ویندوز ۱۰ و ۱۱، برای سازگاری با درایوهای مشترک.

  • FAT32: پیش‌فرض نسخه‌های قدیمی ویندوز، مناسب برای USB (محدودیت حجم فایل ۴ گیگابایت).

  • Btrfs: پیشرفته با قابلیت اسنپ‌شات و فشرده‌سازی.

  • ZFS: برای سرورهای پیشرفته با مدیریت داده قوی

مقایسه فایل سیستم ها

مقایسه انواع فایل سیستم ها
مقایسه انواع فایل سیستم ها

نمایش فایل سیستم و فضای دیسک:

df -h


شل لینوکس: رابط خط فرمان و دستورات پیشرفته

شل (Shell) برنامه‌ای است که دستورات کاربر را دریافت، تفسیر، و به کرنل منتقل می‌کند. شل‌ها برای اتوماسیون حیاتی‌اند. برخلاف GUI، شل دسترسی مستقیم به سیستم می‌دهد.

دانستن چگونگی کار با شل و دستورات خط فرمان، برای سرور های بدون رابط گرافیکی (GUI) حیاطی است.

انواع شل و مقایسه

  • Bash: پیش‌فرض، با سینتکس ساده و اسکریپتینگ قدرتمند. مزایا: گسترده، سازگار. معایب: کمتر مدرن.

  • Zsh: با Oh My Zsh، اتوکامپلیت پیشرفته و تم‌ها. مزایا: کاربرپسند برای توسعه‌دهندگان. معایب: نیاز به تنظیم.

  • Fish: پیشنهادهای هوشمند، بدون نیاز به یادگیری سینتکس پیچیده. مزایا: آسان برای مبتدیان. معایب: کمتر سازگار با اسکریپت‌های قدیمی.

با باز کردن برنامه terminal در لینوکس، میتوانید به شل دسترسی داشته باشید.

تصویری از ZSH
تصویری از ZSH


ساختار سلسله‌مراتبی دایرکتوری‌ها و فایل‌ها در لینوکس

لینوکس از یک ساختار درخت‌وار (Hierarchical) برای سازمان‌دهی فایل‌ها استفاده می‌کند که همه چیز از ریشه (/) شروع می‌شود. این ساختار استاندارد FHS است و فایل‌ها را بر اساس نوع دسته‌بندی می‌کند.

دایرکتوری‌های کلیدی و نقش آن‌ها

  • / (Root): پایه سیستم، همه دایرکتوری‌ها زیر آن هستند.

  • /home: خانه کاربران، فایل‌های شخصی (مثل /home/user/Documents). امنیت: مجوزهای کاربرمحور.

  • /etc: تنظیمات سیستم (مثل /etc/fstab برای فایل سیستم‌ها، /etc/passwd برای کاربران). ویرایش با sudo nano.

  • /var: داده‌های متغیر مثل لاگ‌ها (/var/log/apache2) یا دیتابیس‌ها (/var/lib/mysql). کاربرد: بررسی لاگ‌ها برای عیب‌یابی.

  • /bin و /sbin: فایل‌های اجرایی ضروری (/bin/ls) و سیستمی (/sbin/fsck).

  • /usr: برنامه‌ها و کتابخانه‌ها (/usr/bin/python، /usr/share/icons).

  • /tmp: فایل‌های موقت، که در ریبوت پاک می‌شود. کاربرد: ذخیره موقت دانلودها.

  • /boot: فایل‌های بوت مثل کرنل (vmlinuz) و GRUB.

مقایسه با ویندوز: لینوکس درایو جدا ندارد؛ همه چیز زیر / مونت می‌شود (مثل /media/usb برای فلش).


ران‌لول‌ها: حالت‌های اجرایی و مدیریت پیشرفته

ران‌لِوِل‌ها (Runlevels) سطوح مختلف عملیاتی لینوکس هستند که تعیین می‌کنند کدام سرویس‌ها و رابط‌ها فعال شوند.

هر ران‌لول‌ سرویس‌های خاصی را لود می‌کند و برای مدیریت منابع (مثل خاموش کردن GUI برای صرفه‌جویی در RAM) مفید است.

سطوح مختلف ران‌لول‌ها

  • 0 (Halt): سیستم کامل خاموش می‌شود. همه فرآیندها متوقف و فایل سیستم‌هاUnmount می‌شوند. کاربرد: برای shutdown ایمن.

  • 1 (Single-User Mode): حالت تعمیرات با دسترسی روت. هیچ سرویس شبکه‌ای فعال نیست، فقط کنسول CLI. کاربرد: تعمیر فایل سیستم آسیب‌دیده یا تغییر پسورد روت (با passwd).

  • 2: چندکاربره بدون NFS. سرویس‌های پایه فعال‌اند، اما شبکه فایل اشتراکی خاموش است. کاربرد: محیط‌های محلی بدون نیاز به شبکه.

  • 3: چندکاربره با CLI کامل. سرویس‌های شبکه فعال‌اند، اما GUI نه. کاربرد: سرورها برای مصرف کم منابع (مثل وب‌سرورها).

  • 4: قابل‌تنظیم توسط کاربر. می‌توانید اسکریپت‌های شخصی اضافه کنید. کاربرد: حالت‌های سفارشی مثل تست نرم‌افزار.

  • 5: چندکاربره با GUI. پیش‌فرض دسکتاپ‌ها مثل اوبونتو. همه سرویس‌ها و رابط گرافیکی فعال‌اند. کاربرد: استفاده روزمره.

  • 6 (Reboot): سیستم ریبوت می‌شود. همه فرآیندها متوقف و سیستم restart می‌شود. کاربرد: اعمال تغییرات کرنل.

کاربردها: در سرورهای ابری (مثل AWS EC2)، ران‌لِوِل ۳ برای کاهش هزینه‌ها استفاده می‌شود. در دسکتاپ، ران‌لِوِل ۵ برای راحتی.

ران‌لول‌ها بهینه‌سازی منابع را ممکن می‌کنند. مثلاً، در سیستم‌های محدود RAM، ران‌لول‌ ۳ GUI را خاموش می‌کند و ۲۰۰-۵۰۰ MB RAM صرفه‌جویی می‌کند.


محیط‌های دسکتاپ لینوکس: تجربه گرافیکی

محیط دسکتاپ (Desktop Environment) مجموعه‌ای از نرم‌افزارها است که رابط گرافیکی (GUI) لینوکس را تشکیل می‌دهد. شامل مدیریت پنجره، فایل منیجر، نوار وظیفه، و ابزارهای سفارشی‌سازی است.

محیط‌های محبوب و مقایسه آنها

مقایسه رابط های گرافیکی محبوب در لینوکس
مقایسه رابط های گرافیکی محبوب در لینوکس

مدیریت پنجره یا Window Manager

نرم‌افزاری که فقط مسئول مدیریت پنجره‌های گرافیکی (مانند جابجایی، تغییر اندازه، و چیدمان پنجره‌ها) است.

مثال‌ها: i3، Openbox، Awesome، bspwm.

اگر از GNOME استفاده کنید، مدیر پنجره داخلی آن (Mutter) بخشی از محیط دسکتاپ است و شما نیازی به مدیریت جداگانه آن ندارید.

برنامه File Manager

برنامه‌ای گرافیکی یا متنی است که برای مدیریت فایل‌ها و پوشه‌ها استفاده می‌شود. این ابزار امکان مرور، کپی، انتقال، حذف و سازمان‌دهی فایل‌ها را فراهم می‌کند.

یکی از محبوب ترین فایل منیجر ها Nautilus است که در محیط های GNOME بصورت پیشفرض قابل استفاده است. اما شما میتوانید فایل منیجر موردنظر خود را نصب کنید و جایگزین آن کنید.

برخی (مثل Thunar) سبک و سریع هستند، برخی (مثل Dolphin) امکانات پیشرفته‌تری دارند و سنگین‌ترند.


با درک عمیق مفاهیم اساسی لینوکس مثل سرویس‌ها، فایل سیستم، شل، و ...، می‌توانید سیستم را بهینه کنید و از لینوکس نهایت بهره را ببرید. از دستورات شل برای اتوماسیون تا انتخاب محیط گرافیکی مناسب سلیقه شما، این دانش به شما کمک میکند تا تجربه لذت‌بخش‌تری از لینوکس داشته باشید.

و در اخر اگه کاربر لینوکس هستید، کدام توزیع و کدام محیط گرافیکی را پیشنهاد میکنید؟ شخصا دوست دارم بدونم از کدوم شل استفاده میکنید و تجربه‌هاتون رو به اشتراک بذارید.

لینوکس
۶
۵
Pouria
Pouria
دانشجوی رشته مهندسی نرم افزار، دانشگاه ملی مهارت
شاید از این پست‌ها خوشتان بیاید