گنو چيست؟ تعريف نرمافزار آزاد چيست؟ گنو چه تفاوتي با لينوكس دارد؟ گنو/لينوكس چه فرقي با لينوكس دارد؟ اصلا چطور لينوكس شكل گرفت؟ مجاني با آزاد چه فرقي ميكند؟ در اين مقاله سعي ميكنيم به زباني ساده، مروري بر شكل گيري گنو/لينوكس و انقلابي كه در دنياي سيستمعاملها به راه انداخت، داشته باشيم. با زوميت همراه باشيد تا در كنار پاسخ به پرسشهاي مطرح شده با فلسفهي ارزشمند گنو كه توسط استالمن ارائه شد نيز آشنا شويم.
گنو/لينوكس چيست؟
گنو/لينوكس سيستم عاملي است كه توسط هزاران برنامه نويس از اقصي نقاط دنيا توسعه داده ميشود، گنو/لينوكس اغلب به دليل هستهي خود يعني لينوكس به شهرت رسيده است. اين سيستمعامل از سالها قبل به عنوان تهديدي براي ويندوز مايكروسافت مطرح شد و با توجه به امكانات خاصي كه در اختيار كاربران قرار ميداد، توانست در برخي از زمينهها سيستم عامل ويندوز مايكروسافت را بطور كامل از گردانه رقابت خارج كند. گنو/لينوكس به دليل سرعت، امنيت، رايگان بودن و از همه مهمتر متن-باز و آزاد بودن به سرعت مورد توجه كاربران مختلف قرار گرفت. براي اينكه بدانيد گنو/لينوكس چيست، ابتدا بايد بدانيد كه سيستم عامل چيست، سيستم عامل در واقع نرم افزاري است كه ارتباط بين سخت افزار و كاربر را برقرار ميكند. در واقع بسياري از كاربران حتي ارتباط زيادي با خود سيستم عاملها ندارند و بيشتر استفاده آنها با نرم افزارهايي است كه بر روي سيستم عامل اجرا ميشوند. پس سيستم عامل بستري را فراهم ميكند تا برنامهها به راحتي اجرا شوند و سرويسها مورد نظر خود را به كاربران ارائه كنند. لينوكس سيستمعاملي است كه قادر است بر روي پردازندههاي مختلف مبتني بر معماري ARM يا x86 اجرا شود. اين بدين معناست كه هستهي لينوكس بعنوان زيرساخت سيستمعامل (اندرويد، گنو/لينوكس و...) ميتواند نه تنها روي كامپيوترهاي مختلف اجرا شود بلكه امكان نصب و استفاده از آن بر روي انواع مختلف ابزارهاي الكترونيكي از ساعت هوشمند گرفته تا تلفن، تبلت، دستگاههاي غول پيكر صنعتي و... وجود دارد. در حقيقت «لينوكس» كرنل يا هستهاي است كه سيستمعاملهاي مختلفي نظير گنو/لينوكس و اندرويد را نيرو ميبخشد. در هر حال براي سادگي بيشتر، معمولا در بسياري از مجامع از گنو/لينوكس نيز با همان نام «لينوكس» ياد ميشود.
اما لينوكس چطور شكل گرفت؟
يونيكس توسط ۲ مهندس شركت AT&T با نامهاي كن تامپسون و دنيس ريتچي توليد شد و در سال ۱۹۷۰ منتشر گرديد. يونيكس در آغاز به زبان اسمبلي نوشته شد اما در سال ۱۹۷۳ به طور كلي به زبان سي بازنوشته شد. كمي بعد آنها زبان برنامه نويسي C را نيز به آن اضافه كردند و به دليل انطباقپذيري بسيار بالاي آن به سرعت بين مراكز آموزشي و تجارتهاي مختلف توزيع شد و مورد استفاده قرار گرفت. AT&T كمي بعد گواهي خاصي را براي استفاده از سيستم عامل يونيكس تعريف كرد كه شركتها براي استفاده از آن مجبور به رعايت آن و پرداخت هزينه ميشدند؛ از طرفي كد سيستم عامل يونيكس نيز در اختيار ديگران قرار نميگرفت. ماجرا از همين جا شروع شد و شخصي به نام ريچارد استالمن، دانشجوي دكتراي آن زمان در دانشگاه MIT با تفكر و فلسفه خاص خود از اين اقدام AT&T خوشش نيامد و گروهي به نام GNU (بخوانيد «گنو») را با هدف ساخت سيستم عامل آزاد شبيه به يونيكس تشكيل داد.
ريچارد استالمن در دانشگاه MITريچارد استالمن در MIT
استالمن در سال ۱۹۷۱ وارد آزمايشگاه هوش مصنوعي MIT ميشود. او اين آزمايشگاه را اجتماع شكوفاي هكرها مينامد، افرادي كه عاشق برنامه نويسي بودند و علاقه شديدي به كشف روشهاي جديد براي كار با كامپيوتر داشتند. آنها يك سيستم عامل كامل به نام گنو را درست كرده بودند، كه تمام آن در همان آزمايشگاه نوشته بود. استالمن عضو همان تيم شد تا به ارتقاي سيستم عامل كمك نموده و قابليتهاي تازهاي را به آن اضافه كند. آزمايشگاه MIT و آن تيم دقيقا همان جايي بود كه استالمن عاشق كار كردن در آن بود. آنها عنوان سيستم عامل خود را Incompatible Timesharing System يا سيستم اشتراك زماني ناسازگار ناميدند.
اولين مشكلي كه در آزمايشگاه MIT براي آنها به وجود آمد فشارهاي خارجي براي استفاده از كلمه رمز عبور در دانشگاه بود. در آن زمان روي هيچ كدام از كامپيوترهاي گروه رمز عبور وجود نداشت. استالمن ميگويد كه همگي آنها هكرهاي برجستهاي بودند كه اعتقاد داشتند، رمز عبور (منظور حساب كاربري) راهي است كه مديران براي كنترل كاربران استفاده ميكنند. به همين دليل آنها دوست نداشتند تا وارد اين بازي شوند و توسط ادمينها تحت كنترل قرار گيرند. فلسفه آنها اين بود كه اگر كسي پشت هر كامپيوتري بنشيند بايد بتواند هر كاري كه دلش ميخواهد را انجام بدهد و كسي كه امروز پشت كامپيوتر نشسته نبايد بتواند آمار كارهايي كه شخص قبلي ديروز بر روي كامپيوتر انجام داده را كنترل كند.
ريچارد استالمن
وقتي مديران شبكه بر روي يكي از كامپيوترهاي MIT رمز عبور گذاشتند، استالمن و دوستانش از اين موضوع اصلا خوششان نيامد و تصميم گرفتند تا همه چيز را هك كنند. اينجا بود كه آنها توانستند رمزگذاري پايگاه داده محل ذخيره رمزهاي عبور را هك كنند. سپس آنها به تمام افرادي كه در كامپيوترهاي خود رمز عبور وارد ميكردند چنين پيغامي را ارسال كردند: «ميبينم كه شما فلان رمز عبور را انتخاب كردهايد! نظرتون چيه اگر به جاي وارد كردن رمز عبور فقط Enter را فشار دهيد؟ اين كار هم سادهتره و هم آسانتر!» در واقع استالمن و دوستانش تنها ميخواستند تلويحا به اين موضوع اشاره كنند كه امنيت سيستمي كه ادمينهاي MIT پياده كردند در حد شوخي است. استالمن با اين روش توانست يك پنجم كاربران آزمايشگاه را به گروه خود ملحق كند و همه آنها به جاي رمز عبور فقط از كليد Enter استفاده ميكردند.
در اواخر دهه ۷۰و اوايل دهه ۸۰ ميلادي با افزايش تعداد كاربران كامپيوتر و استفاده آن در مكانهاي مختلف، توليدكنندگان نرم افزار نيز تصميم گرفتند تا نرم افزارهاي خود را بصورت بسته ارائه كنند و اجازه مشاهده كد محصولات خود را به ديگران ندهند. ديگر نميشد بر روي نرم افزار تغييرات دلخواه را اعمال كرد. مايكروسافت در اين زمينه از همه شركتها هم بزرگتر بود و هم بيشتر دست به اين كار ميزد.
gnulaptopدر اوايل دههي ۸۰ سيستم عاملها خصوصي شدند و كاربر در زمان خريد متعهد ميشدند تا سيستم عامل خريداري شده را در اختيار ديگران قرار ندهد. استالمن اين موضوع را مانع پيشرفت ميدانست و بطور كامل با قوانين حقوق معنوي به آن شكل مخالف بود و آنها را مانع پيشرفت و مشاركت در امور ميدانست. اينجا بود كه استالمن بنياد نرم افزارهاي آزاد (Free Software Foundation) را شكل داد كه يكي از اهداف آن ساخت يك سيستم عامل جديد بود. تفكر اون به اين شكل بود كه سيستم عاملي بسازد كه بصورت آزاد در اختيار ديگران قرار بگيرد و افرادي كه از آن استفاده ميكنند را تشويق كند تا آن را در اختيار اطرافيان خود قرار دهند. به اين ترتيب كاربران ميتوانستند از سيستم عاملي استفاده كنند كه آزاد است و توزيع آن به ديگران نيز آزادانه انجام ميشود و در عين حال سطوح ديگري از آزادي را نيز بر اين بستر فراهم ميكرد.
پروژه در ژانويه ۱۹۸۴ كليد ميخورد، درست همان زماني استالمن از شغل خود در دانشگاه MIT استعفا ميدهد و مقطع دكترا را رها ميكند. او در همين زمان پروژه GNU (بخوانيد گنو) را تعريف ميكند. استالمن حتي نام گنو را نيز نوعي هك يا نام برگشتي ميداند. GNU مخفف GNU's Not Unix است به معني: گنو يونيكس نيست! در واقع حرف G در اين نام گذاري، خود GNU است كه به شكل نامتعارفي استفاده شده است. هدف استالمن آن بود كه سيستم عاملي را درست كند كه شبيه به يونيكس باشد، اما خود يونيكس نباشد! برخي بر اين باورند كه GNU يا بعدها گنو/لينوكس در واقع برپايه يونيكس ساخته شده و هسته آن يونيكس است. اما اين موضوع به هيچ وجه درست نيست و تيم GNU از صفر يك سيستم عامل را نوشتهاند. در واقع آنها اصلا به كدهاي يونيكس دسترسي نداشتهاند. آنها بدنبال ساخت يك سيستم عامل شبيه به يونيكس ولي كاملا آزاد بودهاند. در آن زمان يونيكس يك محصول خصوصي بود و اجازه استفاده از آن به صورت اشتراكي وجود نداشت، يعني اگر آن را ميخريديد اجازه اشتراك گذاشتن سيستم عامل با ديگران را نداشتيد.
درست زماني كه استالمن در حال ساخت سيستم عامل گنو بود، دانشمندان دانشگاه كاليفرنيا در بركلي در حال ساخت يك سيستم عامل آزاد ديگر با نام Unix Berkely يا BSD بودند. اين سيستم عامل بر خلاف گنو بر پايه هستهي يونيكس شركت AT&T در حال توسعه بود. اما كمي بعد AT&T از دانشگاه بركلي شكايت كرد و آنها براي ادامه كار BSD به مشكل بر خوردند. همين جا بود كه گروهي از تيم توسعه دهنده BSD نسبت به ساخت سيستم عامل جديد و مستقل از يونيكس با نام Free BSD اقدام كردند كه البته شبيه به يونيكس بود و حتي قادر به اجراي اپليكيشنهاي يونيكس نيز بود. جالب اينجاست كه دانشگاه بركلي در اين زمان نميدانست كه گروه گنو نيز در حال توسعه و ساخت سيستم عامل مشابهي است. FreeBSD بصورت كاملا آزاد است و هر كسي ميتواند از آن در نرم افزار خود استفاده كند. اين سيستم توسط اپل در سيستم عامل OS X و iOS و بسياري از كمپانيهاي ديگر مانند سيسكو، VMWare و غيره مورد استفاده قرار گرفته است، اما چرا اسم BSD كمتر به گوش ميخورد و در عوض لينوكس را تقريبا همه ميشناسند يا حداقل نام آن را شنيدهاند؟ اين در حالي است كه سيستمعاملهاي اپل و شركتهاي نامبرده شده كه بر پايهي BSD ساختهاند بسيار معروف و مشهور هستند. پاسخ در فلسفهي عميق استالمن نهفته است. (ليست كامل توزيعهاي FreeBSD)
اگر مايل هستيد تا در بارهي ريچارد استالمن بيشتر بدانيد، مصاحبهي خواندني مسعود آموزگار با استالمن را در لينوكس ريويو از دست ندهيد.
يونيكس علاوه بر هسته اصلي، شامل چند برنامه مجزا بود كه با يكديگر به خوبي ارتباط داشتند. به اين ترتيب تيم گنو نيز به دو دسته تقسيم شد: يك دسته بر روي هسته اصلي سيستم عامل كار كردند و گروه ديگر نيز تك تك برنامههاي موجود در يونيكس را براي اين سيستمعامل طراحي و از نو توليد نمودند. اين كار تا سال ۱۹۹۱ طول كشيد و در آن زمان تقريبا تمام برنامههاي موجود براي يونيكس در گنو نيز ساخته شدند.
براي اينكه يك سيستم عامل به خوبي كار كند، ما نياز به يك هسته (Kernel) اصلي داريم كه ارتباط بين سخت افزار و نرم افزارها را برقرار ميكند، سپس يك كامپايلر زبان C نيز براي اجراي كدها، نياز است تا بستري فراهم شود كه ديگران نيز نرم افزارهاي جديدي براي سيستم عامل توليد كنند و در نهايت به يك مجموعه از نرم افزارهاي حياتي مانند ديباگر، ويراشگر متن، كلاينت ايميل و غيره نياز است تا نيازهاي كاربران را پاسخ گو باشد. تمام اين برنامهها توسط گروه گنو به بهترين شكل ممكن طراحي و توليد شدند.
گنو
از آنجايي كه تمام نرم افزارهاي نوشته شده در پروژه گنو بصورت آزاد و متن-باز (متنباز بودن از شرايط آزاد بودن است اما برعكس اين مدعا صادق نيست و نرمافزارهاي متن باز ميتوانند آزاد نباشند) ارائه ميشدند، حتي افرادي كه از سيستم عامل گنو استفاده نميكردند باز هم نرمافزارهاي گنو را بر روي دستگاه خود نصب ميكردند؛ چون اين نرمافزارها نه تنها بسيار خوب طراحي و نوشته شده بودند بلكه كاملا آزاد بودند و هر كسي ميتوانست هر نوع تغييري را كه بخواهد بر روي آنها اعمال كند.
ولي بخشي از گروه گنو كه بر روي هسته سيستم عامل كار ميكردند روش پيچيدهاي را (ميكروكرنل) براي توليد سيستم عامل در نظر گرفتند كه در نهايت پروژه آنها انقدر خوب پيشرفت نكرد و نتوانست مورد قبول توسعه دهندگان قرار گيرد. اين روش توسعه كه تصور ميشد آيندهي سيستمعاملها باشد چنان توسعهي دشواري داشت كه هنوز هم به نتيجهي نهايي نرسيده است.
در همين حول و حوش شخص ديگري با نام لينوس توروالدس از هلسينكي، پايتخت فلاند، بصورت مستقل و از همه مهمتر به تنهايي در حال توسعه يك هسته سيستم عامل بود كه بعدها لينوكس ناميده شد. جالب است بدانيد كه او كد سيستم عامل را با كامپايلر C گروه گنو و در سيستم عامل MINIX توسعه داده بود. او هسته سيستم عامل خود را تركيبي از نام خود بعلاوه x از يونيكس انتخاب كرد و LINUX ناميد. او در كتاب خود با نام Just for Fun نوشته است كه ناگهان متوجه شدم كه هسته يك سيستم عامل را نوشتهام:
درود به هر كس كه آن بيرون از مينيكس استفاده ميكند. من هماكنون روي سيستمعاملي (رايگان) براي رايانههاي (AT ۳۸۶(۴۸۶ كار ميكنم (فقط براي سرگرمي؛ مانند پروژهٔ گنو بزرگ و حرفهاي نيست). از ماه آوريل كار را آغاز كردهام و هماكنون اين سيستمعامل آمادهاست و كار ميكند. دوست دارم از ديدگاه ديگران در مورد سيستمعاملم با خبر شوم. چه آنان كه مينيكس را دوست دارند و چه آنان كه دوست ندارند. چرا كه سيستمعامل من تا حدي شبيه به مينيكس است.
در حال حاضر (۱٫۰۸)bash و(۱٫۴۰) gcc را بر روي آن دارم و چيزهاي ديگري كه به نظر ميرسد همه درست كار ميكنند. اين بدان معناست كه طي چند ماه آينده چيز بهدردبخوري فراهم خواهم كرد و دوست دارم بدانم مردم بيشتر چه امكاناتي لازم دارند. به هر پيشنهاد و نظري خوشآمد ميگويم اما قول نميدهم كه آن را انجام دهم!
لينوكس تورالدزلينوس توروالدس
لينوس توروالدس ابتدا سيستم عامل خود را براساس گواهي اختصاصي خود عرضه كرد كه طي آن امكان استفاده از لينوكس در هيچ فعاليت تجاري داده نميشد. اما توروالدس ميدانست كه سيستم عاملِ خالي، به درد كمتر كسي ميخورد و از اين رو بستههاي نرم افزاري گروه گنو كه داراي گواهي GPL بودند را به آن اضافه كرد و در قالب يك سيستم عامل عرضه كرد. او در سال ۱۹۹۲ تصميم گرفت كه خود هسته سيستم عامل را نيز براساس گواهي GPL عرضه كند. نامهاي مختلفي براي محصول نهايي تركيبي گنو + لينوكس در نظر گرفته شده است كه در ويكيپديا ميتوانيد شرح آن را بخوانيد، اما در نهايت نام انتخابي براي اين مجموعهي ارزشمند «گنو/لينوكس» بود.
توروالدس همواره به عنوان يكي از نخبههاي دنياي كامپيوتر شناخته ميشود، چرا كه او به تنهايي هستهي سيستم عاملي را نوشته و پشتيباني ميكند كه كمتر گروه بزرگي از برنامه نويسان قادر به توليد آن هستند. حتي برخي از كمپانيهايي كه از ميانه راه تصميم به توسعه مستقل لينوكس گرفتند كمي بعد متوجه شدند كه نميتوانند به خوبي توروالدس اين كار را انجام دهند و تا به امروز خود لينوس است كه بهترين بروز رساني و ارتقاء هسته لينوكس را انجام داده است. اما مهمترين دليل موفقيت و محبوبيت و بقاي لينوكس، گواهي GPL و فلسفهاي است كه استالمن آن را بنا نهاد،
امروزه تجربهي بازيكردن، بسيار متفاوت از آن چيزي است كه در 30 يا 40 سال پيش وجود داشت. نسل فعلي رايانهها، كنسولها و دستگاههاي همراه، ميتوانند سطحبالاترين بازيهاي سهبعدي را با ويژگيهاي نظير Shaders، Anti-Aliasing و... اجرا نمايند. اما زماني بود كه تنها بازيهاي نوشته-محور براي بازي وجود داشتند. اگر مايليد نوستالوژيهاي كودكي خود را زنده كنيد، هنوز برخي از اين بازيها در دسترس شما هستند. اين بار در ترمينال دستوري لينوكس!
اغلب بازيهاي قابل احترام نوشته-محور (Text-Based) از مجموعه بازيهاي BSD هستند. اين بازيها چندين دهه قبل به عنوان بخشي از توزيع BSD Unix نوشته شدهاند. حالا شما ميتوانيد در سال 2014، دوباره از بازي با آنها در لينوكس، لذت ببريد.
نكته: اگر نگوييم همه، لااقل اغلب اين بازيها ميتوانند روي هر توزيعي از لينوكس نصب شوند. در اين آموزش، ما بر روي نصب اين بازيها بر روي توزيع محبوب اوبونتو تمركز كردهايم. اگر شما از اين توزيع استفاده نميكنيد، ميتوانيد اين بازيها را از Package Manager خود نصب نماييد.
براي نصب مجموعه بازيهاي BSD در اوبونتو، از دستور ذيل استفاده كنيد:
sudo apt-get install bsdgames
در مجموع 43 بازي در اين مجموعه وجود دارد. اين بازيها عبارتند از:
Random, Gomoku, Caesar, Countmail, rot13, bcd, atc, number, boggle, quiz, morse, teachgammon, snake, snscore, pig, wargames, tetris-bsd, adventure, arithmetic, worms, hunt, canfield, battlestar, rain, robots, cribbage, dab, sail, wump, trek, phantasia, wtf, go-fish, monop, backgammon, worm, hack, ppt, primes, hangman, pom, cfscores, mille
اين ليست از بازيهاي بسيار كلاسيك و معروف تشكيل شده است: adventure، يكي از اصيلترين بازيهاي نوشته-محور و همانند نام آن، جذاب است. Worm، نسخه اصلي بازي معروف Snake است كه يكي از جذابترين ويژگيهاي گوشيهاي نوكيا به حساب ميآمد. Tetris-BSD، نسخه تحت ترمينال بازي قديمي Tetris است. و Trek، يك بازي براي مجموعهي تلويزيوني پيشتازان فضا (Star Trek) كه در آن ميبايست Klingons را بكشيد (البته اين بازي پيش از اين مجموعهي تلويزيوني توليد شود).
tetris-bsd
اگر مايليد كه بازي Tetrisرا در ترمينال لينوكس بازي كنيد، ميتوانيد نسخه بهتري را از آنچه در مجموعه بازيهاي BSD وجود دارد، با نام Bastet نصب نماييد. براي نصب آن روي اوبونتو از اين دستور استفاده كنيد:
sudo apt-get install bastet
براي اجراي بازي نيز كلمهي bastet را تايپ كنيد.
bastet
اما بازيهاي نوشته-محور به مجموعه بازيهاي BSD يا Tetris ختم نميشوند؛ موارد بسيار ديگري نيز وجود دارند. نظر شما در رابطه با يك نسخه از سري بازيهاي كلاسيك مهاجمان فضايي چيست؟ اسم اين بازي ninvaders است و با دستور ذيل ميتوانيد آن را نصب كنيد:
sudo apt-get install ninvaders
حرف n در ابتداي اسم اين بازي نشان از اين حقيقت دارد كه اين بازي با استفاده از كتابخانهي ncurses نوشته شده است. اين كتابخانه API را براي برنامهنويسان ارائه ميدهد كه بتوانند رابطكاربري نوشته-محوري را در قالب يك ترمينال مستقل، بنويسند.
ninvaders
اگر تصور ميكنيد بازيهاي معروفي مانند Temple Run يا Subway Surfer در گوشيهاي هوشمند، نوع و دستهي جديد از بازيها را خلق كردهاند، پس بهتر است كمي بيشتر فكر كنيد! نظر شما در رابطه با بازي Moon-buggy چيست؟ در اين بازي شما يك ماشين را در سطح ماه ميرانيد؛ در حاليكه تلاش ميكنيد تا با پريدن، از برخورد با دهانهي كوههاي ماه جلوگيري كنيد. اين بازي هم قابليت نصب بر روي اوبونتو را با استفاده از دستور ذيل دارد:
sudo apt-get install moon-buggy
moonbuggy
يكي ديگر از بازيهاي جذاب، بازي 2048 بود. اين بازي كه بر روي وب و گوشيهاي هوشمند نيز در دسترس است، براي يادگيري بسيار ساده خواهد بود؛ ولي براي حرفهاي شدن بسيار سخت! ايدهي اين بازي، كشيدن كاشيهاي شمارهگذاري شده در سطحي 4 در 4 است. دو كاشي كه يكديگر را لمس ميكنند، ادغام ميشوند. شما ميبايست ادغامنمودن كاشيها را آنقدر ادامه دهيد تا كاشي با مقدار 2048 را بدست آوريد. نسخهي نوشته-محور اين بازي نيز موجود است.
اين بازي نياز دارد تا از كد منبع خود ساخته شود كه كار آنچنان پيچيدهاي نيست. كافيست دستورهاي ذيل را در ترمينال وارد كنيد:
wget https://raw.githubusercontent.com/mevdschee/2048.c/master/2048.c
gcc -o 2048 2048.c
اين دستورات ابتدا كد بازي را دانلود كرده و سپس آن را در پوشهي جاري، ميسازد. سپس براي اجراي آن، ميتوانيد از اين دستور استفاده كنيد:
./2048
2048.c