راستش را بخواهید دیدگاه بسیاری از کاربران درباره لینوکس درست است. به صورت واضحتر کلمه "Linux" زمانی که تنها به کار برده شود تنها به هسته سیستم عامل اطلاق میشود، در حالی که GNU/Linux در واقع کل سیستم عامل است که شامل هسته لینوکس و ابزار گنو میشود.
اگر شما مجموعهای از نرمافزارها را در کنار برخی از ابزارها قرار دهید که بتوان همه آنها را با یکدیگر مدیریت کرد، اکنون شما یک توزیع مانند اوبونتو دارید.
تعداد زیادی اجزاهای نرمافزاری مخصوص وجود دارند که میتوانند در کنار یکدیگر سیستم عاملی مانند لینوکس را بسازند. البته که این اجزاهای نرمافزاری مخصوص باید در کنار یکدیگر سازگاری داشته باشند تا نتیجه صحیح و کارآمد بدست آید.
سیستم عامل چیست؟ توزیع چیست؟
سیستم عامل را میتوان به عنوان نرمافزاری که میتواند امکان اجرای اپلیکیشنها بر روی سخت افزار را فعال کند تعریف کرد. سیستم عامل از چندین لایه مختلف تشکیل شده است. در مرکز این لایهها هسته قرار دارد که با درایورهای خود میتواند در ارتباط مستقیم با سخت افزار قرار گیرد و به دیگر نرمافزارها نیز اجازه استفاده از سختافزار را بدهد.
در لایههای بالایی هسته بخشی وجود دارد که مدیریت دستگاههای ورودی (مانند فلش، هارد درایو و...)، شبکهها، صدا و ویدیوها را انجام میدهد. احتمالا بسیاری از ما دوست داریم بدانیم که در آن هسته چه اتفاقهایی در حال رخ دادن است. اگر کمی به ترکیب دو کلمه «توزیع + لینوکس» توجه کنیم، مشخص است که این نام را در کنار هم به یک نسخه از سیستم عامل برپایه لینوکس با نرمافزاریهای مخصوص به خود اشاره میکند.
در ابتدا، فقط فایلها و راهی برای نصب و استفاده از آنها روی کامپیوتر نیاز بود. پس از آن توزیعهای مختلف لینوکس به مدیریت پکیجها، ابزارهای بروزرسانی و تنظیمات رابط کاربری گرافیکی مجهز شدند. در لایه زیری پوسته هر توزیع همچنان همگی از هسته لینوکس استفاده میکنند.
هسته لینوکس چیست؟
لینوکس هسته یا همان قلب سیستم شما است، اما از چه چیزهایی تشکیل شده است؟ هسته رابط نرمافزاری برای سختافزار کامپیوتر است. هسته با پردازشگر مرکزی (CPU)، حافظه و دیگر اجزای پشتی نرمافزارهای در حال اجرای کامپیوتر ارتباط برقرار میکند. در واقع هسته پایینترین مرحله از اجزای نرمافزای سیستم است که البته از اهمیت بسیار بالایی نیز برخوردار است. اهمیت کرنل به قدری بالاست که اگر مشکلی برای آن پیش آید، هر قطعه نرمافزاری در حال اجرای روی کامپیوتر نیز دچار مشکل خواهد شد.
هسته لینوکس، یک هستهی یک پارچه است که همه سرویسهای اصلی سیستم عامل را درون خود اجرا میکند. مدل جایگزین این هسته، میکروکرنل است که بسیاری از کارها را فرآیندهای خارجی انجام میدهند و هسته تنها کمی بیشتر از هماهنگیها را انجام میدهد.
در حالی که هستههای یکپارچه در روزهای ابتدایی که کاربران برای سختافزار خود هسته را کامپایل میکردند، بسیار خوب عمل میکردند اما این روزها ترکیبهای زیادی از سختافزارها وجود دارد که ساخت آنها به درون یک هسته نتیجهای جز ساخت یک فایل عظیم ندارد.
ماژول های کرنل، برتری لینوکس
کرنل لینوکس ماژولار است، به این صورت که عملکردهای اصلی در فایل کرنل هستند، در حالی که درایورهای اختصاری به صورت ماژولهای جداگانه در مسیر /lib/modules ساخته میشوند.
برای مثال، کرنل اوبونتو نسخه ۶۴ بیتی تنها ۵ مگابایت اندازه دارد، در حالی که ۳۷۰۰ ماژول دیگر هستند که میتوانند بیشتر از ۱۰۰ مگابایت حجم داشته باشند. با توجه به این که تنها بخشی از این ماژولها برای هر دستگاه مورد نیاز است، بنابراین استفاده از همه آنها در کنار کرنل اصلی اشتباه محض است.
به جای اینکه کرنل بخواهد از همه ماژولهای خود استفاده کند، با شناسایی سختافزار میتواند در استفاده یا لود کردن ماژولهای مرتبط تنها بخشهای مورد نیاز را به درون حافظه کرنل وارد کند. در این شرایط کرنل همچنان میتواند با دسترسی به هزاران فایل دیگر از طریق ماژولها یکپارچه باقی بماند. این ویژگی زمانی اهمیت زیادی پیدا میکند که سیستم میتواند وابسته به تغییرات سختافزاری عکس العمل مناسب و صحیح را نشان دهد.
برای مثال حافظه USB خود را به سیستم متصل کنید تا ماژول Usb-Storage در کنار فایل سیستم مورد نیاز برای مونت کردن آن لود شود. به همین شکل، دانگل 3G را به دستگاه وصل کنید تا درایورهای مودم لود شوند. به همین خاطر است که به ندرت نصب درایورهای جدید در زمان اضافه شدن سختافزار نیاز میشود. در واقع همه ماژولها منتظر شما هستند تا سختافزار یا لوازم جانبی دیگری را خریداری کنید تا زمینه را برای استفاده از آن فراهم کنند.
کامپیوترهایی مانند سرورها که با سختافزارهایی مخصوص و تغییر ناپذیر کار میکنند، معمولا از هستهای با تمام درایورهای مورد نیاز برخوردارند و لود کردن ماژولهای مختلف در آنها غیرفعال است. این مورد باعث میشود که مقدار کمی به امنیت دستگاه اضافه شود.
اگر میخواهید کرنل خود را کامپایل کنید، یک نکته لازم و خوب، استفاده از درایورهایی است که سختافزار دائما قرار است از آن استفاده کند. برای مثال میتوان به رابط شبکه و فایل سیستم دیسک سخت و ماژولهایی برای موارد دیگر اشاره کرد که در صورت همراه با کرنل و استفاده همیشگی میتوانند به امنیت دستگاه نیز کمک کنند.
بسیاری از ماژولها در واقع درایورهای سختافزاری هستند و به عنوان یکی از نقاط قوت لینوکس در سالهای اخیر شناخته میشود. با این ماژولهای کرنل که بسیار زیاد هم هستند، نیازی به دانلود و نصب درایورها از جاهای مختلف نخواهید داشت. البته هنوز سختافزارهایی هستند که با ماژولهای کرنل لینوکس پشتیبانی نمیشوند که دلیل آن کدهای جدید یا مجوزهای لازم است تا اینکه بتواند به عنوان بخشی از کرنل قرار گیرد. بهترین مثال برای سختافزارهایی که هنوز به عنوان ماژول کرنل کار خود را شروع نکرده میتوان به کارتهای گرافیکی انویدیا اشاره کرد. کارتهای گرافیکی که به عنوان ماژولهای طرف سوم شناخته میشوند همچنین در اوبونتو به عنوان «درایورهای محدود شده» شناخته میشوند. ماژولهای طرف سوم از طریق مدیریت پکیجها در صورتی که توزیع از آن پشتیبانی کند، قابل نصب هستند.
در غیر این صورت، فایلها باید از طریق منابع کامپایل شوند و به دلیل اینکه با کاربر ارتباط نزدیکی پیدا میکنند، باید هر بار پس از بروزرسانی کرنل دوباره کامپایل شوند. خوشبختانه ابزارهایی مانند DKMS یا «پشتیبانی پویا ماژولهای کرنل» به صورت خودکار تمام ماژولهای طرف سوم را پس از نصب کرنل جدید دوباره کامپایل میکند تا فرآیند ارتقای هسته شبیه به ارتقای یک اپلیکیشن ساده باشد.
شاید دو عبارت «فضای کرنل» و «فضای کاربر» را شنیده باشید. فضای کرنل در واقع حافظهای است که تنها کرنل به آن دسترسی دارد و هیچ برنامهای از کاربر نمیتواند در اینجا نوشته شود. به همین دلیل است که برنامههای کاربران نمیتواند عملیات کرنل را دچار مشکل کند.
فضای کاربر توسط بسیاری از برنامهها دسترسپذیر است. یکی از برتریها یا نقاط متمایز لینوکس نیز به دلیل همین پایداری و امنیتی است که توانسته کرنل را دور از دسترس برنامههای مختلف و حتی برنامههایی که میتوانند به ریشه دسترسی داشته باشند، نگه دارد.
اگر کرنل را به عنوان پایینترین مرحله از سیستم در نظر بگیریم، بالاترین مرحله آن را رابط کاربری تشکیل میدهد. هر چیز دیگری، از کرنل تا رابطهای ظاهر سختافزار و درایورها تا قبل از اینکه از کامپیوتر خود استفاده کنید، قابلیت استفاده ندارند.
رابط کاربری میتواند تعامل با تک تک اجزای مختلف سیستم را امکان پذیر کند و این کار با مدیریت پنجرهها در لینوکس انجام میشود. در گذشته مدیریت پنجرهها، سیستمهایی مستقل بودند که البته هنوز تعدادی از آنها مانند OpenBox یا Enlightenment وجود دارند، اما مدیر پنجرهها حالا به عنوان بخشی از یک محیط دسکتاپ بزرگتر شناخته میشوند. مدیر پنجره مسئول مدیریت پنجرههای روی دسکتاپ است. وظایف مدیر پنجره شامل باز کردن، بستن، محل قرارگیری و دیگر مواردی که میتوان روی پنجرهها انجام داد.
در گذر زمان رابطهای کاربری رشد کردهاند و علاوه بر مدیریت پنجره، ویژگیهای دیگری مانند نوار وظیفه یا منوی لانچر برنامهها توانستهاند محیط دسکتاپ را بسازند.
مجموعههای نرمافزاری
محیط دسکتاپ در واقع مجموعهای از ابزارهایی است که میتوانند ویژگیهای لازم برای اجرای یک دسکتاپ کامل را دربرگیرند. اجرای برنامهها، دستکاری پنجرهها، ارتباط با هر برنامه و فعال یا غیرفعال کردن آنها از جمله مواردی است که یک دسکتاپ را تشکیل میدهند. قلب تمام ابزارهایی که محیط دسکتاپ را میسازند، مدیر پنجره قلب تمام تمام ابزارهایی است که محیط دسکتاپ را میسازند. برای مثال میتوان به مدیر پنجره KWin برای KDE و Metacity برای گنوم اشاره کرد.
چیزی که میتواند محیط دسکتاپ را از مدیر پنجرهها جدا کند مرحله ادغام و هماهنگی آنها است. مدیر پنجره محیط KDE بسیار مشهور است، جایی که هر چیزی حول محور یک هسته حرکت میکند و برنامهها نه تنها میتوانند با یکدگیر ارتباط برقرار کنند، بلکه یک برنامه میتواند درون یک پنجره دیگر نیز قرار گیرد.