لینوکس ۳۵ ساله شد؛ داستان موفقیت سیستمی که هرگز قرار نبود بزرگ شود!
سیستمعاملی که هیچگاه انتظار نمیرفت به یک گزینه حرفهای تبدیل شود، اکنون پس از ۳۵ سال در قدرتمندترین سرورهای جهان و میلیاردها گوشی موبایل حضور دارد. این موفقیت نشاندهنده تحول و پیشرفتهای شگرف در...
به مناسبت ۳۵ سالگی لینوکس؛ سیستمعاملی که هرگز قرار نبود به این اندازه بزرگ و حرفهای شود!
سیستمعاملی که هیچگاه تصور نمیشد به چنین موفقیتی دست یابد، اکنون ۳۵ سال بعد در قدرتمندترین سرورهای جهان و میلیاردها گوشی موبایل حضور دارد.
در تاریخ ۲۵ آگوست ۱۹۹۱، در میان انبوه پیامهای گروه خبری Minix، پیامی ساده منتشر شد: «سلام به همهی کسانی که از مینیکس استفاده میکنند.» فرستندهی این پیام، لینوس توروالدز، دانشجوی ۲۱ ساله فنلاندی بود که چند ماهی بود در اتاق خود بر روی یک سیستمعامل رایگان برای کامپیوترهای مجهز به پردازندههای ۳۸۶ و ۴۸۶ کار میکرد. او با ارسال این پیام تنها میخواست بداند کاربران مینیکس چه چیزهایی را در سیستمعامل خود دوست دارند و از چه چیزهایی ناراضی هستند.
در میان توضیحات فنی، لینوس جوان با تواضع (و شاید کمی بیخیالی) نوشته بود: «این پروژه فقط یک سرگرمی است و قرار نیست به اندازهی GNU بزرگ و حرفهای شود.» او حتی در پایان پیامش اشاره کرد که نرمافزارش احتمالاً هرگز چیزی جز هارددیسکهای AT را پشتیبانی نخواهد کرد؛ زیرا خودش تنها همان سختافزار را در اختیار داشت!
سی و پنج سال بعد، در هر گوشهای از دنیای فناوری، نشانهای از پروژهای را میتوان دید که برخلاف پیشبینی خالقش، هم بزرگ شد و هم حرفهای. کرنل که زمانی تنها یک سرگرمی بود، اکنون در زیرساختهای سرورها، تجهیزات عظیم شبکه و ابررایانههای جهان به کار گرفته میشود.
ولی چگونه پروژهای که تنها برای معماری کامپیوتری خاص و رفع نیازهای شخصی طراحش ایجاد شده بود، توانست از نسل نخست کاربرانش فراتر رود و جهان را تسخیر کند؟
لینوس توروالدز در ژانویه ۱۹۹۱ اولین کامپیوتر شخصیاش را خرید؛ سیستمی با پردازندهی ۳۲ بیتی، فقط چهار مگابایت رم و هارددیسک ساده. او سپس به سراغ مینیکس رفت؛ سیستمعاملی مشابه یونیکس که اندرو تننبام تنها برای آموزش توسعه داده بود و نه برای استفادهی روزمره دانشجویانی مانند توروالدز.
مینیکس به دانشجویان اجازه میداد تا زیرساختهای یک سیستمعامل واقعی را مشاهده و کدها را تغییر دهند؛ اما آنقدر هم آزاد و انعطافپذیر نبود که لینوس برای استفادهی روزمرهاش به آن نیاز داشت.
در روزهای اولیه، هیچ پروژهای برای ساخت لینوکس وجود نداشت. لینوس به فتح دنیا فکر نمیکرد و تنها میخواست پردازندهی ۳۸۶ را بهتر بشناسد. او آستینها را بالا زد و یک راهانداز اولیه یا بوتلودر نوشت تا بارگذاری نرمافزار اصلی را مدیریت کند. سپس پردازنده را به حالت محافظتشده برد تا از حافظه و قابلیت چندوظیفگیاش استفاده کند.
لینوکس در روزهای اولیه تنها یک سرگرمی سادهی دانشجویی بود و هیچ نقشهی بزرگی برای آینده نداشت. لارس ویرزنیوس، دوست و همدانشگاهی لینوس، اولین آزمایش موفق او را با جزئیات جالبی توصیف میکند. یک وظیفه رشتهای از حرف A را روی صفحه مینوشت و وظیفهای دیگر حرف B را. جابهجایی Aها و Bها نشان میداد پردازنده میان دو کار سوئیچ میکند. چیزی که بعدها کرنل لینوکس نام گرفت، در آن لحظه بیشتر نمایشی ساده از چندوظیفگی بود.
آزمایش چندوظیفگی خیلی زود کاربرد دیگری پیدا کرد. توروالدز برای اتصال از خانه به کامپیوترهای یونیکس دانشگاه، شبیهساز ترمینال خود را نوشت. اما ذخیرهی فایلها نیاز به دسترسی به هارددیسک داشت و هارددیسک نیز به درایور و فایلسیستم نیازمند بود. به نظر میرسید هر قطعه، جای خالی قطعهی بعدی را نمایان میکرد و همهچیز به تدریج پیش میرفت.
توروالدز سالها بعد در مصاحبهای اذعان کرد که پیدایش لینوکس نتیجهی انباشتهشدن همین نیازهای عملی و روزمره بود. این ماجرا به این شکل نبود که یک روز صبح ناگهان تصمیم بگیرد رقیبی برای سیستمعاملهای بزرگ بسازد! برنامهی ترمینال سادهی او، به تدریج آنقدر قابلیت پیدا کرد که دیگر هیچ نامی جز سیستمعامل برازندهاش نبود.
در تاریخ ۲۵ آگوست ۱۹۹۱، توروالدز برای نخستین بار پروژهاش را بهطور عمومی معرفی کرد، اما کدهای نسخهی ۰٫۰۱ اواسط سپتامبر روی سرور nic.funet.fi آپلود شدند. این نسخه تنها شامل کد منبع بود و به تنهایی قابل اجرا نبود و به آرامی برای چند تن از علاقهمندان ارسال شد. توروالدز خود نیز چندان به این برنامه افتخار نمیکرد.
اما در تاریخ ۵ اکتبر، لحن پیام بعدی توروالدز تغییر کرد. او با شوخی از خوانندگان پرسید آیا دلتنگ روزهایی نیستند که افراد درایور دستگاههای خود را خودشان مینوشتند؟ سپس اعلام کرد که نسخهی ۰٫۰۲ به مرحلهای رسیده که میتوان کدهایش را بهطور گستردهتری توزیع کرد.
اکنون Bash، GCC و چند ابزار مهم گنو روی آن اجرا میشدند، هرچند نصب سیستم هنوز به مینیکس و مهارت فنی جدی نیاز داشت. لینوس صادقانه هشدار داد که کسانی که تنها به دنبال یک جایگزین آماده برای مینیکس هستند، فعلاً دور این پروژه را خط بکشند. با این حال، انتهای پیام مسیر آینده را به زیبایی ترسیم کرد.
کد کرنل در دسترس بود و توروالدز از دیگران بازخورد میخواست و از مخاطبان دعوت میکرد تا ابزارها یا کتابخانههایی که نوشتهاند، به پروژه اضافه کنند. نسخهی ۰٫۰۲ پر از باگ بود، نه درایو فلاپی داشت و نه حافظهی مجازی و استفاده از آن ساده نبود. با این حال، چند نفر واقعاً امتحانش کردند و از اینجا به بعد، کمبودهای لینوکس دیگر تنها به توروالدز مربوط نمیشد.
شبکهی یوزنت کدهای لینوکس را به دست هکرهایی رساند که تشنهی چنین سیستمی بودند. اورست زبوروفسکی رابطهای لازم برای پورت کردن X Window System (همان محیط گرافیکی یونیکس) را آماده کرد؛ تا جایی که بخش سؤالات متداول لینوکس در نوامبر ۱۹۹۲، نسخهی X386 را مستقیماً حاصل کار او میدانست.
زبوروفسکی سالها بعد تعریف کرد که چگونه توسعهدهندگان از طریق اینترنت و در اوقات فراغتشان، تغییرات کدها را با هم رد و بدل میکردند. مسیر پروژه یکطرفه نبود و کدها از کامپیوترهای دیگران به سمت توروالدز بازمیگشتند.
در سال ۱۹۸۳، ریچارد استالمن پروژهی گنو (GNU) را با هدف خلق یک سیستمعامل کاملاً آزاد و سازگار با یونیکس آغاز کرد. تا اوایل دهه ۱۹۹۰، گنو از مجموعه ابزارهای ارزشمندی بهرهمند بود؛ از کامپایلر و بش گرفته تا کتابخانهها، ویرایشگر و ابزارهای خط فرمان. تنها کرنل سیستم که با نام GNU Hurd شناخته میشد، به بلوغ عملی نرسیده بود.
کرنل یا هسته، بخش مرکزی سیستمعامل را تشکیل میدهد و پردازنده، حافظه و دستگاههای سختافزاری را مدیریت میکند. به بیان ساده، آنچه ما سیستمعامل لینوکس مینامیم، تنها کرنل نیست. توزیعهایی مانند دبیان یا اوبونتو کرنل را با ابزارهای گنو، کتابخانهها، پکیجمنیجرها و رابطهای کاربری ترکیب میکنند و سیستمی قابل نصب ایجاد میکنند.
لینوکس برای تبدیل شدن به یک سیستمعامل واقعی، به ابزارها و کامپایلرهای پروژهی گنو نیاز داشت. نخستین مجوز توروالدز اجازه نمیداد در قبال توزیع لینوکس پولی رد و بدل شود. این محدودیت، ساخت محصول و خدمات تجاری پیرامون پروژه را دشوار میکرد. لینوس در نسخهی ۰٫۱۲ فرمان را تغییر داد و کرنل لینوکس را تحت لیسانس «مجوز عمومی همگانی گنو» یا همان GPL منتشر کرد.
GPL به همه اجازه میداد نرمافزار را اجرا کنند، کدهایش را بخوانند، تغییرش دهند و بازتوزیع کنند، اما نسخهی تغییریافته نیز باید همان آزادیها را برای دریافتکنندگان حفظ میکرد. این مجوز راه کسبوکار را باز کرد، بدون اینکه شرکتها بتوانند نسخههای توزیعشده را برای همیشه پشت درهای بسته نگه دارند.
ابزارهای گنو به کرنل جوان لینوکس محیطی قابل استفاده دادند و کرنل لینوکس نیز جای خالی هستهی سیستم آزاد را پر کرد. پروژهای که توروالدز با سختافزار معمولیاش آغاز کرد، وارث مجموعهای از ابزارها و قواعد همکاری شد که سالها پیش وجود داشتند.
در سالهای اولیه، برخی چهرههای مشهور فناوری اصلاً لینوکس را متعلق به آینده نمیدانستند. در تاریخ ۲۹ ژانویه ۱۹۹۲، اندرو تننبام، خالق مینیکس و استاد برجستهی علوم کامپیوتر، بحثی را با عنوان «لینوکس ازردهخارج است» آغاز کرد. نقد او تنها پروژهای دانشجویی را زیر سؤال نمیبرد، بلکه به یکی از جدیترین اختلافنظرهای علوم کامپیوتر اشاره داشت.
لینوکس بر پایه معماری یکپارچه (Monolithic) ساخته شد، یعنی مدیریت حافظه، فایلسیستم، درایورها و بخش بزرگی از خدمات پایهای سیستم، همگی در فضای ممتاز کرنل و درون یک مجموعهی بزرگ کار میکردند. تننبام از الگوی میکروکرنل سخن میگفت، جایی که هسته تا حد ممکن کوچک میماند و بسیاری از خدمات بهصورت فرایندهای جداگانه بیرون از هسته اجرا میشدند و از طریق ارسال پیام با یکدیگر ارتباط میگرفتند.
بسیاری از چهرههای آکادمیک لینوکس را سیستمی محدود و بدون آینده میدانستند. روی کاغذ، میکروکرنلها بهخاطر جداسازی اجزا و جلوگیری از فروپاشی کل سیستم هنگام بروز خطا، مزیت روشنی داشتند؛ اما طراحی یکپارچه معمولاً مسیر سادهتر و سریعتری برای ساخت یک سیستم کارآمد روی سختافزار موجود فراهم میکرد.
تننبام اعتقاد داشت پژوهشهای سیستمعامل از طراحیهای یکپارچه عبور کردهاند و وابستگی شدید لینوکس به خانوادهی ۳۸۶ نیز آیندهاش را محدود میکند. او حتی نوشت که پنج سال بعد همه سیستمعاملهای آزاد گنو روی کامپیوترهای قدرتمند اجرا خواهند شد و سیستمعاملی وابسته به پردازندههای اینتل راه به جایی نمیبرد.
لینوس توروالدز به این انتقادات پاسخ داد که انعطافپذیری و انتقالپذیری مینیکس به قیمت از دست رفتن کاراییاش تمام شده و او آگاهانه از امکانات ۳۸۶ برای کارایی و سادگی طراحی استفاده کرده است. توروالدز در برابر «آیندهی تمیز روی کاغذ» تننبام، سیستمی را روی میز گذاشت که همین حالا و امروز روی سختافزارهای در دسترس کاربران کار میکرد.
انعطافپذیری بینظیر کدهای لینوکس تمام پیشبینیهای بدبینانه را شکست داد. بحث بهشدت بالا گرفت و پای برنامهنویسان بزرگ دیگری هم به این جنگ لفظی کشیده شد. میکروکرنلها هرگز از بین نرفتند و هنوز هم کاربردهای مهم خود را دارند؛ از طرفی لینوکس هم با معرفی ماژولهای قابلبارگذاری و تفکیک زیرسیستمها، ساختار یکپارچهاش را منعطفتر کرد. اما یکی از فرضهای اصلی تننبام شکست خورد؛ زیرا لینوکس روی معماری ۳۸۶ متوقف نماند و راهش را به Alpha، ARM و PowerPC باز کرد.
کاربران به کدهایی دسترسی داشتند که همان روز اجرا و اصلاح میشد. هر کاربر جدید، تست دیگری برای طراحی لینوکس و نیرویی برای انتقال آن به سختافزارهای بعدی محسوب میشد.
در سال ۱۹۹۳، توزیعهایی مانند Slackware نصب مجموعهی پراکندهی کرنل و ابزارها را منظمتر کردند. همان سال، ایان مرداک با فراخوانی عمومی پروژهی دبیان را کلید زد تا توزیعی کاملاً منسجم و کاربرپسند ایجاد کند.