در قسمت قبل به آشنایی مختصر از هسته ی لینوکس رسیدیم و در این قسمت میخواهیم اجزای این سیستم عامل را بررسی کرده و کمی درباره نرم افزار های متن باز بیشتر بدانیم.
کرنل
تمامی سیستم عامل ها دارای کرنل هستند که دور و بر معماری سخت افزاری را احاطه خواهند کرد و به صورت مستقیم میتوانند سخت افزارهای دستگاه مورد نظر را کنترل کنند. در بین کرنل ها نیز کرنل لینوکس بسیار ویژه و انعطاف پذیر است به دلیل اینکه به صورت طبیعی ساختاری ماژولار یا برپایه تکههایی به نام ماژول دارد که هر ماژول یک قسمت مخصوص را کنترل خواهد کرد.
کرنل سیستم عامل ویندوز (که فقط افراد خاصی بدون کسب اجازه میتوانند آن را مشاهده کنند) به صورت یک تکه کد کاملاً یکپارچه است و نمیتوان آن را به راحتی به قطعات کوچکتر تقسیم کرد و همچنین بدلیل انعطاف پذیری کم آن خیلی سخت است که یک کرنل ویندوزی را بر روی تلفن همراه اجرا کنیم (اما غیرممکن نیست).
این مسائل باعث شده تا موفقیت کرنل لینوکس بیشتر به چشم بیاید و به نوعی تمایز و برتری خود را نشان دهد قابلیت کاهش دادن و یا افزایش موارد داحال کرنل باعث شده است که اجرای آن روی پلتفرم های بسیار متنوعی بدون مشکل همراه باشد. همچنین قابلیت ماژولار بودن کرنل لینوکس باعث میشود که امنیت و پایداری بسیار خوبی در استفاده از آن را شاهد باشیم؛ اگر قسمتی از کرنل با مشکل در اجرا مواجه شود همه ی کرنل کرش نخواهد کرد و فقط یک ایراد کوجک در بخش مربوطه بوجود میآید برای مثال یک حمله به کرنل همان قسمت تحدید شده را تخریب میکند و تمام دستگاه تحت حمله و آسیبپذیری قرار نخواهد گرفت.
سیستم عامل
توسعه دهندگان نیازمند ابزارهای بسیار خاصی همانند کامپایلر ها هستند تا بتوانند برنامه خود را به نحوی بنویسند که با کرنل ارتباط برقرار کند. همچنین آنها نیاز دارند تا برنامهها و ابزارهایی در اختیار داشته باشند که بتوانید برنامههای خارجی نوشته شده را پس از نصب و اجرای برنامه با کرنل ارتباط دهند. این کلکسیون از ابزارها با کرنل ترکیب شده و سیستم عامل را پدید آوردهاند که پایینترین لایهی نرم افزاری کامپیوتر شما محسوب میشود و توسط یک کاربر معمولی قابل دسترسی است. کاربران عمومی زمانی که به خط فرمان دسترسی داشته باشند میتوانند با سیستم عامل کارکنند.
گنو/لینوکس ابزارهای قدرتمندری را برای شما آماده میکند تا بتوانید برنامههای خود را در آن نوشته و توسعه دهید از جمله این ابزار : محیط های توسعه ؛ ویرایشگرها ؛ کامپایلرها هستند که برای تبدیل کد های توسعه دهندگان به چیزی قابل دسترس توسط کرنل ساخته و بهینه شدهاند تا بتوانید وظایف دلخواه خود را به بهترین نحو به انجام برسانید.
همانند کرنل که در بالا توضیح دادم سیستم عامل نیز حالت ماژولار دارد و توسعهدهنده میتواند سیستم عامل را شخصی سازی کرده و آن را با ابزارهای دلخواه خود به صورت یک نسخه خاص ارائه دهد.
محیط ها
بیشتر افراد فکر میکنند پنجره ها ؛ منوها و دیالوگ باکس ها نیز قسمتی از یک سیستم عامل هستند درحالیکه این بخشها نیز یک لایه جداگانه برای خود هستند که با نام سیستم پنجره یه windowsing system و محیط دسکتاپ (desktop environment )شناخته میشوند.
این لایه یک رابط کابری گرافیکی را برای استفاده های معمولی فراهم میکند تا بتوانید به راحتی با برنامههایی که در سیستم عامل هستند ارتباط برقرار کرد و برنامههای جدید را نیز بر روی سیستم نصب کرد.
در گنو/لینوکس برای انتخاب مدیر پنجره و یا میزکار انتخاب های وسیعی وجود دارد که انواع سلیقه های کاربران در آنها در نظر گرفته شده است و کاربر به سلیقه خود و یا با توجه به نیازش میتواند یکی از آنها را استفاده کند و این هم از همان ویژگیهای منحصر به فردی است که سیستم عامل های ویندوز و Os X هیچگاه به کاربر ارائه نکرده است. همانند سیستم عامل و کرنل برای توسعه دهندگان ابزارهایی نیز وجود دارد تا بتوانند گرافیک برنامه خود را آنگونه که میخواهند طراحی کنند و در این مورد نیز چندین کتابخانه و ابزار مختلف وجود دارد که بازهم گنو/لینوکس دست توسعهدهنده را بسیار بازگذاشته است و میتواند از بین موارد متفاوت و بسیار انتخاب خود را انجام دهد و محیط برنامه را به سلیقه خود بسازد. (برای مثال برای گنوم gtk+ و برای kde کتابخانههای qt مورد استفاده قرار میگیرد)
برنامهها
سیستمهای عامل دو نوع برنامه دارند ؛ مدل اول برنامههایی است که اجرای آنها در سیستم عامل ضروری است و به عنوان اجزایی برای سیستم عامل در نظر گرفته میشوند و نوع دوم برنامههایی هستند که پس از آن کاربر به انتخاب و با توجه به نیازش نصب خواهد کرد. سیستم عامل هایی که انحصاری هستند همانند Osx و ویندوز به کاربر این اجازه را نمیدهد تا اجزای مورد نیزا برای سیستم عامل را خود انتخاب کرده و استفاده کند و باید همان مواردی که بر روی آنها ارائه میشود را استفاده کنید(باز هم از مزایای لینوکس) بنابراین کاربران ویندوز مجبور هستند تا ازکامپایلر ویندوز استفاده کنند و همچنین از سیستم ویندوزی مرسوم برای مایکروسافت ویندوز استفاده کنند. این در صورتی است که توسعه دهندگان برنامه در سیستم عامل های مبتنی بر لینوکس انتخاب بسیار وسیعتری در این موارد دارند و انعطاف پذیری گنو/لینوکس برای توسعه برنامهها در میان برنامه نویسان زبانزد شده است. اما این بدین معنا نیز هست که توسعهدهنده باید خود انتخاب کند که چه اجزایی را برای سیستم عامل خود انتخاب کند.
توزیعها
این مورد سطح بالاترین لایه ی یک سیستم عامل برپایه لینوکس است و دارنده همه ی لایههای مذبور است. یک سازنده توزیع تصمیم میگیرد که چه کرنلی و چه ابزارهای سیستم عاملی را در کنار محیط ها و برنامههای کاربردی جمع آوری کرده و توزیع منحصر به فردی را بسازد که عموما در پس آن فلسفهای نهفته خواهد شد که استفاده کنندگان از یک سیستم عامل گنو/لینوکسی به توزیعی روی خواهند آورد که با فلسفه آن توزیع بسیار راحتتر هستند.
توزیعها ممکن است توسط افراد و به صورت شخصی و یا توسط مؤسسه های تجاری ساخته شوند؛ هر توزیع میتواند از طریق cd ارائه شده از طرف سازنده و یا iso مخصوص به خود که دارای نرمافزارها و پکیج های جمع آوری شده برای آن توزیع است نصب و کانفیگ شود. برای کاربران معمولی و استفاده روزانه معمولاً توزیعهایی محبوب خواهند شد که دارای سیستمهای مدیریت نرمافزار بسیار پیشرفته و خوبی باشند و به کاربر اجازه دهند به راحتی جستوجو کرده و برنامههای خود را سریعاً پیدا کنند و به چند کلیک آنها را نصب کند. در حدود ۳۵۰ توزیع متمایز در حال حاضر در دنیای مبتنی بر کرنل لینوکس وجود دارد که به صورت روز افزونی در حال افزایش هستند و هرکدام از آنها قشر خاصی از کاربران را با نیازهای منحصر به فرد خود پوشش میدهند. همچنین اگر به distrowatch مراجعه کنید میتوانید حدود ۸۰۰ توزیع مختلف گنو/لینوکسی را در آنجا پیدا کنید.
لایسنس و مجوزها
کدهایی که در هسته یا کرنل قرار دارند تحت لایسنس های گوناگونی هستند اما با این حال تمامی کدها باید با نسخه از لایسنس GPL سازگار باشند و این لایسنس تمامی موارد موجود در کرنل را دربر خواهد گرفت در این بین هر چیزی که با این لایسنس توسعه داده نشده باشد به صورت پیشفرض در کرنل قرار داده نخواهد شد.
کدهایی که در کرنل قرار داده میشوند شامل کپی رایت نخواهند شد و همچنین کدهایی که در کرنل قرار داده میشوند نیز توسعه دهندگاهن خود را دارند. به همین دلیل هرقسمت از کرنل یه مالک اصلی دارد و امروز میتوان گفت کرنل هزاران مالک را برای خود جمع آورس کرده است.
یکی از مزایای این ساختار مالکیت این است که هرگونه تلاش برای تغییر مجوز در هسته را به شکست محکوم خواهد کرد به همین دلیل است که برخی از طرفداران کپی رایت کد خود را از هسته حذف کردهاند (اهمیتی ندارد ؛ چرا که با جامعه قوی توسعه دهندگان میتوان به سرعت مشابه همان را با لایسنس آزاد در کرنل قرار داد)
اینکه کدهای موجود در کرنل آزاد باشند و تحت لایسنس آزاد انتشار پیدا کنند یک ضرورت به نظر میرسد و به هسته بسیار بیشتر از طرف توسعهدهنده کمک خواهد شد. با این حال کدهایی که از طرف ناشران ناشناس منتشر میشود در کرنل پذیرفته نخواهد شد. به همین دلیل تمامی توسعه دهندگان کرنل وظیفه دارند تا کد خود را به همه معرفی کرده و در آخر با مجوز gpl در کرنل منتشر کنند.
کدهایی که توسط سازنده آن تحت gpl نباشد و یا ریسک مشکلات کپی رایت را در کرنل بالا ببرد(همانند کدهایی که به وسیله مهندسی معکوس از منابع متن بسته بدست میآیند ) در کرنل قرار داده نخواهند شد.
سؤالهای از این دست در مورد مشکلات لایسنس ها در میلینگ لیست های لینوکسی به وفور یافت میشوند؛ چنین پرسش هایی به طور معمول با کمبود پاسخ مواجه میشوند اما باید در نظر گرفت افرادی که در چنین جاهایی پاسخگو هستند وکیل نیستند و در اینگونه موارد مشاوره حقوقی ارائه نمیدهند و برای شناخت دقیق لایسنس ها بهتر است از یک وکیل و مشاور حقوقی کمک بگیرید و به طور کلی پرسیدن چنین سؤالهای مهمی در میلینگ لیست ها ریسک بالایی را برای پاسخهای اشتباه دارد.
جامعه کاربری
جامعه کاربران لینوکس دو قشر را در خود جای داده است :
۱ – توسعه دهندگان لینوکس ۲ -استفاده کنندگان لینوکس
یکی از ویژگیهای بسیار منحصر به فرد لینوکس دسترسی به توسعه دهندگان آن و همینطورتوسعه دهنده شدن است. هرکسی با کسب مهارت های خود میتواند یک توسعهدهنده لینوکس شود. توسعه دهندگان لینوکسی میتوانند برای توسعه و پشتیبانی لینوکس داوطلب شوند از اینگونه موارد میتوان به توزیعهای اوبونتو و جنتو اشاره کرد. در مواردی نیز این توسعه و پشتیبانی برای اهداف تجاری انجام میشود همانند توزیعهای ردهت و سوزه اما باز هم جامعهی توسعه دهندگان دست به کار شده و مواردی همانند اپن سوزه و یا فدورا را تولید میکنند. پیشرفت این توزیع هارا میتوان از میزان استفاده آنها بر روی سرور ها و همچنین دسکتاپ ها دریافت.
از عوامل توسعه و پیشرفت لینوکس محسوب میشوند.
کرنل لینوکس نیز یکی از بزرگترین پروژه های در حال توسعه آزاد است که بیش از ۱۰۰۰ توسعهدهنده و ۱۰۰ کمپانی در توسعه آن کمک میشود و در این راه توسعهدهنده هایی مخصوص کرنل وجود دارد.
دیگر جامعه توسعهدهنده های لینوکسی تمرکز خود را بر روی برنامهها وقابلیت های متنوع برای سیستم عامل هایی با هسته لینوکس گذاشتهاند و برنامههایی همانند فایرفاکس و آفیس و میزکارهای گنوم و kde و … را توسعه میدهند.
کاربران نهایی نیز برای خود در لینوکس اجتماعی مخصوص دارند که در آن سؤالات و مشکلات تکنیکی خود را میپرسند؛ همچنین کاربر نهایی میتواند سیستم عامل را تست کرده و در صورت وجود مشکل یا بروز اختلال این موارد را گزارش داده تا در سریعترین رمان ممکن برطرف شوند.
کاربران سیستم عامل گنو/لینوکس میتوانند به صروت حضوری نیز همدیگر را ملاقات کنند و اجتماعاتی به نام لاگ را نیز برای خود تشکیل میدهند که با جمع شدن در کنارهم به افزایش ارتباطات و دوستیها و همچنین رفع مشکلات میپردازند.
تجارت لینوکسی
در سال ۲۰۰۸ مؤسسه Idc تحلیلی انجام داده است که نشان دهنده نرخ رشد ۲۴ درصد به صورت سالانه برای لینوکس است که یک تکنولوژی ۲۷ بیلیون دلاری در سال ۲۰۰۷ را تبدیل به ۴۹ بیلیون دلار درسال ۲۰۱۱ میکند. همچنین کمپانی های بزرگ هر روزه در حال روی آوردن هرچه بیشتر به سمت گنو/لینوکس هستند و همه آنها نیز در زمینه خود نخبه و درخشان هستند که همین مهاجرت باعث پیشرفت و توسعه هرچه بیشتر گنو/لینوکس خواهد شد و شروع به همکاری با بنیاد لینوکس خواهند کرد.
سؤال پیش خواهد آمد که اگر لینوکس رایگان است بنیاد لینوکس چگونه کسب درآمد میکند؟
یکی از مثالها اینگونه است که در حالی که کدهای لینوکس کاملاً آزاد هستند و هرکسی میتواند از آنها استفاده کند امابرای کمپانی ها و استفاده کنندگان لینوکس این مورد اهمیت دارد که سیستم عاملی بهینه را در کمترین زمان دریافت کنند و در این زمان است که به سراغ توسعه دهندگان و کسانی میروند که در این کار خبره هستند و میتوانند یک توزیع کاملاً بهینه شده را ارائه دهند. همچنین یکی دیگر از منابع درآمد گنو/لینوکس این است که میتواند با ارائه پشتیبانی قوی برای کسب و کار ها و همچنین کمپانی ها از آنها مبلغی را برای نگهداری سیستم عامل ورفع مشکلات بوحود آمده درخواست کند.
گنو/لینوکس پلتفرمی است که در عین آزاد بودن میتوان از آن کسب درآمد کرد و با این حال مشتریان نیز میتوانند به کسب دانش برای نگهداری آن بپردازند.
شروع کنید !
حال که پیشزمینه ای از لینوکس و سیستم عامل های مبتنی بر آن داریم میتوانیم به یاد گرفتن آن و آشنا شدن با توزیعهای گنو/لینوکسی بپردازیم.
خیلی عالی بود. خسته نباشید.
سپاس از اینکه وقت میزاری و مطالعه میکنی امین جان