اعضای جامعه متن باز ترجیح میدهند لینوکس را گنو/لینوکس بنامند، چون چیزی که کاربران عادت دارند به آن لینوکس بگویند در واقع نرم افزارهای گنو و هسته لینوکس است. به همین خاطر نام اصلی لینوکس، گنو/لینوکس است که البته از طرف برخی از افراد مورد قبول نیست.
در واقع گنو در حال توسعه بود و انتظار یک هسته پایدار را میکشید. گروه توسعه گنو تلاشهای بسیاری برای رسیدن به یک هسته را دنبال میکردند ولی تا زمان عرضه هسته لینوکس این تلاشها بی فایده مانده بود. وقتی هسته لینوکس آماده شد در نهایت به گنو پیوست.
طرح ایجاد سیستم عامل گنو توسط ریچارد استالمن پایه ریزی شد. تا قبل از آن زمان تنها سیستم عامل یونیکس که آن هم تجاری بود در دانشگاهها و مکانهای معتبر مورد استفاده قرار میگرفت، ولی خوب یک محصول تجاری بود، و استالمن قرار بود یک محصول ایده آل آزاد متن طراحی کند. طراحی چنین سیستمی بسیار مشکل بود. وقتی لینوس توروالدز از لینوکس رونمایی کرد، بنیاد توسعه نرم افزارهای آزاد تصمیم گرفت برای گنو از لینوکس استفاده کند.
ریچارد استالمن در مورد لزوم استفاده از نام گنو / لینوکس میگویند:
البته برخی مانند اریک ریموند و لینوس توروالدز با این نام گذاری مخالف اند. لینوس توروالدز نام گنو / لینوکس را "مسخره" مینامد. لینوس توروالدز خالق لینوکس نام ردهت لینوکس، سوزه لینوکس و یا دبیان لینوکس را درست میداند ولی گنو لینوکس خیر، چون اصطلاح "گنو لینوکس" به معنای توزیعی گنویی از لینوکس است در صورتی که گنو چیزی به لینوکس اضافه نکرده است.
در تصویر بالا سمت راست لینوس توروالدز و سمت چپ ریچارد استالمن را میبینید.
لازم به ذکر است در این مقاله به اختصار از نام لینوکس استفاده میشود.
برنامه نویسی لینوکس
همان طور که در ابتدای مقاله بیان کردیم لینوس توروالدز هسته لینوکس را برنامه نویسی کرد. هسته سیستم عامل مهم ترین قسمت از هر سیستم عامل است. در واقع میتوان گفت که هسته سیستم عامل یک مجموعه نرم افزار با وظایف مدیریت کارها، مدیریت سخت افزار، مدیریت نرم افزارها و مدیریت حافظه است. وقتی سیستم عامل شروع به کار میکند قسمت هسته آن در حافظه موقت جا میگیرد و شروع به انجام وظیفه میکند. مبحث هسته سیستم عامل بسیار پیچیده است و به خودی خود از اجزاء بسیار متنوعی تشکیل میشود.
تا قبل از معرفی لینوکس توسط لینوس توروالدز پروژهای به نام مینیکس مشغول به فعالیت بود که مجوز نشر مخصوص به خود داشت. لینوس توروالدز در آن زمان تصمیم گرفت یک هسته مستقل و قدرتمند بر اساس مینیکس بنویسد تا هستهای پایدار را به جامعه متن باز اهدا کند.
لینوس توروالدز در ابتدا بر روی سیستم نوشته شده توسط خود bash و gcc را نصب کرد. اگر برای شما سوال پیش آمده است که Bash چیست؟ باید گفت که bash یک مترجم خط فرمان است، و اگر سوال بپرسید که gcc چیست؟ باید گفت gcc در آن زمان مخفف Gnu c Compiler به معنای کامپایلر زبان c بود، ولی با قدرت گرفتن gcc و پشتیبانی از java، Objective C، Fortran، C++، این کامپایلر به Gnu Compiler Collection تغییر نام داد.
در واقع نصب دو نرم افزار bash و gcc بر روی لینوکس شروعی بر قدرت گرفتن و نصب برنامههای بیشتر بود، تا به امروز که میتوان طیف وسیعی از نرم افزارهای متنوع خدماتی، تخصصی، مهندسی و پزشکی را روی این سیستم عامل استفاده کرد.
هسته لینوکس با c و در جاهای حساس با اسمبلی نوشته شده است. برای دانلود هسته لینوکس به آدرس این مراجعه کنید.
گنو لینوکس (هسته لینوکس و ابزارهای مرتبط) در 71% از سورس خود از زبان سی استفاده کرده است. البته زبانهای دیگری چون اسمبلی، c++، لیسپ، پرل، فرترن و پایتون نیز در جاهای مختلف بر اساس ویژگیهایی که دارند مورد استفاده قرار گرفته اند.
گفته میشود لینوکس تقریبا 30 میلیون خط کد دارد که حدود 8% از آن به هسته اختصاص یافته است. این مقدار کد معادل 8 هزار نفر/سال کار است. یعنی باید 8 هزار برنامه نویس خبره را یک سال به کار بگیرید تا شاید بتوانید محصولی مانند لینوکس خلق کنید!
لینوکس در ابتدا بسیار محدود بود و فقط با هسته AT386 و هارد at کار میکرد، ولی کم کم و پس از گذشت زمان اکنون از تمام سخت افزارهای موجود در بازار پشتیبانی میکند.
گسترش و توسعه لینوکس
برای آشنایی با نحوه توسعه و گسترش لینوکس و نرم افزارهای وابسته توصیه میشود مقاله "کلیسای جامع و بازار" نوشته اریک ریموند را مطالعه کنید. لینوکس برای اولین بار در سپتامبر 1991 در اینترنت منتشر شد. چند ماه بعد دومین نسخه از آن توسط لینوس توروالدز روی اینترنت قرار گرفت. پس از آن هزاران برنامه نویس خبره و آماتور بر روی آن کار کردند و اصلاحات و نظرات اصلاحی را برای لینوس توروالدز ارسال کردند و سالها گذشت تا اینکه لینوکس به شکل امروزی اش تبدیل شد.
بدلیل توان گسترش و توسعه لینوکس، هکرها به این سیستم عامل علاقه خاصی نشان دادند و برای کارهای خود از این سیستم عامل استفاده میکنند. هر چند که هکرها نیز توزیعهای خاصی از لینوکس را برای خود اختصاصی کرده اند که در آن ابزارهای خود را قرار داده اند.
اساسا توسعه لینوکس اینگونه صورت میپذیرد. برخی عیبهایی در هسته لینوکس مییابند، و برخی دیگر پیشنهاداتی برای افزایش بهره وری، افزایش سرعت و امنیت آن به لینوس توروالدز منتقل میکنند و لینوس توروالدز با صلاح دید خودش در آبدیتهای بعدی آنها را اعمال میکند.
برخی از توسعه دهندگان هم هستند که توزیعهای جدیدی برپایه لینوکس میسازند که حین توسعه سیستمهای خود نظرات اصلاحی خود را به لینوس توروالدز انتقال میدهند.
مجوز لینوکس
هر نرم افزاری که به دست کاربران میرسد باید تحت مجوز خاصی منتشر شود. مجوزهایی متعددی وجود دارند، GPL، LGPL،Apache ، BSD، MIT. لینوس توروالدز هسته خود را بر پایه مجوز GPL منتشر کرده است. GPL خلاصه General Public License است. البته نام درست تر این مجوز GNU GPL و یا GNU General Public License است. این مجوزه پر کاربرد ترین مجوز در حوزه نرم افزارهای متن باز است و بیش از نیمی از نرم افزارهای متن باز دنیا از این مجوز بهره میبرند. آخرین اصلاحیه این مجوز نسخه 3 است که در سال 2007 عرضه شده است. هسته لینوکس و کلیه نرم افزارهای گنو تحت این مجوز عرضه شده اند.
امنیت در لینوکس
بر خلاف ویندوز و دیگر سیستم عامل ها، لینوکس قوانین مستحکم و سخت گیرانهای برای دسترسی به فایلها دارد. لینوکس به صورت درونی امنیت را در خود دارد. برای برخی از خصوصیتهای امنیتی موجود در لینوکس باید چندین نرم افزار را در ویندوز نصب کرد.
لینوکس از ابتدای کار خود برای سیستمهای چند کاربره طراحی شد، و از همان ابتدا سطح و مجوز دسترسی در آن بهینه سازی شده بود. دنیای فناوری اطلاعات امروز بر پایه شبکه و ارتباط کاربران بنا نهاده شده، چیزی که لینوکس از همان ابتدا برای آن آماده بوده است. وجود سطوح دسترسی متعدد و شخصی سازی شده باعث گردیده است که برنامههای مخرب توانایی ضربه زدن به کل سیستم عامل را نداشته باشند و فقط به بخشی از سیستم ضربه وارد کنند.
برخی از افراد معتقد اند که بدلیل متن باز بودن لینوکس اشکالات امنیتی آن به راحتی کشف و مورد سوء استفاده قرار میگیرند ، ولی در عمل قضیه عکس این مساله است. مشکلات امنیتی در لینوکس به سرعت کشف و رفع عیب میشوند. فقط کافی است شما سیستم لینوکسی خود را به صورت پیوسته بروز رسانی کنید. مشکلات امنیتی موجود در لینوکس همیشه بسیار سریع کشف و رفع میشوند در صورتی که در سیستم عاملهای دیگر اینگونه نیست، و کشف عیبها و رفع آنها گاهی مدتها به طول میکشد.
سطوح دسترسی و اجرا در لینوکس به سه سطح تقسیم میشود، مجوز خواندن، مجوز نوشتن و مجوز اجرا کردن. مثلا شما وقتی یک سایتی که بر روی سرور لینوکس اجرا میشود را میبینید مجوز خواندن دارید. اگر مجوز خواندن از شما سلب شود نمیتوانید آن سایت را مشاهده کنید. مجوز خواندن را میتوان به گروههای خاصی داد و یا میتوان محدودیتهای بسیاری اعمال کرد. این قابلیتها از ابتدا به صورت پیش فرض در لینوکس موجود بوده اند.
برای توضیح بیشتر مجوز خواندن (Read permission)، برای خواندن و لیست کردن محتویات یک دایرکتوری کاربرد دارد. مجوز نوشتن یا مجوز ایجاد تغییرات (Write permission) امکان ایجاد تغییرات در محتویات یک فایل، حذف کردن فایلها و یا ایجاد فایل جدید است. مجوز اجرا (eXecute permission) امکان اجرای یک فایل را به یک کاربر میدهد. مثلا اگر شخصی در یک دایرکتوری فقط مجوز eXecute داشته باشد ولی مجوز read نداشته باشد، فقط میتواند برنامههای موجود در آن دایرکتوری را اجر کند و نمیتواند لیست محتویات آن دایرکتوری را مشاهده کند.
نکته جالب در لینوکس این است که یک کاربری که یک فایل را ایجاد میکند میتواند امکان دسترسی به خود آن فایل را برای خود قطع و امکان دسترسی به آن را برای دیگر افراد باز بگذارد.
در لینوکس کاربری به نام کاربر root وجود دارد که کلیه مجوزهای دسترسی را برای خود دارد و میتواند هر کاری در سیستم انجام دهد، مجوزها را تغییر دهد، فایلها را مشاهده، حذف و یا برنامهها را اجرا کند.
در لینوکس میتوان گروههای کاربری خاصی را تعریف کرد، و به هر گروه مجوزهای دسترسی بخصوصی اختصاص داد.
سازگاری لینوکس با دستگاههای مختلف
لینوکس در همه جا مورد استفاده قرار میگیرد. ساعت ها، تلفنهای همراه، تبلت ها، روتر برد ها، رایانههای شخصی، ابر سرور ها، کنسولهای بازی، سیستمهای حفاظتی، سیستمهای ناوبری، دوربینهای فیلم برداری، مدم ها، دستگاههای حضور و غیاب، تلویزیون ها، روباتهای مورد استفاده در کارخانه جات و هر دستگاهی که تصورش را بکنید. امروزه حتی در دستگاههای آشپزخانه برای هوشمند سازی کارکرد دستگاهها از نسخههای کوچک لینوکس استفاده میکنند. لینوکس بدلیل متن باز بودن قابلیت شخصی سازی بالایی دارد. این قابلیت باعث شده است که بتوان برای مدیریت هر دستگاهی هر چند کوچک و یا هر چند بزرگ که باشد یک لینوکس اختصاصی سر هم کرد. مثلا برای یک ساعت هوشمند باید نرم افزارهای بسیاری را از هسته لینوکس حذف و یک سیستم اختصاصی کوچک برای کاربرد یک ساعت کامپایل کرد.
طبق مطلبی که در سال 2010 منتشر شده است از 500 ابر رایانه موجود در دنیا 459 عدد از آنها توسط لینوکس مدیریت میشوند.
ویژگی توسعه پذیری بالایی که در لینوکس وجود دارد باعث میشود روز به روز لینوکس گسترده تر شود و هر روز مدیریت دستگاه جدیدی را بدست بگیرد.
توزیعهای لینوکس
همان طور که گفته شد لینوکس متن باز و قابل توسعه است، سلیقه کاربران نیز بسیار متنوع است. برخی از لینوکس به عنوان یک دستگاه شخصی استفاده میکنند، برخی از لینوکس برای سرورهای اینترنتی، برخی هم از لینوکس برای مدیریت کارهای شخصی، برخی از لینوکس برای ابر کامپیوترها و برخی هم برای تستهای امنیتی و یا گه گاهی برای هک کردن سیستمهای دیگران بهره میبرند.
تیمهای تخصصی بسیاری در دنیا هستند که یک توزیع خاصی از لینوکس را برای خود شخصی کرده اند. برخی توزیعهای لینوکس در دسترس عموم قرار گرفته اند و برخی آن قدر شخصی هستند که فقط توسط یک نفر استفاده میشوند. برخی از توزیعها هم در یک شرکت و یا برای یک گروه کاری خاص مورد استفاده قرار میگیرند.
در این بین توزیعهای بسیار عمومی و محبوبی نیز وجود دارند که هر کدام توسط هزاران توسعه دهنده توسعه مییابند و توسط میلیونها نفر از سراسر دنیا مورد استفاده قرار میگیرند. توزیعهای معروف لینوکس عبارتند از: آرچ لینوکس، ردهت، سنتاواس، دبیان، اسلکور، فدرا، جنتو، ناپیکس، کوبونتو، مینیت، مندریوا، اپن سوزه، اوبونتو و بک ترک.
به صورت خلاصه برخی از توزیعها را معرفی میکنیم. رد هت یک توزیع تجاری بسیار قدرتمند است که توسط یک شرکت آمریکایی در کارولینا توسعه مییابد. سنت او اس یک نسخه رایگان سروری بر پایه رد هت است. فدرا یا فدورا یک نسخه شخصی بر پایه رد هت میباشد.
ناپیکس یک توزیع سی دی زنده است. به این ترتیب که توزیع ناپیکس را بر روی سی دی رایت میکنید و سیستم را با آن بوت میکنید. همین برای داشتن یک سیستم لینوکس بدون نصب کافی است.
اپن سوزه هم یک توزیع بسیار محبوب و قدرتمند است که کاربران بسیاری را به خود مشغول کرده است.
اما اوبونتو را شاید بتوان مناسب ترین توزیع برای سیستمهای شخصی دانست. البته این امر سلیقهای است و برخی فدرا یا دبیان را مناسب تر میدانند. ولی اوبونتو بسیار مورد استفاده قرار میگیرد و حتی نسخه مناسب گوشیهای تلفن همراه آن نیز آماده شده است. اوبونتو نسخه مخصوص سرور هم دارد.
دبیان هم توزیع محبوب و قدرتمند دیگری است که در دو نسخه شخصی و سرور معرفی شده است. گفته میشود دبیان 283 میلیون خط کد دارد که برای برنامه نویسی آن نیاز به هفتاد و سه هزار نفر / سال دارید.
سرورهای لینوکس
سرورهای لینوکسی قدرت بسیار بالایی دارند و حجم بالایی از زبانها را نیز پشتیبانی میکنند، Php، java، cgi، coldfusion، perl، python، c، c++ و ... .
به طور خلاصه اگر قصد استفاده از asp و یا asp.net را ندارید همیشه بهترین گزینه سرور لینوکس است. در مورد پایگاههای داده هم اگر نیازی به SQL Server ندارید لینوکس بازدهی بسیار بالایی دارد. Mysql، Oracle، mongodb و بسیاری از پایگاههای داده بسیار قدرتمند در سرورهای لینوکسی کار میکنند.
سرورهای لینوکس خیلی ارزان تر از سرورهای ویندوز هستند، چون هم سخت افزار ارزان تری نیاز دارند هم برای خود سیستم عامل لازم نیست مبلغی را پرداخت کنید.
برای سرورهای لینوکس نرم افزارهای رایگان و قدرتمند بسیاری وجود دارند، در صورتی که در ویندوز انتخابهای متنوعی ندارید و محصور به چند نرم افزار آن هم عموما پولی هستید.
همانطور که در بالا گفته شد، لینوکس بدلیل ساختار شبکهای اش برای کاربردهای سروری بسیار عالی عمل میکند.
سرورها بعضا کارکرد بسیار حیاتیای دارند که خللی چند ساعته هم خسارتهای جبران ناپذیری را برای شرکتها بهمراه داد. در لینوکس به ندرت نیاز به خاموش کردن و یا تعویض کردن سیستم عامل دارید. و یک نسخه از لینوکس را میتوان سالها بدون نیاز به خاموش کردن و یا حتی نصب دوباره استفاده کرد. در سیستمهای لینوکسی نیاز نیست سیستم عامل را بکل عوض کنید. مثلا در ویندوز برای تغییر سیستم عامل از 2003 به 2008 به ساعتها زمان نیاز دارید و در این مدت از دسترس خارج خواهید بود. در صورتی که در لینوکس تنها نیاز است که سیستم خود را بروز رسیانی کنید، پس از بروز رسانی شما جدید ترین نسخه از سیستم عامل خود را دارید.
در سرورهای لینوکسی عموما نرم افزارهای اسکوئید (SQUID)، سرور پروکسی-کش (Proxy-Cache)، بایند (Bind)، سرور سامانه نام دامنه (DNS)، آپاچی (APACHE)، سرور وب (Web Server)، پستفیکس(Postfix)، سرور پست الکترونیکی (Mail Server) موجود هستند.
نصب لینوکس
در سالهای ابتدایی نصب لینوکس بسیار مشکل بود بهمین دلیل خیلی از کاربران آماتور هیچ گاه نمیتوانستند از لینوکس استفاده کنند. ولی اخیرا نصب توزیعهای لینوکس بسیار راحت شده است. تنهای کافی است که موقعیت زمانی خود را تعیین و حجم اختصاص یافته به swap و نام کاربری و رمز عبور را انتخاب کنید. مابقی کارها خودکار انجام میپذیرند. برخی از توزیعهای لینوکس مانند اوبونتو را میتوان بدون نصب در حالت Try فقط استفاده کرد.
از این که با هیتوس همراه بودید متشکریم.