تاریخچه گنو/لینوکس
گنو
گنو (GNU) یک سیستمعامل آزاد شبهیونیکس است که توسط پروژهی گنو توسعه پیدا میکند. گنو مخفف "گنو یونیکس نیست" (GNU's Not Unix) است و این نام بخاطر این انتخابشده که اولاً طراحی گنو، شبهیونیکس است و ثانیاً گنو جزء نرمافزارهای آزاد بوده و از کدهای یونیکس استفاده نمیکند. ریچارد استالمن موسس بنیاد نرمافزار آزاد، کار خود در دانشگاه MIT را در سال 1971 آغاز کرد. در آن زمان نرمافزارهای آزاد، همکاری برنامهنویسان و کاربران، به اشتراکگذاری کد و ... رونق داشت. اما در دههی 80 انحصار و مالکیت بر نرمافزارها، عدم قبول همکاری کاربران در گسترش نرمافزارها و بطور خلاصه تجاریشدن نرمافزارها شدت گرفت. پروژهی گنو جنبشی بر علیه محدودیتها و موانع اعمالشده توسط صاحبان نرمافزارهای انحصاری و با هدف طراحی نرمافزار آزاد بود. قدم اول در این راه ایجاد یک سیستمعامل آزاد بود. طراحی سیستمعامل گنو توسط ریچارد استالمن در سال 1983 آغاز شد. استالمن همچنین در سال 1985 بنیاد نرمافزار آزاد را بیشتر با هدف جذب سرمایه برای توسعهی گنو تاسیس کرد. در ابتدا اجزاء مورد نیاز هسته گنو مثل: ویرایشگرها، پوستهها، کامپایلرها و سایر ابزارها طراحی و پیادهسازی شدند اما هستهی سیستمعامل هنوز مهیا نبود. هستهی گنو، هرد (Hurd) نام دارد و از سال 1990 تاکنون در دست توسعه است. با این وجود هستههای غیر گنو که معروفترین آنها لینوکس است (لینوس توروالدز هستهی لینوکس را در سال 1991 نوشت و آنرا تحت مجوز GPL منتشر کرد.) میتوانند با نرمافزارهای آزاد گنو کار کنند. سیستمعامل گنو/لینوکس محصول ترکیب هستهی لینوکس و نرمافزارهای آزاد گنو است. در وبسایت اختصاصی پروژهی گنو هدف نهایی این پروژه بدین شکل بیان شده است:
پروژهی گنو فقط به یک سیستمعامل محدود نشده است. ما در نظر داریم تا یک مجموعه کامل از نرمافزارها را ایجاد کنیم، هر آنچه که بسیاری از کاربران میخواهند داشته باشند. هدف نهایی فراهمکردن نرمافزارهای آزاد برای انجام تمام کارهایی که کاربران کامپیوتر میخواهند انجام دهند و در نتیجه مطرودکردن نرمافزارهای انحصاری است.
یونیکس
به منظور درک محبوبیت لینوکس باید سفری به زمان گذشته داشته باشیم، در حدود 30 سال پیش ...
کامپیوترها را به اندازهی خانهها تجسم کنید، حتی به اندازهی استادیومها. علاوه بر اینکه اندازهی آن کامپیوترها مشکلات قابل توجهی بوجود میآورد مسئله دیگری نیز این را بدتر میکرد: هر کامپیوتر سیستم عامل مجزایی داشت. نرمافزار، برای برآوردهکردن یک نیاز خاص سفارشی میشد و نرمافزار روی یک سیستم، بر روی سیستم دیگری اجرا نمیشد. قابلیت کار کردن با یک سیستم به این معنی نبود که شما میتوانید با دیگری هم کار کنید. این قضیه هم برای کاربران و هم برای مدیران سیستم دشوار بود.
کامپیوترها بینهایت گران بودند و حتی پس از خرید اصلی باید تلاشهایی در جهت اینکه کاربران بفهمند آنها چگونه کار میکنند صورت میگرفت. کل هزینه بر مبنای واحد قدرت محاسباتی بسیار هنگفت بود.
فناوری جهان نسبتاً پیشرفته نبود بنابراین آنها مجبور بودند با این وضع برای یک دههی دیگر کنار بیایند. در سال 1969 یک تیم از توسعهدهندگان در آزمایشگاههای بل روی راهحلی برای معضل نرمافزار جهت درستکردن اینگونه مشکلات سازگاری شروع به کار کردند. آنها سیستم عامل جدیدی را توسعه دادند که:
1- ساده و دلپسند بود.
2- به جای کد اسمبلی با زبان برنامهنویسی سی نوشته شده بود.
3- قادر به بازیافت کد بود.
توسعهدهندگان آزمایشگاههای بل نام پروژهشان را یونیکس (Unix) گذاشتند.
ویژگیهای بازیافت کد بسیار مهم بودند. تا آن زمان همهی سیستمهای کامپیوتری تجاری موجود با کدی نوشته شده بودند که به طور خاص برای یک سیستم توسعه داده شده بود. از طرف دیگر یونیکس فقط به تکهی کوچکی از آن کد بخصوص نیاز داشت که امروزه عموماً هسته نامیده میشود. این هسته تنها تکه کدی است که برای انطباق با هر سیستم بخصوص و شکلدادن به پایهی سیستم یونیکس مورد نیاز است. سیستم عامل و همهی کارکردهای دیگر، حول این هسته ساخته و در زبان برنامهنویسی سطح بالاتر سی نوشته شدهاند. این زبان به طور ویژه برای ایجاد سیستم یونیکس توسعه داده شد. با استفاده از این تکنیک جدید توسعهی سیستم عاملی که بتواند روی سختافزارهای مختلف اجرا شود بسیار آسانتر شد.
فروشندگان نرمافزار به سرعت وفق پیدا کردند، چون میتوانستند دهها بار بیشتر نرمافزاری که تقریباً بیدردسر بود را بفروشند. موقعیتهای شگفتانگیزی بوجود آمد: تصور اینکه برای نمونه کامپیوترهای فروشندگان مختلف در یک شبکهی واحد ارتباط برقرار کنند، یا کاربرانی که بدون اینکه نیاز داشته باشند برای استفاده از کامپیوتر دیگر آموزش اضافی ببینند، روی سیستمهای گوناگون کار میکنند. یونیکس سهم بسزایی در جهت کمک به کاربران برای سازگاری با سیستمهای مختلف ایفا کرد.
در طول چند دههی آینده توسعهی یونیکس ادامه پیدا کرد. انجام خیلی از چیزها امکانپذیر شد و بسیاری از فروشندگان سختافزار و نرمافزار، پشتیبانی از یونیکس را برای محصولاتشان اضافه کردند.
یونیکس در ابتدا تنها در محیطهای خیلی وسیع با مینفریمها و مینیکامپیوترها مستقر شد. (توجه داشته باشید که پیسی یک میکروکامپیوتر است). شما مجبور بودید برای کار کردن با یک سیستم یونیکس، یا در یک دانشگاه، یا برای دولت و یا برای موسسات مالی بزرگ کار کنید.
اما کامپیوترهای کوچکتر توسعه پیدا کردند و در اواخر دههی ۸۰ بسیاری از مردم کامپیوتر خانگی داشتند. در آن زمان چندین نسخه از یونیکس برای معماری پیسی موجود بود اما هیچکدام از آنها واقعا آزاد و مهمتر از آن سریع نبودند، همهی آنها بطور وحشتناکی کند بودند، بنابراین خیلی از مردم با MS DOS یا Windows 3.1 روی کامپیوترهای خانگیشان کار میکردند.
لینوس و لینوکس
با آغاز دههی ۹۰ کامپیوترهای خانگی سرانجام به اندازهای قدرتمند شدند که بتوانند یک یونیکس تمامعیار را اجرا کنند. لینوس توروالدز، جوانی که در دانشگاه هلسینکی علوم کامپیوتر میخواند، فکر کرد ایدهی خوبی است که یک جور نسخهی دانشگاهی آزادانه در دسترس یونیکس را داشته باشد و بیدرنگ شروع به کدنویسی کرد.
او شروع به سوالپرسیدن، یافتن جوابها و راهحلهایی که میتوانست به او در داشتن یونیکس روی پیسیاش کمک کند، کرد. در زیر یکی از اولین پستهای او در comp.os.minix مربوط به سال 1991 را مشاهده میکنید:
From: [email protected] (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Gcc-1.40 and a posix-question
Message-ID: 1991Jul3.100050.9886@klaava.Helsinki.FI
Date: 3 Jul 91 10:00:50 GMTسلام شبکهایها،
به خاطر پروژهای که مشغول آن هستم (در مینیکس)، علاقمندم تعاریف استاندارد پوسیکس را داشته باشم. ممکن است یک نفر من را به یک نسخه (ترجیحا) قابل خواندن توسط ماشین از جدیدترین نسخه راهنمایی کند؟ سایتهای اف.تی.پی. خیلی خوب خواهند بود.
از همان آغاز هدف لینوس داشتن یک سیستم آزاد که با یونیکس اصلی سازگار باشد بود. به همین علت او در مورد استانداردهای POSIX پرسید، POSIX هنوز هم استاندارد یونیکس است.
آن روزها نصب و اجرا (plug-and-play) هنوز اختراع نشده بود اما خیلی از مردم علاقهمند به داشتن یک سیستم یونیکس برای خودشان بودند که این فقط یک مشکل کوچک بود. درایورهای جدید با شتاب تندی برای همه نوع سختافزار جدید در دسترس قرار گرفتند. تقریباً به محض اینکه قطعهی سختافزاری جدیدی در دسترس قرار میگرفت شخصی آنرا میخرید و جهت تست لینوکس ارائه میکرد. با فراخوانی تدریجی سیستم، کد آزاد بیشتری برای پهنهی وسیعی از سختافزارها منتشر میشد. این کدنویسان روی کامپیوترهای خودشان متوقف نشدند، هر قطعهی سختافزاری که میتوانستند پیدا کنند برای لینوکس مفید بود.
در آن زمان آن دسته از مردم nerds یا freaks نامیده میشدند، اما این از زمانی که لیست سختافزارهای پشتیبانیشده طولانیتر و طولانیتر میشد برایشان مهم نبود. بواسطهی این افراد، لینوکس امروز تنها مناسب برای اجرا روی کامپیوترهای جدید نیست، بلکه همچنین سیستم انتخابی جهت سختافزارهای قدیمی و کمنظیر هم هست به نحوی که اگر لینوکس وجود نداشت بلااستفاده بودند.
دو سال پس از پست لینوس، ۱۲۰۰۰ کاربر لینوکس وجود داشت.پروژهای محبوب با همراهی علاقهمندان و رشد مداوم است، در حالی که در قلمرو استاندارد POSIX میماند. همهی ویژگیهای یونیکس در چند سال آینده اضافه گشت و نتیجه آن سیستم عامل بالغ لینوکس امروزی است. لینوکس یک clone کامل از یونیکس است، مناسب برای استفاده در ایستگاههای کاری و همچنین در سرورهای متوسط و سطح بالا میباشد.