لینوکس چیست و چه کاربردهایی دارد؟
برای بسیاری از دانشجوهایی که در حوزههای مربوط به IT و شبکه در حال فعالیت هستند، این سوال مطرح میشود که هدف از تولید سیستم عامل لینوکس چه بود و تفاوتهای آن با سیستم عامل های رایجی که در حال استفاده هستیم در کجاست و همچنین علت محبوبیتش بین کاربران را هم بررسی میکنیم.
برای بررسی لینوکس (Linux) و هر سیستم عاملی اول باید به مفهوم پایه سیستم عامل بپردازیم. سیستم عامل نرم افزاری است که کلیه منابع سخت افزاری مرتبط با سیستمها را مدیریت میکند و هماهنگی و ارتباط بین سخت افزار و نرم افزار را فراهم میکند که تمام این پروسه به شما کمک میکند تا بدون نیاز به دانستن زبان ماشین، با سخت افزار ارتباط برقرار کنید. این فرایند در نتیجه، کار کاربر را در استفاده از سخت افزار بسیار آسان میکند.
لینوکس یا در اصل همون گنو/لینوکس، به دلیل متن باز (open source) بودن، راه طول و درازی رو طی کرده و در حال حاضر هم توسط چندین موسسه و شرکت مدیریت میشود که در ادامه به روند توسعه و تکامل سیستم عامل لینوکس میپردازیم.
پیدایش سیستم عامل Unix
در سال ۱۹۶۹ سیستم عامل Unix توسط کن تامسو (Kenneth Lane Thompson)، دنیس ریچی (Dennis Ritchie) و برایان کرنیگان (Brian Kernighan) در آزمایشگاه بل (Nokia Bell Labs)، زیرمجموعهی شرکت مخابراتی AT&T توسعه داده شد. برای ساخت و توسعهی چنین سیستم عاملی نیازمند به یک زبان برنامه نویسی بودند که اولین جرقههای اختراع زبان قدرتمند و تاثیر گذار C زده شد.
نحوهی کار نرم افزار، بصورت امبدد سیستم (Embedded system) است، اینطور که از ابزارها و دستورات بسیار کوچک که برای یک هدف خاص تشکیل شده و این ابزارها به نحوی با هم ترکیب میشوند تا یک برنامهی بزرگتر را درست کند، طبیعتا این کار باعث افزایش عملکرد و سریعتر شدن سیستم میشود.اما برای کاربران یونیکس (Unix) مشکلات زیادی مثل رایگان نبودن و عدم دسترسی به سورس کد ایجاد میکرد که باعث میشد فقط شرکتهای بزرگ توانایی استفاده از سیستم عامل رو داشته باشند.
گنو (GNU)، اولین توزیع رایگان و متن باز
GNU بیانکننده GNU Is Not Unix یا گنو یونیکس نیست، است. در سال ۱۹۸۳ ریچارد استالمن (Richard Stallman) پروژهی عظیم و متن باز به اسم گنو (GNU) را شروع کرد. قصد داشت که یک سیستم عامل شبه یونیکس بنویسد اما با این تفاوت که کاملا متن باز و آزاد باشد. در واقع هدف و رسالت اصلی این پروژه این بود که نرم افزار باید آزاد باشد و کاربران اجازهی تغییر و ویرایش آن را داشته باشند، همین موضوع سبب شد که استالمن بنیان نرم افزار آزاد را تاسیس کند.
استالمن، کامپایلر GCC (GNU Compiler Collection) و ویرایشگر متن Emacs و Bash را نوشت و منتشر کرد و باعث شد ابزارهایی برای طراحی و توسعهی یک سیستم عامل آزاد، فراهم بشود. تمام این اتفاقات باعث شد تا گنو (GNU) به پروژهای تبدیل شود که مجموعه ابزارهایی که برای سیستم عامل لازم است را دارا باشد و در حین حال رایگان و متن باز باشد. تنها مشکل گنو (GNU) این بود که هستهی سیستم عامل یا به اصطلاح kernel نداشت. کرنل برای برقراری ارتباط مستقیم سخت افزارها با سایر قسمتهای دستگاه لازم است.
کرنل لینوکس (Linux kernel)
جوان فنلاندی به اسم لینوس تروالدز (Linus Torvalds) با الهام گرفتن از هستهی مینیکس (Minix)، شروع به نوشتن یک کرنل میکند که در حد کرنل یک پروژهی دانشگاهی، کوچک و میکروکرنل (Microkernel) بود. به گفتهی خودش، این سیستم عامل صرفاً یک سرگرمی بوده که با پتانسیل رشدی که دارا بود به کرنل کنونی تبدیل شده است. درتصویر زیر میتوانید متن کامل ایمیل را مشاهده کنید.سر انجام در سال ۱۹۹۱ ، لینوکس نسخهی ۰.۰.۱ منتشر شد که فقط از پردازنده Intel i386 و فلاپی دیسک پشتیبانی میکرد.
لینوکس چیست؟
پس از ادغام شدن کرنل لینوکس با کامپوننتهای پروژهی گنو (GNU)، اسم ترکیبی گنو/لینوکس به وجود آمد. لینوکس در واقع یک شبه یونیکس (Unix) میباشد و تا حدودی ویژگیهای یونیکس را به ارث برده است. لینوکس از سختافزارهای بسیاری پشتیبانی میکند، از تلویزیونها گرفته تا اَبَرکامپیوترهایی مثل سرورهای گوگل، فیسبوک، آمازون که همگی مبتنی بر لینوکس هستند. درست همانند سیستمعاملهای ویندوز (Windows)، مک او اس (Mac O)، گنو/لینوکس نیز یک سیستم عامل محسوب میشود. جالب است که بدانید یکی از محبوبترین پلتفرمهای تلفن همراه یعنی اندروید، توسط سیستم عامل لینوکس تامین میشود.
بررسی قسمتهای مختلف لینوکس
- Bootloader
نرم افزاری است که قبل از بارگذاری سیستم عامل اجرا میشود، در واقع بدون بوت لودر (bootloader)، سیستم عامل شما نمیتواند در حافظه بارگذاری شود.
- Kernel
به بخش اصلی سیستم عامل لینوکس هسته یا کِرنِل گفته میشود که RAM ،CPU و سایر بخشهای سیستم را مدیریت میکند. در واقع کرنل (Kernel) پایینترین بخش یک سیستم عامل است. کرنل لینوکس بر اساس سیستم استاندارد POSIX (Portable Operating System Interface for Unix) نوشته شده است.
- Kernel Initialization
اولین بخشی است که بعد از بوت لودر (bootloader) شروع میشود و تا پایان کار سیستم، فعال است.
- Daemons
به خدمات و دستوراتی که در پشت صحنه سیستم اتفاق میافتد و با کاربر ارتباط مستقیم ندارد مثل printing، sound، scheduling و … که در هنگام راهاندازی سیستم یا بعد از ورود به دسکتاپ شروع به کار میکنند.
- Graphical server
به اسم سرور X یا X server معروف است که وظیفهی نمایش محیط گرافیکی روی مانیتور را دارد.
- Desktop environment
بخشی است که مستقیما توسط کاربر کنترل میشود که نسخههای مختلفی برای انتخاب داره مثل Mate، Cinnamon، GNOME، KDE و … که بنا به نیازتون میتوانید نصب و استفاده کنید. هر کدام از اینها، یکسری برنامههای داخلی (built-in) مثل بازی، مرورگر، فایل منیجر، تنظیمات و… را همراه خود دارند.
- Applications
اپلیکیشنها امکانات سیستم عامل را در اختیار کاربران قرار میدهند. محیطهای دسکتاپ سیستم عامل لینوکس مجموعه کاملی از برنامهها را ارائه نمیدهند برخلاف سیستمعاملهایی مثل ویندوز و مک که داخل محیط سیستم عامل بدون محدودیتی، میشود برنامهها را نصب کرد. برای اینکه این مشکل هم رفع شود باید از توزیعهای لینوکس استفاده کنیم که هر کدام از آنها یک توزیع کننده اختصاصی دارند که در ادامه به محبوبترین توزیعها اشاره میکنیم.
توزیع
مهمترین مزیت توزیعها
- تقریباً اکثر توزیعهای لینوکس را میتوان بصورت رایگان نصب کرد.
- قابل استفاده بصورت پرتابل، با نصب بر روی فلش یا حتی CD که در اصطلاح Live CD/USB نامیده میشوند.
- بیشتر توزیعها از انجمنها و پشتیبانی فوقالعادهای برخوردار هستند که در ادامه حتما به این موضوع میپردازیم.
- متناسب با کار و سلیقهای که دارید میتوانید کاملا شخصیسازی کنید.
انواع توزیع های لینوکس
- Redhat
- Ubuntu
- Debian
- Arch Linux
- CentOS
- Fedora
- Gentoo
- OpenSUSE
- Slackware
- Knoppix
- Mandriva
- Knoppix
کدام یک از توزیعها را انتخاب کنیم؟
مهاجرت از ویندوز به لینوکس برای افرادی که درکی از لینوکس ندارند بسیار سخت و تلخ است اما در توزیعهای جدید لینوکس با توسعه محیط گرافیکی و راحتتر شدن فرایندهایی مثل نصب نرم افزار، مهاجرت را چند درجه راحتتر کرده است. در گام اول باید ببینید به چه میزان تسلط و درک مناسبی از لینوکس دست یافتید؟ در حد استفادهی روزمره یا اینکه شما یک برنامه نویس یا یک هکر حرفهای هستید و با ابزارهای حرفهایتر لازم است که کار کنید؟! عموما توزیع اوبونتو (Ubuntu) برای کاربران مبتدی تا پیشرفته و حتی محیط سرور پیشنهاد میشه و این توزیع بر مبنای دبیان (Debian) توسعه یافته است. ابزارها و محیط گرافیکی این توزیع باعث آسانتر شدن فرایند مهاجرت از ویندوز به لینوکس میشود.
مزیتهای لینوکس
- امنیت
لینوکس نیز مانند هر سیستم عامل دیگری، با رعایت مسائل مهمی مثل آپدیتهای مداوم سیستم عامل و دانلود از منابع معتبر، میتوان به راحتی از ورود بدافزارها جلوگیری کرد.
- متن باز
لایسنس GPL مخفف General Public License ضمانت میکند که کاربران حق مطالعه، ویرایش، اشتراکگذاری و انتشار نرم افزار را خواهند داشت.
- عملکرد با سرعت بالا
در سیستمعاملهای مختلف الگوریتمهای متفاوتی پیاده شده است. در نتیجه هر شرکتی که الگوریتم بهینهتری را توسعه داده باشد، برای استفاده از منابع سختافزاری، بازدهی سیستم عامل را بالا میبرد.
- وجود انجمنهای پشتیبانی
انجمنهای داخلی و خارجی زیادی برای لینوکس وجود دارد. به عنوان مثال یک گروه ایرانی با نام انجمن اوبونتو وجود دارد که کاربران ایرانی علاوه بر رفع مشکلات لینوکسی خود، بتوانند در توسعه و معرفی آن نقش مهمی را ایفا کنند.
معایب لینوکس
- سیستم عامل لینوکس مبتنی بر خط فرمان است.
- خیلی کاربر پسند یا اصطلاحا User Friendly نیست. بنابراین برای کاربران مبتدی، کار کردن با آن ممکن است کمی گیجکننده باشد؛ البته در برخی از توزیعهای لینوکس تا حد خوبی بهتر شده است.
- حتما قبل از تهیهی هر سختافزاری، باید مطمئن شوید که آن قطعه، از درایورها پشتیبانی میکند.
اما حرف آخر…
پیشنهاد میکنم که مسیر یادگیری لینوکس رو کنار نگذارید، این مقاله صرفاً جهت آشنایی اولیه بود، اگر میخواهید بیشتر و تخصصیتر درباره لینوکس بدانید، توصیه میکنم از افراد ارزشمندی مثل استاد جادی میرمیرانی که در این حوزه کار میکنند، کمک بگیرید و از آموزشهای وی استفاده کنید.
ممنون که تا به انتهای این مقاله همراه من بودید، در این مقاله سعی کردم که نگاهی متفاوتتر با این سیستم عامل کاربردی آشنایتان کنم. اگر تجربهای در استفاده از نسخههای مختلف لینوکس را دارید در بخش نظرات برای من بنویسید.
امتیاز بده!
۵ ستاره یادت نره
خیلی کامل و عالی نوشتید قلمتون مستدام
بلد بودن لینوکس برای هر برنامه نویسی لازمه و ضروری
یادگیری لینوکس ضروریه؟
درود و وقت بخیر سینا عزیز
برای کار در برنامه نویسی نیاز هست که لینوکس رو بصورت کامل بلد باشی
ممنونم از همراهیت