FreeBSD یا Linux مسئله این است؟

FreeBSD در مقابل LinuxFreeBSD در مقابل Linux

قبل از پرداختن به تفاوت های میان FreeBSD و GNU/Linux بایستی خاطر نشان شد که بیش از هر چیز شباهت های زیادی میان این دو وجود دارد. در واقع هر دوی آن ها توسط سازمان های غیرانتفاعی مختص خود با یک هدف مشترک توسعه می یابند: قابل اتکاترین سیستم عامل با بیشترین قابلیت استفاده.

در سومین مقاله از سری آموزشی FreeBSD، با تفاوت های FreeBSD و GNU/Linux آشنا خواهیم شد. توصیه می شود پیش از مطالعه این مقاله قسمت های اول و دوم این سری را مطالعه نمائید.

هشدار: این مقاله بر اساس تجربیات و نظرات شخصی نگارنده در کار با هر دو سیستم عامل، به رشته تحریر در آمده است. لذا، از آنجا که بحث مقایسه مطرح است ممکن است برخی از افراد با نظرات مطرح شده در این مقاله موافق نباشند. شایان ذکر است که تصمیم گیری و برداشت نهائی از مطالب بر عهده خواننده خواهد بود.


فهرست


لیسانس

با وجود آنکه هر دو سیستم عامل کد باز و آزاد محسوب می شوند، GNU/Linux از لیسانس GPL استفاده می نماید و در مقابل آن FreeBSD از لیسانس BSD.

GPL با ترجیح کاربر بر توسعه دهندگان، با هدف غلبه بر نرم افزارهای کد بسته و غیرآزاد طراحی شده است. با استفاده از این لیسانس کاملا مطمئن خواهید بود که سورس کد همیشه در دسترس می باشد و آلوده به هیچ گونه کدی از نرم افزارهای کد بسته نمی باشد. در واقع GPL سعی می کند که از توزیع های به شکل فقط باینری جلوگیری نماید.

در مقابل BSD یک لیسانس دست و دلبازانه تر است که حتی اجازه توزیع به شکل باینری را هم به شما خواهد داد. تفاوت اصلی میان این دو را می توان بدین شکل خلاصه نمود: GPL به شما حق استفاده از نرم افزار را به هر شکلی که تمایل داشته باشید خواهد داد (استفاده، مطالعه، ویرایش و در نهایت توزیع مجدد)، اما باید اطمینان حاصل نمائید که در صورت توزیع مجدد کد توسط شما تمامی این حقوق برای کاربر بعدی در دسترس خواهد بود. در آن سوی دیگر لیسانس BSD با فراهم آوردن تمامی حقوق (شامل استفاده، مطالعه، ویرایش و توزیع مجدد)، در صورت توزیع مجدد، شما را ملزم به در اختیار نهادن آن حقوق با سایر کاربران نمی نماید (ترجیح توسعه دهنده به کاربران).

یک مثال خوب برای استفاده از BSD، شرکت Apple می باشد که با استفاده از کدهای BSD از سیستم عامل FreeBSD و سایرین، اقدام به تولید Mac OS X و iOS نموده که به جز حق استفاده محدود، سایر حقوق را از کاربران سلب نموده است.


کنترل

کد BSD تحت کنترل انحصاری شخص خاصی نمی باشد که برای بسیاری از افراد یک مزیت بزرگ به شمار می رود. در مقابل کد هسته لینوکس در کنترل Linus Torvalds خالق آن می باشد. در FreeBSD شخص خاصی اقدام به دیکته نمودن این که چه چیزی باید وارد آن شود یا نشود، نمی نماید. به جای آن، FreeBSD از یک تیم هسته یا Core Team بهره می برد که سمت و سوی پروژه را مشخص می نماید.


هسته یا یک سیستم عامل کامل

پیش از هر چیزی بایستی خاطرنشان شوم که Linux تنها یک هسته می باشد در حالیکه زمانی که صحبت از BSD می شود منظور یک سیستم عامل کامل است. توزیع های لینوکس توسط سازمان ها، گروه ها و افراد مختلف با کنارهم قرار دادن هسته لینوکس و سایر نرم افزارها از پروژه های مختلف (به خصوص GNU که بخش عمده ای از آن را تشکیل می دهد)، هر یک با هدف خاصی توسعه می یابند. خبر خوب آن است که با توجه به مشترک بودن هسته و برخی از نرم افزارها، اکثر نرم افزارهائی که برای Linux نوشته می شوند بر روی اکثر توزیع ها اجرا می شوند.

در مقابل، پروژه FreeBSD و سایر BSD ها که همگی از خانواده BSD Unix مشتق شده اند سیستم عامل های کاملی می باشند که مجموع آن توسط یک تیم واحد توسعه داده می شود. شاید این ویژگی چندان مهم به نظر نرسد اما در نظر بسیاری از افراد این یکپارچگی یکی از نقاط قوت BSD است.


شبه یونیکس

افسانه ای هست که: “زمانیکه گروهی از هکرهای UNIX گرد هم بنشینند و سعی در پورت نمودن UNIX به PC داشته باشند، حاصل آن BSD می شود. زمانیکه گروهی از هکرهای PC دور یکدیگر بنشینند و سعی در نوشتن یک سیستم یونیکس برای PC داشته باشند، حاصل آن لینوکس می شود.” این عبارت نکات بسیاری را در خود نهفته دارد.

BSD ها بسیار به UNIX شبیه هستند چرا که در واقع آن ها مستقیما از UNIX سنتی مشتق شده اند. در حالیکه Linux با الهام از یکی از سیستم عامل های شبه یونیکس به نام Minix ساخته شده است.

سیستم عامل های Minix و Linux تنها سیستم عامل هائی هستند که از اساس بدون هیچ گونه ارتباط مستقیمی با UNIX اصلی ساخته شده اند. ریشه سایر سیستم عامل ها از قبیل BSD ها، AIX، HP-UX، Solaris و حتی Mac OS X (از طریق Darwin که خود بر اساس BSD توسعه داده شده است) به UNIX اصلی باز می گردد. در این میان هیچ یک از سیستم عامل های فوق حق اطلاق نام UNIX به خود را، به دلایل قانونی ندارند، مگر آن که حقوق آن را خریداری کرده باشند. برای مثال اپل برای برخی از نسخ Mac OS X, iOS و Apple TV آن را خریداری نموده است.


سیستم پایه

یکی از اساسی ترین تفاوت ها میان FreeBSD و Linux می باشد. از آنجا که لینوکس ملغمه ای از سیستم های کوچک تر می باشد می توان به سرایت گفت که چنین چیزی برای لینوکس وجود ندارد. ممکن است برخی ادعا نماید که Base System در لینوکس همان Kernel می باشد. نکته اینجاست که کرنل بدون نرم افزارهای کاربردی کاملا بی ارزش است. از سوی دیگر، BSD شامل یک Base System می باشد – که حتی libc را نیز شامل می شود. از آن جا که این قسمت ها همگی به عنوان یک مجموعه توسعه و عرضه می شوند، افراد بسیاری اعتقاد دارند که منجر به یک سیستم کاملا منسجم و یکپارچه می شود.

علاوه بر آن از آنجا که FreeBSD قسمت Base System را از نرم افزارهای نصب شده توسط کاربر - که Ports نامیده می شود - جدا نگه می دارد، خراب شدن سیستم عامل تقریبا ممکن نیست. برای مثال مقایسه شود با سیستم های Rolling Release یا انتشار غلطان در لینوکس که پس از هر آپدیت احتمال خراب شدن سیستم عامل و بالا نیامدن آن وجود دارد (مانند Gentoo, Funtoo, Sabayon و Arch Linux). از سوی دیگر در توزیع های لینوکسی که غلطان نیستند معمولا نرم افزارها قدیمی هستند که ممکن است در بسیاری از حالات آنچه که شما می خواهید نباشد. اما در FreeBSD، با برخورداری از این ویژگی شما از یک Base System پایدار برخوردار خواهید بود به علاوه نرم افزارهای غلطان که جدا از یکدیگر نگهداری می شوند. بهترین حالت ممکن میان هر دو!


نصب از سورس کد

به صورت سنتی نصب نرم افزارها در سیستم عامل FreeBSD از سورس کد – از طریق سیستم Ports – انجام می شود و در لینوکس توسط Package Manager ها به شکل Binary. البته چندین دیستروی لینوکسی مانند Gentoo, Funtoo و Sabayon که خود از FreeBSD الهام گرفته اند نرم افزارها به صورت پیش فرض از سورس نصب می شوند. در برخی دیستروها مانند Slackware شما می توانید از سورس یا به شکل باینری اقدام به نصب برنامه ها نمائید. سایر Package Manager ها در لینوکس یا بر اساس RPM توسعه یافته اند یا DEB. برخی هم مانند Arch Linux نرم افزارهای مدیریت بسته خاص خود را توسعه داده اند.

در مقابل در FreeBSD امکان نصب همه چیز شامل Base System و نرم افزارها (Ports) به سادگی از سورس کد و یا به شکل باینری وجود دارد. شما حتی توانائی ترکیب هر دو حالت را بدون هیچ مشکلی خواهید داشت. جهت نصب نرم افزارها از سورس کد بایستی از سیستم Ports استفاده نمائید در حالیکه برای نصب در حالت باینری از pkgng. همچنین امکان بروزرسانی Base System از حالت سورس یا باینری وجود خواهد داشت. نصب از حالت سورس به شما قابلیت سفارشی سازی سیستم عامل و یا نرم افزارها را خواهد داد. شما قادر خواهید بود آن را برای سخت افزار خاصی بهینه نمائید و یا برخی از ویژگی هائی که نیازمند آن نمی باشید را غیرفعال نمائید که به دلیل کاهش حجم، منجر به بارگذاری سریعتر برنامه ها، اشغال حجم کمتر در دیسک یا حافظه و حتی در پاره ای از موارد امنیت بهتر خواهد شد (کد کمتر امنیت بیشتر!).


به روز رسانی

به دلیل مدل توسعه FreeBSD (رجوع شود به قسمت سیستم پایه در بالا)، شما توانائی به روزرسانی به آخرین نسخه از سیستم عامل را با ورود تنها یک دستور خواهید داشت. حتی بهتر از آن، می توانید سورس نسخه جدید را دانلود نموده و مانند هر برنامه دیگر کامپایل و سپس نصب نمائید.

در عمده توزیع های GNU/Linux شما قادر به بروزرسانی کل سیستم عامل از طریق نرم افزار Package Manager آن می باشید. در مدل اول شما فقط Base System را به روزرسانی می نمائید؛ در مدل دوم کل سیستم عامل را. به خاطر بسپارید که به روزرسانی Base System به معنی ارتقا سایر نرم افزارهای شما به آخرین نسخه نمی باشد. در حالیکه در توزیع های لینوکسی با هر ارتقا، کل نرم افزارهای شما به همراه سیستم عامل به روزرسانی می شوند.

آیا این بدین معنی است که روش Linux بهتر است؟ نه لزوما. در واقع یکی از نقاط قوت BSD همین جاست. به شخصه شاهد ارتقا ناموفق سیستم عامل در Linux بوده ام که در چنین شرایطی به دلیل عدم تفکیک سیستم عامل از نرم افزارها، نصب مجدد سیستم عامل اجتناب ناپذیر نموده است.


لبه تکنولوژی

تقریبا غیرممکن است که یکی از نسخ BSD آخرین نسخه از همه چیز را هم زمان فراهم کند. در مقابل، توزیع های بسیاری از لینوکس وجود دارند که این ویژگی را فراهم می آورند. اگر از طرفداران پروپاقرص فلسفه “اگر درست کار می کند به آن دست نزنید”، هستید می توانم حدس بزنم که عاشق FreeBSD خواهید شد.


پایداری

معمولا زمانی که صحبت از پایداری یا Stability به میان می آید، در ذهن بسیاری از افراد کرش یا هنگ کردن کامپیوترها و یا چیزی مشابه آن پدیدار می شود. قطعا پس از چند دهه توسعه هر دو سیستم عامل FreeBSD و Linux از لحاظ پایداری در سطح بسیار قابل قبولی می باشند.

منظور از پایداری، ثبات در ویژگی ها، معماری و پایه سیستم می باشد. شاید بهتر باشد آن را تغییر ناپذیری بنامیم. یک کد بیس پایدار. ثبات و پایداری که برنامه نویسان با خیال آسوده و اتکای بر آن اقدام به طراحی و پیاده سازی برنامه هایشان نمایند. نه پیروی و انطباق با یک چیز جدید گذرای دیگر! بلکه، انتخاب یک سنگ بنای پایدار به منظور بنا نمودن تمامی چیزهای دیگر بر روی آن.

برای مثال سیستم عامل، دیروز از HAL به عنوان رابط دسترسی به سخت افزار استفاده می نموده، امروز از udev، در حالیکه فردا به eudev مهاجرت می نماید. تا پیش از این OSS را به عنوان فریم ورک صدا عرضه می کرده است اما چون انتخاب خوبی نبوده حالا وقت مهاجرت به ALSA است. قبلا JACK سرور صدا بوده، هم اکنون PulseAudio. سال ها از sysvinit جهت بوت نمودن سیستم عامل و مدیریت Process ها استفاده می شده است، حالا نوبت به OpenRC, upstart, systemd, epoch, finit و یا هر چیز دیگر رسیده است. این دقیقا چیزی است که همیشه و به سرعت در دنیای Linux در حال انجام بوده و می باشد! تمامی برنامه هائی که چند سال پیش نوشته شده اند بایستی دائما در حال بازنویسی باشند درغیر اینصورت دیگر اجرا نخواهند شد.

هیچ شکی نیست که داشتن انتخاب همیشه چیز خوبی است (البته علم چیز دیگری می گوید!). اما جز در پاره ای از موارد هدر دادن منابع جهت اختراع دوباره چرخ می باشد. حتی بدتر از آن، بسیاری از مواقع حاصلی جز تکه تکه نمودن (Fragmentation) به بار نخواهد آورد.

تعداد BSD ها هیچ وقت از تعداد انگشتان دو دست بیشتر نبوده است. در مقابل، تصویر ذیل علیرغم نمایش موفقیت لینوکس، پراکندگی دنیای لینوکس را به خوبی نمایان می سازد:

جدول زمانی توزیع های لینوکسجدول زمانی توزیع های لینوکس - منبع تصویر: ویکی پدیا


امنیت

خوشبختانه در اکثر سیستم عامل های خانواده BSD امنیت از درجه اهمیت بسیار بالائی برخوردار می باشد تا جائی که OpenBSD ایمن ترین سیستم عامل جهان نامیده می شود.

در حالیکه Linux فایروال Netfilter را فراهم می آورد، FreeBSD سه فایروال IPFW, PF و IPFilter را جهت امنیت بهتر در Base System ارائه می نماید. همچنین Access Control ها و UNIX Permissions در هر دو سیستم عامل به خوبی پشتیبانی می شود.

FreeBSD به صورت پیش فرض، ابزار بی نظیری جهت بازرسی نمودن وضعیت نرم افزارهای نصب شده و آسیب پذیری های آن ها ارائه می نماید.


کیفیت کد

همانطور که در مقالات قبلی ذکر شد، خانواده سیستم عامل های BSD به دلایل متعدد مانند: توسعه دهندگان حرفه ای با پس زمینه آکادمیک، جلسات بررسی کد منظم و سخت گیرانه و … از کیفیت کد بسیار بالائی برخوردار می باشند تا بدان جا که NetBSD لقب بیشترین پشتیبانی و پرتابل بودن در میان سخت افزارها را یدک می کشد و OpenBSD لقب ایمن ترین سیستم عامل کد باز را.

در مقابل، لینوکس هیچ وقت چنین کیفیت کدی را به خود ندیده است. برای مثال در پاسخ به این پرسش در سال 2009، که چرا Linux در 10 انتشار گذشته 12 درصد افت کارائی داشته است، لینوس توروالدز خالق لینوکس آن را باد کرده و بزرگ خوانده است (منبع 1، منبع 2، منبع 3). که بازهم به این قضیه در Linux Con 2014 اشاره نموده است. حتی در مصاحبه ای با مجله آلمانی Zeit Online هسته لینوکس را بسیار پیچیده خوانده و ترس خود از روزی که ممکن است خطای غیرقابل ردگیری در کرنل ایجاد شود را ابراز نموده است. همچنین Andrew Morton یکی از توسعه دهندگان اصلی هسته لینوکس به این موضوع که بسیاری از باگ های شناسائی شده در لینوکس هیچ وقت رفع نشده اند، اشاره می نماید. Con Kolivas یکی از توسعه دهندگان قبلی Linux کیفیت کد پائین آن را با OpenSolaris مقایسه نموده است. و در نهایت Theo de Raadt افسانه ای خالق OpenBSD، فرآیند توسعه OpenBSD با Linux و کیفیت فاحش آن دو را مقایسه نموده است.


پشتیبانی سخت افزار

به طور معمول، بسیاری از سخت افزارها ابتدا در Linux پشتیبانی می شوند و پس از آن در FreeBSD. این بدان معنا نیست که FreeBSD سخت افزارهای کمتری را پشتیبانی می نماید. بلکه، پشتیبانی از برخی از سخت افزارها دیرتر در FreeBSD ظاهر می شود (در پاره ای از موارد بسیار دیرتر).

خوشبختانه در پشتیبانی از کارت های شبکه چه Wireless و چه Ethernet، اگر FreeBSD بهتر از Linux نباشد پا به پای آن طیف گسترده ای از کارت های شبکه را پشتیبانی می نماید.

در مورد کارت های گرافیک نیز، احتمالا مجبور به استفاده از درایورهای کد بسته سازنده ها مانند NVIDIA خواهید بود که بر اساس تجربه شخصی NVIDIA بسیار بهتر از AMD / ATI و یا INTEL عمل می نماید و با نصب درایور آن، از لحاظ گرافیک FreeBSD پا به پای Linux قادر به رقابت می باشد. البته اگر با موضوع درایورهای کد بسته مشکلی نداشته باشید، در غیر اینصورت شاید بهتر باشد که سراغ کارت های INTEL یا AMD / ATI بروید که درایورهای خود را کدباز نموده اند. اما همانطور که ذکر شد، در حال حاضر کارت های NVIDIA با درایور کد بسته بهترین کارائی ممکن را دارند. لازم به ذکر است که درایور جایگزین کد باز NVIDIA به نام nv هم در سیستم Ports وجود دارد.


تعداد نرم افزار

قبلا به تفصیل راجع به این موضوع صحبت نموده ایم. هر چند که تعداد نرم افزارهای قابل اجرا بر روی FreeBSD (بیش از 25 هزار برنامه کاربردی) تقریبا نصف توزیع Debian می باشد اما به لطف لایه سازگاری Linux می توان تقریبا هر نرم افزاری که بر روی لینوکس اجرا می شود را بر روی FreeBSD اجرا نمود. برای مثال نرم افزارهای کد بسته Flash, Skype, Nero, Opera و … که بر روی FreeBSD عرضه نمی شوند از همین طریق به خوبی بر روی FreeBSD اجرا می شوند. همچنین نرم افزارهای 32 بیتی ویندوز با استفاده Wine بر روی آن اجرا می شوند.

نکته حائز اهمیت این است که FreeBSD از پشتیبانی رسمی برخی نرم افزارهای تجاری که نسخه های تجاری Linux مانند Red Hat را هدف قرار داده اند محروم می باشد.


تعداد کاربر

این یکی برگ برنده گنو لینوکس می باشد. بنا به دلایل متعددی که در مقالات قبلی از این سری بدان ها پرداختیم، تعداد کاربران GNU/Linux با اختلاف بسیار زیادی بیشتر از BSD می باشد. البته این بدان معنا نیست که در صورت مواجه با مشکل هیچ کسی به کمک شما نخواهد شتافت. خوشبختانه انجمن های کاربری و لیست های ایمیل BSD از قبیل انجمن FreeBSD و DaemonForums مملو از کاربران حرفه ای است که در صورت پرسیدن سوال به کمک شما خواهند شتافت.


منابع یادگیری

Linux به لطف تعداد زیاد کاربران آن و توجهاتی که به سوی خود جلب نموده است است، منابع آموزشی فراوانی را پیش روی تازه واردان قرار می دهد. هر چند که برای FreeBSD کتاب ها و منابع آموزشی کمتری در دسترس می باشد، اما به لطف جامعه آکادمیک آن، کیفیت این منابع از حد بسیار بالائی برخوردار می باشد. یکی از جامع ترین منابع آموزشی همانطور که در قسمت پیشین اشاره شد، کتابچه آنلاین رسمی FreeBSD می باشد که در نسخه آفلاین PDF به چندین زبان عرضه می شود.


جهت مطالعه بیشتر

مقاله حاضر با استناد به چندین منبع مختلف – از جمله حدودا یک دهه تجربه نگارنده در کار با FreeBSD – تالیف یافته است. در برخی از این منابع اشکالات و ایراداتی واضح وجود داشته است که یا تصحیح شده و یا در این مطلب منعکس نشده اند. برخی دیگر از این مطالب به هدف کوتاه نمودن این مطلب به اختصار در آمده است. لذا تمامی منابع جهت مطالعه مخاطبین در ادامه ذکر می شود.


تبریک

بسیار عالی! پس از آشنائی مقدماتی با FreeBSD و ویژگی های آن در سه مقاله اول، در پست بعدی از سری FreeBSD اقدام به نصب Base System و پیکربندی اولیه سیستم عامل خواهیم نمود.

تا آن زمان می توانید بازخوردها و نظرات خود را از طریق این فرم با من در میان بگذارید.

و یا با عضویت در کانال تلگرام و یا عضویت از طریق ایمیل از جدیدترین مطالب با خبر شوید.


مقالات مرتبط