لینوکس و یونیکس علیرغم شباهت ظاهری، دقیقا یکسان نیستند. در این مقاله به تفاوت بین این دو سیستمعامل مشهور میپردازیم. پس در ادامه با ما همراه باشید.
تفاوتی مشابه؟
لینوکس یک سیستمعامل متن-باز و رایگان است. یونیکس یک محصول تجاری بوده که در نسخههای مختلفی توسط شرکتهای گوناگون به فروش رسیده و معمولا به همراه سختافزار اختصاصی خود نیز عرضه میشود. سیستمعامل دومی گرانقیمت بوده و همچنین امکان دخل و تصرف چندانی نیز در آن ممکن نیست(برخلاف لینوکس). البته با این اوصاف بازهم لینوکس و یونیکس همان کار را با شیوهای تقریبا یکسان انجام میدهند.
در این بین تفاوتهای ظریف نسبتا پیچیدهتری نیز وجود دارند، تفاوتهایی فراتر از مباحث مربوط به معماری و موضوعات فنی. جهت درک برخی از جریانهایی که یونیکس و لینوکس را تحت تأثیر قرار دادهاند، ابتدا باید داستان و پشت پرده هرکدام از این سیستمعاملها را درک کرد.
خاستگاه یونیکس
یونیکس بیش از 50 سال قدمت دارد. این سیستمعامل در شرکت Digital Equipment Corporation با استفاده از زبان برنامهنویسی اسمبلی و یک رایانه DEC PDP/7 توسعه داده شده و در واقع یک پروژه غیررسمی مربوط به آزمایشگاههای بل (Bell Labs) است که در آن زمان تحت مالکیت شرکت AT&T قرار داشتند. این سیستمعامل بهسرعت بر روی رایانه PDP/11/20 پورت شد و سپس بهصورت پیوسته نیز بر روی سایر رایانههای آزمایشگاه بل قرار گرفت. یک بازنویسی مبتنی بر زبان برنامهنویسی C باعث شد تا نسخه چهارم یونیکس در سال 1973 متولد شود. این یک تحول عظیم بود، زیرا مشخصهها و کامپایلرهای زبان برنامهنویسی C باعث میشدند تا پورت یونیکس بر روی معماریهای جدید رایانهای، نسبتا سادهتر شود.
در سال 1973، کن تامپسون (Ken Thompson) و دنیس ریچی (Dennis Ritchie) مقالهای را در رابطه با یونیکس، در کنفرانسی ارائه دادند. بهعنوان نتیجه این کار، تقاضای بسیاری در رابطه با یونیکس به سمت آزمایشگاههای بل سرازیر شد. اما از آنجایی که فروش سیستمعاملها فراتر از محدوده عملیاتی مجاز AT&T بود، این شرکت نتوانست که با یونیکس همانند یک محصول تجاری رفتار کنند. این موضوع باعث شد تا یونیکس بهعنوان یک منبع کد و تحت گواهینامه منتشر شود. قیمت نهچندان زیاد یونیکس میتوانست هزینههای ترابری و بستهبندی را پوشش داده و همچنین حق امتیاز مناسبی را نیز برای این محصول فراهم آورد. یونیکس در آن زمان (همانند امروزه) هیچ پشتیبانی فنیای نداشت و همچنین باگهای آن نیز رفع نمیشدند. البته این موضوع چندان عجیب نیست، زیرا شما منبع کدها را دریافت کرده و بنابراین خودتان میتوانید نسبت به این موضوع اقدام کنید.
یونیکس در مؤسسات آکادمیک سریعا طرفداران زیادی را به خود جذب کرد. در سال 1975، کن تامپسون یک فرصت مطالعاتی را از جانب آزمایشگاههای بل در دانشگاه کالیفرنیای برکلی گذراند. وی به همراه چندین دانشجوی فارغالتحصیل، بهبود نسخههای محلی یونیکس را آغاز کرد. تلاشهای دانشگاه کالیفرنیا باعث شدند تا اولین نسخه Berkeley Software Distribution (بهعنوان یکی از مشتقات سیستمعامل یونیکس) منتشر شود. این مجموعه شامل برنامهها و تعدیلات سیستمی مربوط به این یونیکس میشد. این نسخه در واقع یک سیستمعامل جداگانه نبود، بلکه کاربران میتوانستند آن را به یک نسخه از لینوکس اضافه کنند. تمامی نسخههای بعدی BSD بهکلی مربوط به سیستمهای یونیکسی بودند.
حال دو جریان عمده لینوکسی وجود دارند؛ یکی مربوط به AT&T و دیگری نیز مربوط به BSD است. سایر نسخههای دیگر همانند AIX ،HP-UX و Oracle Solaris همگی از دو جریان بالا به وجود آمدهاند. در سال 1984، برخی از محدودیتهای AT&T برداشته شد و بدین نرنیب این شرکت توانست که یونیکس را در قالب محصولی تجاری به فروش برساند.
پیدایش لینوکس
تجاریسازی یونیکس باعث شد تا آزادیهای دنیای کامپیوتر تا حدودی کمرنگتر شوند، به همین دلیل ریچارد استالمن (Richard Stallman) بر این شد تا یک سیستمعامل آزادی محور را ایجاد کند. بله، آزادی جهت تغییر منبع کد، جهت توزیع مجدد نسخههای تعدیل شده و در نهایت جهت استفاده دلخواه از این سیستمعامل.
هدف از طراحی این سیستمعامل این بود که عملکردهای یونیکس را کپی کند، البته بدون بهکارگیری هیچکدام از منبع کدهای آن. استالمن سیستمعامل خود را GNU نام نهاد و در سال 1983 نیز GNU Project را جهت توسعه این نرمافزار بنیان نهاد. در سال 1985، وی بنیاد Free Software Foundation را تأسیس کرد تا از این طریق به ترویج، تأمین مالی و پشتیبانی از پروژه GNU بپردازد.
تمامی جنبههای سیستمعامل GNU پیشرفت خوبی را تجربه کردند، البته به غیر از هسته (kernel) آن. توسعهدهندگان پروژه GNU بر روی ریزهستهای به نام GNU Hurd کار میکردند، اما پیشرفت آنها کند بود (GNU Hurd هنوز هم در دست توسعه قرار داشته و روزبهروز به انتشار آن نزدیکتر میشویم). بدون هسته، سیستمعاملی هم در کار نخواهد بود.
در سال 1987، اندرو استوارت تننبام (Andrew Stuart Tanenbaum) سیستمعاملی بهنام MINIX یا همان mini-Unix را منتشر کرد. این سیستمعامل در حقیقت ابزاری جهت آموزش طراحی سیستمعامل به دانشجویان بود. MINIX یک سیستمعامل شبیه به یونیکس بود (از لحاظ عملکرد)، اما محدودیتهایی هم داشت، از جمله در زمینه فایل سیستم. گذشته از همه اینها، منبع کد این نرمافزار بایستی آنقدر کوتاه میبود که بتوان آن را در یک نیمسال دانشگاهی تدریس کرد، در نتیجه برخی از عملکردها باید قربانی میشدند.
جهت درک بهتر امورات داخلی ریزپردازنده Intel 80386، یک دانشجوی علوم رایانهای به نام لینوس توروالدس (Linus Torvalds) بهعنوان یک تمرین یادگیری، چندین کد تغییر وظیفه ساده نوشت. در نهایت این کدها به اولین هسته لینوکسی تبدیل شدند. توروالدس با MINIX آشنا بود. وی در حقیقت، اولین هسته را بر روی MINIX و با استفاده از کامپایلر GCC استالمن توسعه داده بود.
توروالدس تصمیم گرفت تا سیستمعاملی را طراحی کند که بتواند بر محدودیتهای MINIX آموزش محور غلبه کند. در سال 1991، وی بیانیه مشهور خود را در گروه MINIX (در شبکه کامپیوتری Usenet) بهاشتراک گذاشت و از سایر کاربران خواست تا نظرات و پیشنهادات خود را درباره پروژه وی مطرح کنند.
لینوکس در واقع یک شبیهسازی از یونیکس نبود. در غیر این صورت آنگاه باید نامش همان یونیکس باقی میماند. در حقیقت لینوکس شبیه به یونیکس است. واژه شبیهسازی (clone) در واقع به این موضوع دلالت دارد که بخشهای کوچکی از یک فایل اصلی، در یک کپی سلول-برای-سلول قرار میگیرند. لینوکس مجددا طراحی شده تا ظاهری شبیه به یونیکس داشته باشد و البته همان نیازها را نیز پوشش دهد. این سیستمعامل کمتر شبیهسازی بوده و بیشتر یک کپی قدرتمندتر به حساب میآید.
در هر صورت، لینوکس هستهای بود که به دنبال یک سیستمعامل میگشت. از طرفی دیگر، GNU نیز یک سیستمعامل بود که به دنبال یک هسته میگشت. با این اوصاف آنچه که در آینده رخ میداد، نهتنها غیرقابل اجتناب بود، بلکه باعث تغییر جهان نیز شد.
چه کسی کار توسعه را انجام میدهد؟
یک نسخه لینوکس در واقع مجموعهای از اجزاهای مختلف بوده که از مکانهای مختلفی جمعآوری شدهاند. هسته لینوکس، مجموعهای از ابزارهای اصلی GNU و اپلیکیشنهای کاربران (آنهایی که جدا از هسته سیستمعامل اجرا میشوند)، همگی با هم ترکیب شده تا تجربهای بادوام را رقم بزنند. طبیعتا باید شخصی مسئولیت ترکیب، نگهداری و مدیریت این امور را برعهده بگیرد، درست همانند کسی که باید به توسعه هسته، اپلیکیشنها و ابزارهای اصلی بپردازد. مسئولین نگهداری از لینوکس و همچنین اجتماعات مجازی و فیزیکی هر نسخه نیز باید نقش خود را در زمینه متولد شدن نسخههای مختلف لینوکس ایفا کنند و در این زمینه نیز نقش آنها بهاندازه توسعهدهندگان هسته، پررنگ است.
لینوکس نتیجه مشارکتهای افراد داوطلب است؛ افرادی که مزدی دریافت نمیکنند، سازمانهایی همانند Canonical و Red Hat و همچنین کسانی که تحت حمایت این صنعت قرار دارند. هر نسخه تجاری از یونیکس بهعنوان یک محصول منسجم، توسط توسعهدهندگان داخلی و یا خارجی (کنترل شده) طراحی و ایجاد میشود. معمولا هر نسخه هسته مخصوص به خود را داشته و بهطور خاص برای پلتفرمهای سختافزاری مشخصی تولید میشود.
مشتقات رایگان و متن-باز BSD Unix مانند FreeBSD ،OpenBSD و DragonBSD ترکیبی از کدهای قدیم و جدید BSD را به کار میگیرند. امروزه چنین نسخههایی توسط جوامع مختلف پشتیبانی شده و همانند توزیعهای لینوکسی، مدیریت میشوند.
در حالت عمومی، لینوکس نه مطیع Single Unix Specification است و نه POSIX. این سیستمعامل سعی دارد تا هر دو طرف را بدون بردگی هیچکدام، راضی نگه دارد. فقط یک الی دو مورد استثنا در این زمینه وجود دارند. یکی از این موارد، لینوکس چینی Inspur K-UX است که تحت استاندارد POSIX قرار دارد.
یکی از موارد تفاوت بین لینوکس و یونیکس همین موضوع سازگاری است. یک یونیکس واقعی (همانند گزینههای تجاری)، سیستمعاملی سازگار است. برخی از مشتقات BSD از جمله تمامی نسخههای macOS (به غیر از یکی از آنها) تایع استاندارد POSIX هستند. نامهایی همانند AIX ،HP-UX و Solaris همگی نامهای تجاری هستند که تحت مالکیت سازمانهای مربوطه قرار دارند.
نشانهای تجاری و کپیرایت
لینوکس یک نشان تجاری ثبت شده مربوط به لینوس توروالدس است. بنیاد Linux Foundation مسئولیت مدیریت این نشان تجاری را از جانب توروالدس بر عهده دارد. هسته و عملکردهای اصلی لینوکس تحت کپیلفت پروانه عمومی همگانی GNU قرار دارند. کد منبع این سیستمعامل بهصورت آزادانه در دسترس همگان قرار دارد. یکی دیگر از موارد تفاوت بین لینوکس و یونیکس در اینجا قرار دارد؛ لینوکس کاملا آزاد است، اما یونیکس یک نشان تجاری ثبت شده مربوط به Open Group بوده و تحت کپیرایت قرار دارد و در واقع سیستمعاملی خصوصی بهحساب میآید و متن-باز نیست. FreeBSD توسط FreeBSD Project تحت کپیرایت قرار گرفته و کد منبعها آن نیز در دسترس قرار دارند.
تفاوت در استفاده
از دید کاربران، در کادر دستور این دو سیستمعامل تفاوتهای محسوس زیادی وجود ندارند. به دلیل استانداردها و سازگاری با POSIX، نرمافزارهایی که بر روی یونیکس نوشته میشوند، میتوانند بر روی لینوکس نیز پورت شده که البته این کار با تعداد دفعات مشخصی محدود شده است. بهعنوان مثال، اسکریپتهای Shell را میتوان در بسیاری از موارد مستقیما بر روی لینوکس مورد استفاده قرار داد (با کمی و یا هیچگونه تغییری).
یکی دیگر از موارد تفاوت بین لینوکس و یونیکس در کادر دستورات نهفته است. ابزارهای کادر دستورات، گزینههای کمی متفاوت را در دو سیستمعامل ارائه میدهند، اما در اصل ابزارهای مشابهی در هر دو پلتفرم وجود دارند. در حقیقت، AIX شرکت IBM برای اپلیکیشنهای لینوکسی، از یک AIX Toolbox مخصوص بهره میبرد. این مزیت باعث میشود تا کاربران چنین سیستمهایی بتوانند صدها پکیج GNU همانند Bash ،GCC و … را نصب کنند.
نسخههای مختلف یونیکس، رابط کاربری گرافیکی متفاوتی داشته و این موضوع برای لینوکس نیز صدق میکند. یک کاربر لینوکس که با GNOME یا Mate آشنا است، اگر برای اولین بار با KDE یا Xfce مواجه شود، آنگاه مجبور خواهد بود که با احتیاط عمل کند، اما بهزودی به رابط گرافیکی جدید عادت خواهد کرد. چنین قضیهای درباره رابطهای گرافیکی موجود بر روی یونیکس نیز صدق میکند (مواردی همچون Motif ،Common Desktop Environment و X Windows System). اگر شخصی با مفهوم محیط پنجرهای به همراه دیالوگ، منو و آیکونها آشنا باشد، آنگاه با رابطهای کاربری مختلف یونیکس نیز مشکل چندانی نخواهد داشت.
هنگامیکه با این سیستمها کار کنید، آنگاه تفاوتها را بهتر درک خواهید کرد. بهعنوان مثال، مکانیسمهای init مختلفی وجود دارند. مشتقات System V Unix و BSDها، سیستمهای init متفاوتی دارند. نسخههای رایگان BSD از برنامههای BSD init استفاده میکنند. در حالت پیشفرض، توزیعهای لینوکسی نیز از یک سیستم init استفاده میکنند که از Unix System V یا systemd نشأت گرفته است.
دنده دستی در مقابل دنده اتوماتیک
اگر بتوانید با یکی از گزینههای بالا کار کنید، آنگاه با دیگری نیز مشکل چندانی نخواهید داشت، هرچند که شاید در ابتدا تجربه روانی نداشته باشید. جدا از قیمت، تفاوتهای فلسفه، گواهی کردن، مدلهای توسعه، سازماندهی جوامع و سبک و نوع نظارت، بزرگتر و مهمتر از تفاوت در علائم کادر دستورات هستند. در نهایت اینکه قادر نخواهید بود بزرگترین تفاوتها را بر روی نمایشگر خود مشاهده کنید.