لینوکس یکی از قدرتمندترین سیستمعاملهای کامپیوتری است که متنباز بودن آن، در کنار جامعهی توسعهدهندگان قدرتمندش، آن را به ابزاری حرفهای برای مهندسان نرمافزار و گیکها تبدیل کرده است.
قصه از کجا شروع شد؟
داستان از سال ۱۹۶۰ آغاز میشود. در این زمان فکر سامانههای اشتراک زمان مطرح بود و نخستین سیستمعامل چند کاربره طراحی شد که به عنوان کارگزار(Server) میتوانست با نصب شدن بر روی یک رایانه به چند رایانه دیگر سرویس دهد. این سیستمعامل که CTSS نام داشت و میتوانست ۲۰ کاربر را با یک رایانه IBM ۷۰۹۰ به خوبی اداره کند به شدت مورد توجه و مفید واقع شد و همه دریافتند که بخش عظیمی از رایانههای آینده از این فناوری بهره خواهند گرفت. بهطوریکه در سال ۱۹۶۵ سه شرکت از برجستهترین نقش آفرینان رایانه در جهان، مؤسسه فناوری ماساچوست، آزمایشگاههای بلو جنرال الکتریک، یک سیستمعامل اشتراک زمان آزمایشی برای مینفریم جیای-۶۴۵ طراحی کردند که مولتیکس نامیده میشد.
مولتیکس نوآوریهای بسیاری را پیش روی نهاد، اما در عوض مشکلات فراوانی هم داشت. این سیستم اجزای زیادی داشت و از حد معین بزرگتر شد. آزمایشگاههای بل که از پیچیدگی زیاد مولتیکس ناامید شده بود، به آهستگی از پروژه کناره گرفت. آخرین محققان آنها، کن تامسون، دنیس ریچی، داگلاس مکیلروی و جو اوسانا تصمیم گرفتند کار را از آغاز اما در مقیاسی کوچکتر از سر بگیرند. ریچی گفت «چیزی که ما میخواستیم، تنها یک محیط خوب برای برنامهنویسی نبود، بلکه سامانهای بود که بتوان گرد آن دوستی را شکل داد.»
در ۱۹۷۰، پیتر نیومن نام Unics را برای پروژه ابداع کرد. این نام در حقیقت یک جور بازی با نام مولتیکس (Multics) بود. دنیس ریچی، کن تامسون و برایان کرنیگان، یونیکس (Unics) را بر اساس مولتیکس در آزمایشگاه بل پدید آوردند. بعدها که Unics توانست همزمان به چند کاربر سرویس دهد، به Unix آوازه یافت.
تا آن زمان، هیچ حمایت مالی از طرف آزمایشگاههای بل وجود نداشت. وقتی که گروه تحقیقات علوم رایانه میخواست از یونیکس بر روی یک رایانه بزرگتر از پیدیپی-۷ استفاده کند، تامسون و ریچی قول دادند که برای ماشین پیدیپی۱۱/۲۰، قابلیتهای پردازش متن را به یونیکس اضافه کنند. این کار باعث حمایت مالی آزمایشگاه بل شد. برای اولین بار در سال ۱۹۷۰، سیستمعامل یونیکس رسماً نامگذاری و بر روی یک پیدیپی۱۱/۲۰ اجرا شد. یک برنامه قالببندی متن به نام roff و یک ویرایشگر متن هم اضافه شدند. تمام این سه جزء (یونیکس، roff و ویرایشگر متن) به زبان اسمبلی ماشین پیدیپی۱۱/۲۰ نوشته شده بودند. آزمایشگاههای بل از این سیستمِ پردازش متن اولیه که از یونیکس، roff و ویرایشگر تشکیل شده بود، برای پردازش متن برنامههای پتنت شدهاستفاده کرد. roff به زودی به troff، اولین برنامه چاپ و نشر الکترونیکی با قابلیت کامل حروفچینی تبدیل شد. کتاب راهنمای برنامهنویسان یونیکس هم در سوم نوامبر ۱۹۷۱ چاپ شد.
از آن جا که ایتیاندتی، یکی از شرکتهای دست اندرکار، از پروژه کنار گرفته بود، بنا بر قوانین آمریکا نمیتوانست از یونیکس استفادهٔ بازرگانی کند؛ به این ترتیب یونیکس رایگان به بازار عرضه شد. ایتیاندتی نیز یونیکس را برای دانشگاههای مختلف فرستاد و یونیکس کمکم در محافل علمی محبوب شد.
در سال ۱۹۸۴ میلادی، «ریچارد استالمن» (Richard Stallman) که رییس بنیاد نرمافزارهای آزاد بود، پروژهی «گنو» (GNU) را آغاز کرد. در این پروژه که یک جنبش نرمافزاری محسوب میشد، برنامهنویسان با یکدیگر همکاری میکردند که این همکاری تابهحال هم ادامه دارد. تا چند سال بعد، ابزارهای متنوعی در پروژهی گنو توسعه پیدا کردند. اما این ابزارها برای اجرا، نیازمند یک هستهی مناسب و آزاد به عنوان سیستمعامل بودند؛ هستهای که توسعهی آن به این زودیها امکانپذیر نبود.
در سال ۱۹۹۱، «لینوس توروالدز» (Linus Torvalds) یک دانشجوی ۲۱ ساله بود که در دانشگاه هلسینکی درس میخواند. او در ابتدای این سال، یک کامپیوتر IBM خرید که با سیستمعامل MS-DOS کار میکرد. او که از این سیستمعامل راضی نبود، علاقه داشت از یونیکس استفاده کند. ولی متوجه شد که ارزانترین نوع سیستمعامل یونیکس، ۵ هزار دلار قیمت دارد. به همین خاطر و به دلیل عملکرد ضعیف پروژهی گنو درزمینهی توسعهی هستهی سیستمعامل، لینوس تصمیم گرفت که خودش دستبهکار شود.
توروالدز در تصویر زیر یک دانشجوی ۲۰ سالهی علوم کامپیوتر در دانشگاه هلسینکی فنلاند است. توروالدز از ۱۱ سالگی علاقهی خود را به کامپیوتر و سیستمهای عامل نشان داد. او ماجراجوییهای کامپیوتری خود را از یک دستگاه کومودور VIC-20 شروع کرد.
لینوس در زمان دانشگاه به سیستمعاملهای Minix علاقه پیدا کرد.
Minix
بعد از مدتی که توروالدز با سیاستهای مجوزی Minix دست و پنجه نرم کرد، کمکم علاقهاش به این سیستم کم شد و تصمیم گرفت سیستمعامل مخصوص خود را بنویسد. او در آگوست سال ۱۹۹۱ ایمیلی به کاربران مینیکس ارسال کرد و از آنها خواست تا آنچه را که علاقه دارند در سیستمعامل جدید و رایگان او ببینند شرح دهند. این ایمیل امروز به عنوان یکی از افسانههای لینوکس شناخته میشود.
توروالدز ابتدا نام سیستمعامل خود را Freax گذاشت و پس از مدتی نام لینوکس را برای آن انتخاب کرد. او حتی یک راهنمای صوتی برای تلفظ صحیح نام این سیستمعامل منتشر کرد. نسخهی ۰.۰۱ لینوکس در سپتامبر ۱۹۹۱ معرفی شد و نسخهی ۰.۱۲ در فوریهی سال ۱۹۹۲ رونمایی شد، از آن نسخه به بعد، توروالدز تصمیم گرفت تا برای ادامهی توسعهی سیستمعامل جدیدش به GNU ملحق شود. نسخهی ۱.۰ لینوکس در مارچ ۱۹۹۴ عرضه شد که شامل ۱۷۶٬۲۵۰ خط برنامه بود.
اولین توزیع لینوکس که توزیعی جامع هم نبود، Softlanding Linux System نام داشت و در زمان عرضه توسط افراد زیادی استفاده شد. این توزیع که امروزه با نام SLS شناخته میشود، به نوعی یکی از نیاکان Slackware شناخته میشود. Slackware به عنوان قدیمیترین توزیعی که هنوز پشتیبانی میشود، شناخته میشود. این توزیع در سال ۱۹۹۳ به دست یک دانشجوی دانشگاه Moorhead به نام Patrick Volkerding متولد شد و هنوز هم توسط او پشتیبانی میشود.
در دنیای حرفهای لینوکس و کاربران اینترپرایز آن، نام رد هت (Red Hat) بیش از همهی نامها شناخته شده است. توزیع این شرکت در سال ۱۹۹۴ روی سیدی رام عرضه شد و به عنوان اتفاقی انقلابی شناخته میشود. لوگوی این شرکت که یک کلاه قرمز است، در طول سالیان تکامل پیدا کرده و دلیل استفاده از آن، عادتی است که یکی از خالقان لینوکس به نام Marc Ewing داشته و همیشه کلاه قرمز پدربزرگش را میپوشیده است.
Tux نام لوگوی جهانی لینوکس است. در توضیح دلیل استفاده از این نماد، توروالدز بارها عنوان کرده که زمانی در سال ۱۹۹۶ از باغ وحشی در استرالیا دیدن میکرده است و به صورت اتفاقی توسط یک پنگوئن گاز گرفته میشود. او از آن زمان عاشق پنگوئنها میشود و نمیتواند به آنها فکر نکند. در اصطلاحات عامیانه نیز عبارتی برای این حالت وجود دارد که “pinguinitis” نام دارد.
محبوبیت لینوکس در همان سالهای اولیه به سرعت افزایش مییافت و در مقابل، نگرانی مایکروسافت از این افزایش محبوبیت نمایان شده بود. اولین نشانههای نگرانی مایکروسافت در اظهار نظرهای استیو بالمر در سال ۲۰۰۱ نمایان بود. او در عبارتی در آن سال لینوکس را این گونه توصیف کرده بود: “لینوکس مانند سرطانی است که با یک حس مالکیت معنوی خود را به هر چیزی که لمس میکند میچسباند.“
یک اتفاق جالب هم در سال ۲۰۰۱ برای نام لینوکس افتاد. یک شرکت سویسی به نام Rosch در این سال یک مادهی شوینده با این نام تولید کرد و هنوز نیز از این برند استفاده میکند. اما حق مالکیت معنوی برای نام لینوکس در سیستمعاملهای کامپیوتری، به توروالدز تعلق دارد.
لینوکس در تبلیغات تلویزیونی نیز ظاهر شد. در سال ۲۰۰۳، شرکت IBM یک تبلیغ تلویزیونی برای این سیستمعامل منتشر کرد و در انتهای آن نیز از عبارت “آینده باز است” استفاده کرد.
در ابتدای توسعهی لینوکس، توروالدز تصمیمی برای معروف شدن و بزرگ شدن این پروژهی تفریحی نداشت. اما لینوکس توسعه پیدا کرد و معروف شد و در سال ۲۰۰۵، توروالدز در مصاحبهای در مجلهی BusinessWeek از موفقیتهای این سیستمعامل سخن گفت و تصویر او نیز روی جلد مجله چاپ شد.
لینوکس در دستگاهها و سیستمهای مختلفی استفاده میشود. اما به جرات میتوان اندروید را که بر پایهی کرنل لینوکس است، یکی از عوامل اصلی گستردگی وسیع و موفقیت جهانی آن دانست. اندروید امروزه در ۸۰ درصد تلفنهای هوشمند سرتاسر جهان اجرا میشود.
کرنل چیست؟
Kernel هستهٔ اصلی سیستمعامل است که منابع سیستم مانند پردازنده، حافظه و … را به برنامههای دیگر اختصاص میدهد. کرنل را مانند زیرساخت و بنای اصلی ساختمان در نظر بگیرید؛ تمامی وسائل از زیرساختهای ساختمان به منظور استفادهٔ صحیح بهره میبرند. به عنوان مثال، برای استفاده از یخچال به مکانی ثابت و پریز برق نیاز داریم. آشپزخانه، پریز برق و سیمکشی ساختمان، جزئی از زیرساخت خانه هستند و منابع مورد نیاز مانند انرژی الکتریکی را در اختیار وسایل مربوطه قرار میدهند.
کرنل مفاهیم انتزاعی را برای برنامهنویسان فراهم میکند که میخواهند اپلیکیشنهایی برای پلتفرم مورد نظر خود توسعه دهند. این مفاهیم انتزاعی شامل سادهسازی انجام کارهای پیچیده است (به عنوان مثالی برای مفاهیم انتزاعی، ذخیره شدن فایل روی هارددیسک را در نظر بگیرید؛ برای این کار، نیازی به دانستن جایگاه بلاکها و کلاسترهای اشغال شده در هارد توسط فایل مورد نظر ندارید. ولی میدانید فایل مثلاً X روی درایو C ذخیره شده است).
کرنل تنها قسمت نرمافزاری یک سیستمعامل نیست که دربرگیرندهٔ مفاهیم انتزاعی است، بلکه در واقع یکی از مهمترین قسمتهای آن است. درایورهای سختافزاری بواسطهٔ کرنل با دیگر بخشها ارتباط برقرار میکنند (یا در واقع صحبت میکنند)، بنابراین کرنل نیازی ندارد نحوۀ صحبت کردن تکتک قسمتهای سختافزارهایی که ساخته میشود را یاد بگیرد. این چیزی است که باعث میشود یک کرنل، به تنهایی روی بسیاری از برندها و مدلهای مختلف سختافزاری اجرا شود.
به صورت خلاصه میشه گفت تمام نرم افزار ها مستقیم با کرنل صحبت می کنند و فقط کرنل است که با سخت افزار ارتباط مستقیم دارد
در سال ۲۰۱۲، شرکت رد هت به درآمد ۱ میلیارد دلاری رسید و به عنوان اولین شرکت اوپن سورسی شناخته شد که به این درآمد رسیده است. در مراسم آن سال، مدیر عامل این شرکت Jim Whitehurst دربارهی این موفقیت گفت: “رد هت اولین کمپانی اوپن سورس جهان و یکی از معدود کمپانیهای نرمافزاری است که به درآمد سالیانهی یک میلیارد دلار رسیده است. تکنولوژیها اوپن سورسی که ما ارائه میکنیم، روز به روز مشتریان بیشتری پیدا میکنند و این کاربران از محصولات ما برای طراحی مجدد دیتاسنترها و رسیدن به صلبیت، بازدهی و قابلیت کلاد بیشتر استفاده میکنند”.
پس از گذشت حدود یک دهه از اظهار نظر عجیب بالمر، مدیر عامل کنونی مایکروسافت یعنی ساتیا نادلا از علاقهی این شرکت به لینوکس پرده برداشت و این خبر انتشار گستردهای در رسانههای جهانی داشت.
گسترش توزیعهای لینوکس در طول سالیان به سرعت انجام شده و امروز میتوان عنوان کرد که برای هر ذائقهای، توزیع مناسب وجود دارد. امروزه کمتر کسی پیدا میشود که بتواند گستردگی و حاکمیت لینوکس را زیر سوال ببرد. این سیستمعامل در اکثر زمینههای دنیای تکنولوژی وارد شده است. در وب، لینوکس در بیش از ۹۵ درصد برترین دامینهای دنیا استفاده میشود. اکثر مارکتهای مالی جهان از این سیستمعامل استفاده میکنند. ۹۸ درصد از سریعترین ابرکامپیوترهای جهان به لینوکس مجهز هستند. در زمینهی رایانش ابری نیز، لینوکس نقش مهمی دارد و ۷۵ درصد از سرویسهای حرفهای ابری از آن به عنوان پلتفرم اصلی استفاده میکنند. حتی در تجهیزات فضایی نیز از لینوکس به عنوان پایهی سیستمها استفاده میشود.
آشنایی با برخی از رایج ترین اصلاحات لینوکسی
پیش از قدم گذاشتن به دنیای لینوکس، نیاز است تا با برخی اصطلاحات رایج همچون Kernel, Distribution, Boot Loader, Daemons, Service, X Window System, Desktop Environment و Command Line آشنا شوید.
Kernel: به زبان ساده، کرنل (هسته) را میتوان به عنوان مغز سیستم عامل لینوکس تلقی کرد که پایین ترین سطح یک سیستم عامل، همین کرنل است که در سیستم عامل گنو/لینوکس، این کرنل Linux نامیده می شود. کرنل وظیفه ی کنترل کردن سختافزار سیستم را بر عهده دارد و این امکان را برای سیستم فراهم میآورد تا با اپلیکیشن های مختلف به تعامل بپردازد. علاوه بر این، کرنل لینوکس به مدیریت CPU، حافظه و سایر دیوایس های جانبی می پردازد. کرنل لینوکس را میتوان از سایت kernel.org دریافت کرد.
Distribution: نام دیگر این اصطلاح Distro است، که به مجموعه یی از برنامهها به علاوه ی کرنل لینوکس گفته میشود که روی هم رفته یک سیستم عامل کامل را تشکیل می دهند. از جمله Distribution (دیستریبیوشن یا توزیع) های لینوکس میتوان به اوبونتو، ردهت و فدورا اشاره کرد.
Boot Loader: همانطور که از نام این اصلاح بر می آید، برنامهای است که سیستم عامل را استارت می کند. در واقع زمانی که سیستم عامل خود را روش میکنید تا بالا بیاید، صفحهای به مدت چند ثانیه در معرض دید شما قرار میگیرد که در همین حین، بوت لودر در حال اجرا است. دو نمونه از اینگونه برنامهها عبارتند از: GRUB و ISOLINUX.
Service: برنامه یی است که به عنوان فرایندی در پشت پرده ی سیستم عامل کار می کند. از جمله سرویس های معمول لینوکس میتوان به httpd, nfsd, ftpd و named اشاره کرد.
Filesystem: به روشی برای ذخیره سازی و سازماندی فایلهای سیستم اشاره می کند. برخی مثالهای فایل سیستم عبارتند از: ext3, ext4, FAT, XFS و Btrfs.
X Window System: این اصطلاح اشاره دارد به پروتکلی استاندارد به منظور ساخت رابط های کاربری در تمامی سیستمهای لینوکسی که گاها به صورت خلاصه X نامیده می شود. در واقع، X مسئول نمایش تصاویر روی مانیتور شما است.
Desktop Environment: به رابط گرافیکی کاربر که روی سیستم عامل سوار است اشاره می کند. از جمله رابط های گرافیکی لینوکسی میتوان به Unity, GNOME, Cinnamon, Enlightenment, KDE, XFCE و Fluxbox اشاره کرد. در حقیقت Desktop Environment همان چیزی است که پس از نصب این OS روی سیستم خود، هر روز با آن سر و کار خواهید داشت؛ چیزی شبیه به محیط دسکتاپ ویندوز.
Command Line: کامند لاین هم به اینترفیسی اشاره دارد که از آن طریق میتوان دستورات مد نظر خود را تایپ کرد.
Shell: شل مفسر کامند لاینی است که کلیه ی دستوراتی که کاربران از طریق کامند لاین وارد میکنند را تفسیر کرده و به سیستم عامل دستور میدهد تا کارهای مرتبط با آن دستورات را اجرا کند. از جمله ابزارهای شل میتوان به bash, tcsh و zsh اشاره کرد. جالب است بدانید یکی از چیزهای که اکثر کاربران مبتدی را از سیستم عامل گنو/لینوکس فراری می سازد، همین Shell است به گونه یی که ایشان فکر می کنند هر کاری که در لینوکس بخواهند انجام دهند، باید از طریق وارد کردن یکسری دستورات در ترمینال انجام دهند که امروزه با بوجود آمدن رابط های گرافیکی حرفه یی که برای این سیستم عامل ابداع شده -همچون توزیع اوبونتو- دیگر چنین دیدگاهی صحت ندارد و کاربران مبتدی حتی بدون باز کردن ترمینال، می توانند از این سیستم عامل بهره بگیرند!
Daemons: منظور از این اصطلاح، سرویس هایی همچون پرینت، صدا و غیره است که در حین بوت شدن یا پس از اجرای کامل سیستم عامل اجرا می گردند.
توزیع ها یا Distribution لینوکس
توزیع های اصلی لینوکس عملا 5 تا هستن که تقریبا تمام توزیع های دیگه همه از این 5 نسخه بوجود آمده اند:
اگه به عکس زیر نگاه کنید متوجه می شوید تقریبا مهم ترین و معروف ترین توزیع های لینوکس debian و redhat هستن که بیشترین تزیع را دارند و از معروف ترین آن ها ubuntu که از debian و centos از redhat نشات گرفته شده است.