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