خلاصهای از تاریخچه لینوکس
# معرفی
در استفاده رایج، «لینوکس» اغلب به گروهی از توزیعهای سیستمعاملی اشاره دارد که حول هسته لینوکس ساخته شدهاند. با این حال، به معنای دقیق، لینوکس فقط به حضور خود هسته اشاره دارد. برای ایجاد یک سیستم عامل کامل، توزیعهای لینوکس اغلب شامل ابزار و کتابخانههایی از پروژه گنو و منابع دیگر میشوند. توسعه دهندگان بیشتری اخیرا از لینوکس برای ساخت و اجرای برنامه های کاربردی موبایل استفاده کرده اند. همچنین نقش کلیدی در توسعه دستگاههای مقرونبهصرفه مانند کرومبوکها که سیستمعاملها را بر روی هسته اجرا میکنند، ایفا کرده است. در محاسبات ابری و محیط های سرور به طور کلی، لینوکس به دلایل عملی یک انتخاب محبوب است:
- توزیعهای آن همچنان فعال هستند و توسط جوامع توسعهدهندگان دیگر پشتیبانی میشود.
- می تواند بر روی طیف گسترده ای از سخت افزار اجرا شود و در کنار سیستم های از قبل موجود نصب می شود.
- از نصب نرم افزار متمرکز از مخازن از قبل موجود پشتیبانی می کند.
- به منابع کمی برای اجرا نیاز دارد.
- زمانی که توسعهدهندگان در حال ساخت اکوسیستمهای برنامه و ابزارسازی برای سرورها هستند، که منجر به سطوح بالایی از سازگاری میشود، اغلب مهم است.
- تغییرات لازم را در رفتارهای سیستم عامل انجام می دهد.
لینوکس همچنین ریشههای خود را در جنبش نرمافزاری آزاد و متنباز دنبال میکند، و در نتیجه برخی از توسعهدهندگان آن را به دلایل اخلاقی و عملی انتخاب میکنند:
- برای برخی از توسعه دهندگان، استفاده از لینوکس نشان دهنده تعهد به دسترسی و آزادی بیان است.
- جامعه لینوکس نیز برای برخی از توسعه دهندگان جذاب است: وقتی سؤالی دارند، می توانند با منابع تولید شده توسط این انجمن مشورت کنند یا مستقیماً با یکی از چندین نگهدارنده فعال ارتباط برقرار کنند.
برای درک نقش لینوکس در جامعه توسعه دهندگان (و فراتر از آن)، این مقاله به شرح مختصری از تاریخچه لینوکس از طریق یونیکس می پردازد و برخی از توزیع های محبوب لینوکس را مورد بحث قرار می دهد.
دوره مرتبط: دوره آموزش لینوکس(linux)
# ریشههای لینوکس
لینوکس ریشه در Unix و Multics دارد، دو پروژه ای که هدف مشترک آنها توسعه یک سیستم عامل قوی چند کاربره است.
+ شروع Unix
یونیکس از تکرار پروژه Multics در مرکز تحقیقات علوم کامپیوتر آزمایشگاه Bell توسعه یافته است. توسعهدهندگانی که در آزمایشگاههای بل و جاهای دیگر روی Multics کار میکنند علاقهمند به ساختن یک سیستمعامل چند کاربره با ذخیرهسازی تک سطحی، پیوند پویا (که در آن یک فرآیند در حال اجرا میتواند درخواست کند که بخش دیگری به فضای آدرس آن اضافه شود، تا آن را قادر به اجرا آن بخش از کد کند.)، و یک فایل سیستم سلسله مراتبی.
آزمایشگاه بل در سال 1969 کمک مالی به پروژه Multics را متوقف کرد، اما گروهی از محققان، از جمله کن تامپسون و دنیس ریچی، به کار با اصول اصلی پروژه ادامه دادند. در سالهای 1973-1972 آنها تصمیم گرفتند سیستم را به زبان C بازنویسی کنند، که یونیکس را بهطور منحصربهفردی قابل حمل کرد: برخلاف سایر سیستمعاملهای معاصر، این سیستم میتوانست هم از سختافزار خود حرکت کند و هم از سختافزار خود استفاده کند.
تحقیق و توسعه در آزمایشگاههای بل (بعداً AT&T) ادامه یافت و آزمایشگاههای سیستم یونیکس نسخههای یونیکس را با مشارکت Sun Microsystems توسعه دادند که به طور گسترده توسط فروشندگان تجاری یونیکس مورد استفاده قرار میگرفت. در همین حال، تحقیقات در محافل دانشگاهی، به ویژه گروه تحقیقاتی سیستم های کامپیوتری در دانشگاه کالیفرنیا برکلی، ادامه یافت. این گروه توزیع نرمافزار برکلی (BSD) را تولید کرد که الهامبخش طیف وسیعی از سیستمعاملها بود که بسیاری از آنها هنوز در حال استفاده هستند. دو توزیع BSD عبارتند از NeXTStep، سیستم عامل پیشگام توسط NeXT، که مبنایی برای macOS شد، در میان سایر محصولات، و MINIX، یک سیستم عامل آموزشی که مبنای مقایسه ای را برای لینوس توروالدز در هنگام توسعه لینوکس تشکیل داد.
دوره پیشنهادی: دوره آموزش shell scripting
+ ویژگیهای Unix
یونیکس حول اصول وضوح، قابل حمل بودن و همزمانی است.
• وضوح: طراحی ماژولار یونیکس به توابع اجازه می دهد تا به روشی محدود و تعریف شده اجرا شوند. سیستم فایل آن یکپارچه و سلسله مراتبی است که دستکاری داده ها را ساده می کند. برخلاف برخی از پیشینیان خود، یونیکس صدها (و نه هزاران) فراخوانی سیستمی را پیاده سازی می کند، که هر یک از آنها به گونه ای طراحی شده اند که هدفشان ساده و واضح باشد.
• قابلیت حمل: با نوشتن یونیکس به زبان C، گروه آزمایشگاه بل، یونیکس را برای استفاده در مقیاس وسیع و پذیرش قرار داد. C برای دسترسی سطح پایین به حافظه، حداقل پشتیبانی از زمان اجرا، و یک رابطه کارآمد بین زبان و دستورالعمل های ماشین طراحی شده است. پایه در C به این معنی است که یونیکس سازگار است و به راحتی بر روی انواع سخت افزار اجرا می شود.
• همزمانی: هسته یونیکس در راستای هدف (به اشتراک گذاشته شده توسط پروژه Multics) برای حفظ چندین کاربر و گردش کار طراحی شده است. فضای هسته از فضای کاربر در یونیکس متمایز است، که به چندین برنامه اجازه می دهد همزمان اجرا شوند.
مقاله پیشنهادی: SELinux چیست؟
# انقلاب لینوکس
یونیکس سوالات مهمی را برای توسعه دهندگان مطرح کرد، اما در اولین تکرارهای خود نیز اختصاصی باقی ماند. بنابراین، فصل بعدی تاریخ آن، داستان این است که چگونه توسعه دهندگان در داخل و علیه آن برای ایجاد جایگزین های رایگان و منبع باز کار کردند.
+ آزمایشهای منبع باز
ریچارد استالمن یکی از شخصیتهای اصلی در میان توسعهدهندگانی بود که از ایجاد جایگزینهای غیر اختصاصی برای یونیکس الهام گرفتند. زمانی که در آزمایشگاه هوش مصنوعی MIT کار می کرد، کار بر روی پروژه گنو (بازگشتی برای "GNU's not Unix!") را آغاز کرد و در نهایت در سال 1984 آزمایشگاه را ترک کرد تا بتواند اجزای گنو را به عنوان نرم افزار رایگان توزیع کند. هسته گنو که با نام GNU HURD شناخته می شود، کانون تمرکز بنیاد نرم افزار آزاد (FSF) شد که در سال 1985 تأسیس شد و در حال حاضر توسط استالمن اداره می شود.
در همین حال، یک توسعهدهنده دیگر مشغول کار بر روی یک جایگزین رایگان برای یونیکس بود: لینوس توروالدز، دانشجوی کارشناسی فنلاندی. توروالدز پس از ناامید شدن از صدور مجوز برای MINIX، در 25 آگوست 1991 به یک گروه کاربر MINIX اعلام کرد که در حال توسعه سیستم عامل خود است که شبیه MINIX است. اگرچه در ابتدا بر روی MINIX با استفاده از کامپایلر GNU C توسعه یافت، اما هسته لینوکس به سرعت به یک پروژه منحصر به فرد با هسته توسعه دهندگان تبدیل شد که نسخه 1.0 هسته را با Torvalds در سال 1994 منتشر کردند.
توروالدز از کد گنو، از جمله کامپایلر گنو سی، با هسته خود استفاده می کرد، و این درست است که بسیاری از توزیع های لینوکس از اجزای گنو استفاده می کنند. استالمن لابی کرده است تا اصطلاح «لینوکس» را به «گنو/لینوکس» بسط دهد، که به عقیده او هم نقش پروژه گنو در توسعه لینوکس و هم ایدهآلهای زیربنایی که پروژه گنو و هسته لینوکس را تقویت میکنند، نشان میدهد. امروزه از "لینوکس" اغلب برای نشان دادن وجود هسته لینوکس و عناصر گنو استفاده می شود. در عین حال، سیستمهای تعبیهشده در بسیاری از دستگاههای دستی و تلفنهای هوشمند اغلب از هسته لینوکس با اجزای گنو یا کم یا بدون هیچ مؤلفهای استفاده میکنند.
مقاله پیشنهادی: چرا مردم نرمافزارهای open source میسازند؟
+ ویژگیهای Linux
اگرچه هسته لینوکس اهداف و ویژگیهای زیادی را از یونیکس به ارث برده است، اما به روشهای زیر با سیستم قبلی متفاوت است:
• لینوکس جزء اصلی آن هسته(kernel) است که به طور مستقل از سایر اجزای سیستم عامل توسعه یافته است. این بدان معناست که لینوکس عناصر را از منابع مختلف (مانند گنو) قرض می گیرد تا کل یک سیستم عامل را تشکیل دهد.
• لینوکس رایگان و متن باز است. این هسته که توسط جامعه ای از توسعه دهندگان نگهداری می شود، تحت مجوز عمومی عمومی گنو (شاخه ای از کار FSF در پروژه گنو) مجوز دارد و برای دانلود و اصلاح در دسترس است. GPL تصریح می کند که کار مشتق باید شرایط مجوز نرم افزار اصلی را حفظ کند.
• لینوکس یک هسته یکپارچه، شبیه به یونیکس دارد، اما می تواند به صورت پویا کد هسته را در صورت تقاضا بارگیری و آزاد کند.
• برخلاف پیاده سازی های سنتی یونیکس، از چند پردازنده متقارن (SMP) پشتیبانی می کند. این بدان معناست که یک سیستم عامل واحد می تواند به چندین پردازنده دسترسی داشته باشد که یک حافظه اصلی مشترک دارند و به همه دستگاه های ورودی/خروجی دسترسی دارند.
• هسته لینوکس پیشگیرانه است، تفاوت دیگری با یونیکس. این به این معنی است که زمانبند میتواند یک سوئیچ زمینه را بر روی یک درایور یا بخش دیگری از هسته در حین اجرا مجبور کند.
• هسته آن بین thread ها و فرآیندهای معمولی تفاوتی قائل نمی شود.
• لینوکس شامل یک رابط خط فرمان (CLI) و همچنین می تواند شامل یک رابط کاربری گرافیکی (GUI) باشد.
# توزیعهای محبوب لینوکس
امروزه توسعه دهندگان بسیاری از توزیع های محبوب لینوکس را حفظ می کنند. در میان قدیمی ترین ها، Debian، یک توزیع رایگان و متن باز است که دارای 50000 بسته نرم افزاری است. دبیان الهامبخش یکی دیگر از توزیعهای محبوب، اوبونتو، با سرمایهگذاری Canonical Ltd است.
رابطه مشابهی بین Red Hat، Fedora و CentOS وجود دارد. Red Hat در سال 1993 یک توزیع لینوکس ایجاد کرد و ده سال بعد تلاش های خود را به Red Hat Enterprise Linux و Fedora تقسیم کرد، یک سیستم عامل مبتنی بر جامعه که از هسته لینوکس و عناصر پروژه GNU استفاده می کند. Red Hat همچنین با پروژه CentOS، یکی دیگر از توزیعهای محبوب لینوکس برای سرورهای وب، رابطه دارد. با این حال، این رابطه شامل نگهداری پرداختی نمی شود. مانند دبیان، CentOS توسط جامعه ای از توسعه دهندگان نگهداری می شود.
# نتیجه گیری
در این مقاله به ریشه های لینوکس در یونیکس و برخی از ویژگی های تعیین کننده آن پرداخته ایم.