مقدمه
در استفاده عمومی، «لینوکس» اغلب به گروهی از توزیعهای سیستمعامل اشاره دارد که بر اساس هسته لینوکس ساخته شدهاند. اما در معنای دقیقتر، لینوکس تنها به وجود هسته خود اشاره دارد. برای ساخت یک سیستمعامل کامل، توزیعهای لینوکس معمولاً ابزارها و کتابخانههایی از پروژه GNU و منابع دیگر را شامل میشوند. اخیراً توسعهدهندگان بیشتری از لینوکس برای ساخت و اجرای برنامههای موبایل استفاده کردهاند؛ این سیستمعامل همچنین نقش مهمی در توسعه دستگاههای مقرون به صرفه مانند کرومبوکها ایفا کرده است، که سیستمعاملهایی را بر روی هسته اجرا میکنند. در محیطهای رایانش ابری و سرور به طور کلی، لینوکس به دلایل عملیاتی خاصی یک انتخاب محبوب است:
- توزیعهای آن بهروز و توسط جوامع دیگر توسعهدهندگان پشتیبانی میشوند.
- این سیستمعامل میتواند بر روی طیف وسیعی از سختافزارها اجرا شود و میتواند در کنار سیستمهای موجود نصب شود (ویژگی مفیدی در محیطهای توسعه محلی).
- از نصب متمرکز نرمافزار از مخازن پیشساخته پشتیبانی میکند.
- نیاز به منابع آن پایین است.
- هنگامی که توسعهدهندگان در حال ساخت اکوسیستمهای برنامهنویسی و ابزارهای مورد نیاز برای سرورها هستند، لینوکس معمولاً انتخاب اول است، که منجر به سازگاری بالایی میشود.
- امکان اعمال تغییرات لازم بر رفتارهای سیستمعامل را فراهم میآورد.
لینوکس همچنین ریشه در جنبش نرمافزار آزاد و منبع باز دارد و به همین دلیل برخی از توسعهدهندگان به دلایل اخلاقی و عملیاتی از آن استفاده میکنند:
- برای برخی از توسعهدهندگان، استفاده از لینوکس به معنی تعهد به دسترسی آزاد و آزادی بیان است.
- جامعه لینوکس نیز برای برخی از توسعهدهندگان جذاب است: زمانی که سوالی دارند، میتوانند به منابع تولید شده توسط این جامعه مراجعه کنند یا مستقیماً با یکی از نگهدارندگان فعال ارتباط برقرار کنند.
برای درک نقش لینوکس در جامعه توسعهدهندگان (و فراتر از آن)، این مقاله تاریخچهای مختصر از لینوکس از طریق یونیکس را تشریح میکند و برخی از توزیعهای محبوب لینوکس را بررسی میکند.
ریشهها در یونیکس
لینوکس ریشه در یونیکس و مولتیکس دارد، دو پروژهای که هدفشان توسعه یک سیستمعامل چندکاربره قوی بود.
آغاز یونیکس
یونیکس از پروژه مولتیکس در آزمایشگاههای بل در مرکز تحقیقاتی علوم کامپیوتر آنجا توسعه یافت. توسعهدهندگانی که در مولتیکس در بل لبز و جاهای دیگر کار میکردند، علاقهمند به ساخت یک سیستمعامل چندکاربره با ذخیرهسازی تکسطحی، لینکسازی پویا (که در آن یک فرآیند در حال اجرا میتواند از سیستم بخواهد که بخش دیگری به فضای آدرس آن اضافه شود تا بتواند کد آن بخش را اجرا کند) و یک سیستمفایل سلسلهمراتبی بودند.
آزمایشگاههای بل در سال ۱۹۶۹ بودجه پروژه مولتیکس را متوقف کردند، اما گروهی از پژوهشگران، از جمله کن تامپسون و دنیس ریچی، به کار خود با اصول اصلی این پروژه ادامه دادند. در سالهای ۱۹۷۲-۱۹۷۳ آنها تصمیم گرفتند سیستم را به زبان C بازنویسی کنند، که یونیکس را بهطور منحصر به فردی قابل حمل کرد: برخلاف سایر سیستمعاملهای معاصر، یونیکس میتوانست از سختافزار خود حرکت کند و آن را زنده نگه دارد.
تحقیقات و توسعه در آزمایشگاههای بل (بعداً AT&T) ادامه یافت، با این حال، آزمایشگاههای سیستمهای یونیکس نسخههایی از یونیکس را در همکاری با شرکت سان میکروسیستمز توسعه دادند که توسط فروشندگان تجاری یونیکس بهطور وسیعی پذیرفته شد. در همین حال، تحقیقات در دایرههای آکادمیک ادامه یافت، بهویژه گروه تحقیقاتی سیستمهای کامپیوتری در دانشگاه کالیفرنیا برکلی. این گروه توزیع نرمافزار برکلی (BSD) را تولید کرد که الهامبخش سیستمعاملهای مختلفی شد که بسیاری از آنها هنوز هم در حال استفاده هستند. دو توزیع تاریخی BSD شامل NeXTStep است، سیستمعاملی که توسط NeXT پیشگام شد و مبنای macOS و دیگر محصولات شد، و MINIX، سیستمعاملی آموزشی که مبنای مقایسه برای لینوس توروالدز به هنگام توسعه لینوکس شد.
ویژگیهای کلیدی یونیکس
یونیکس بر اصول روشنی، قابلیت حمل و همزمانی متمرکز است.
- وضوح: طراحی مدولار یونیکس به توابع اجازه میدهد تا به صورت محدود و مشخص اجرا شوند. سیستم فایل آن یکپارچه و سلسلهمراتبی است که دستکاری دادهها را ساده میکند. برخلاف برخی از پیشینیانش، یونیکس صدها (نه هزاران) سیستمکال را پیادهسازی میکند که هرکدام بهطور مستقیم و روشن هدف خود را دنبال میکنند.
- قابلیت حمل: با نوشتن یونیکس به زبان C، گروه آزمایشگاههای بل یونیکس را برای استفاده و پذیرش گسترده آماده کردند. زبان C به گونهای طراحی شده بود که دسترسی کمعمق به حافظه، پشتیبانی حداقلی از زمان اجرا و رابطهای کارآمد بین زبان و دستورات ماشین را فراهم کند. پایهگذاری یونیکس بر C به این معنی است که این سیستمعامل قابل تطبیق است و به راحتی میتواند بر روی انواع سختافزارها اجرا شود.
- همزمانی: هسته یونیکس به هدف (مشترک با پروژه مولتیکس) برای پشتیبانی از چندین کاربر و جریان کاری طراحی شده است. فضای هسته در یونیکس از فضای کاربر متمایز است که به این ترتیب به چندین برنامه اجازه میدهد تا به طور همزمان اجرا شوند.
تکامل لینوکس
یونیکس سوالات مهمی را برای توسعهدهندگان مطرح کرد، اما در نسخههای اولیه خود همچنان مختص و مالکیتی بود. بنابراین، فصل بعدی تاریخ آن داستان نحوه کار توسعهدهندگان در چارچوب و در برابر آن است که به ایجاد جایگزینهای آزاد و متنباز منجر شد.
آزمایشهای متنباز
ریچارد استالمن یکی از شخصیتهای مرکزی در میان توسعهدهندگانی بود که برای ایجاد جایگزینهای غیرمالکیتی برای یونیکس الهام گرفتند. در حین کار در آزمایشگاه هوش مصنوعی MIT، او کار بر روی پروژه GNU را آغاز کرد (که مخفف “GNU’s not Unix!” است) و در نهایت در سال ۱۹۸۴ از آزمایشگاه خارج شد تا اجزای GNU را بهعنوان نرمافزار رایگان توزیع کند. هسته GNU، معروف به GNU HURD، به مرکز توجه بنیاد نرمافزار آزاد (FSF) تبدیل شد که در سال ۱۹۸۵ تأسیس شد و همچنان تحت هدایت استالمن است.
در همین حال، یک توسعهدهنده دیگر در حال کار بر روی یک جایگزین رایگان برای یونیکس بود: لینوس توروالدز، دانشجوی کارشناسی فنلاندی. پس از اینکه از مجوز MINIX ناامید شد، توروالدز در تاریخ ۲۵ اوت ۱۹۹۱ به گروه کاربران MINIX اعلام کرد که در حال توسعه سیستمعاملی است که مشابه MINIX باشد. اگرچه این هسته ابتدا روی MINIX با استفاده از کامپایلر C GNU توسعه یافت، اما هسته لینوکس به سرعت به یک پروژه منحصر به فرد تبدیل شد که تیمی از توسعهدهندگان آن را با نسخه 1.0 در سال ۱۹۹۴ منتشر کردند.
ویژگیهای کلیدی لینوکس
اگرچه هسته لینوکس بسیاری از اهداف و ویژگیهای یونیکس را به ارث برده است، اما در موارد زیر از سیستم قبلی متفاوت است:
- اجزای اصلی آن هسته است، که به طور مستقل از سایر اجزای سیستمعامل توسعه مییابد. این بدان معناست که لینوکس از منابع مختلف (مانند GNU) برای ساخت یک سیستمعامل کامل استفاده میکند.
- این سیستمعامل رایگان و متنباز است. هسته آن تحت مجوز عمومی GNU (یکی از نتایج کار FSF بر روی پروژه GNU) است و برای دانلود و اصلاح در دسترس قرار دارد. GPL stipulates که کارهای مشتق شده باید شرایط مجوز نرمافزار اصلی را حفظ کنند.
- لینوکس دارای یک هسته مونو لیتیک است، مشابه یونیکس، اما میتواند کد هسته را به صورت پویا بارگذاری و بارگذاری کند.
- این سیستمعامل از پشتیبانی چندپردازندهای (SMP) برخوردار است، برخلاف پیادهسازیهای سنتی یونیکس.
- هسته آن پیشبینیپذیر است، که تفاوت دیگری از یونیکس به شمار میآید.
- هسته آن تفاوتی بین نخها و فرآیندهای عادی قائل نمیشود.
- این سیستمعامل دارای یک رابط خط فرمان (CLI) است و میتواند یک رابط کاربری گرافیکی (GUI) نیز داشته باشد.
توزیعهای محبوب لینوکس
توسعهدهندگان امروزه بسیاری از توزیعهای محبوب لینوکس را نگهداری میکنند. از بین آنها، یکی از قدیمیترینها Debian است، یک توزیع رایگان و متنباز که 50,000 بسته نرمافزاری دارد. Debian الهامبخش توزیع محبوب دیگری به نام Ubuntu بوده است که توسط Canonical Ltd. تأمین مالی میشود. Ubuntu از فرمت بسته deb و ابزارهای مدیریت بسته Debian استفاده میکند و توسعهدهندگان Ubuntu تغییرات را به Debian ارسال میکنند.
یک رابطه مشابه بین Red Hat، Fedora و CentOS وجود دارد. Red Hat در سال 1993 توزیع لینوکس خود را ایجاد کرد و ده سال بعد تلاشهای خود را به دو بخش Red Hat Enterprise Linux و Fedora تقسیم کرد، که یک سیستمعامل مبتنی بر جامعه است که از هسته لینوکس و اجزای پروژه GNU استفاده میکند.
نتیجه
در این مقاله، ریشههای لینوکس در یونیکس و برخی از ویژگیهای تعریفکننده آن را پوشش دادهایم. اگر علاقهمند به یادگیری بیشتر در مورد تاریخچه لینوکس و نسخههای یونیکس (از جمله FreeBSD) هستید، یک گام خوب ممکن است سری مقالات ما در مورد FreeBSD باشد. همچنین میتوانید به سری مقدماتی ما برای شروع کار با لینوکس مراجعه کنید.