نت‌بی‌اس‌دی

تاریخچه

نت‌بی‌اس‌دی در سال ۱۹۹۳ از 386BSD و شاخه Net/2 از سیستم‌عامل 4.3BSD منشعب شد. دلیل منشعب شدن پروژه نت‌بی‌اس‌دی از 386BSD این بود که بیل ژولیتز، توسعه‌دهنده اصلی 386BSD، به اندازه کافی وقت نداشت تا خیل عظیم وصله‌هایی که برای برطرف کردن اشکلات و بهبود سیستم‌عامل ارسال می‌شد را مدیریت کرده و آن‌ها را در سیستم اعمال کند. در عرض چند ماه پس از انتشار اولیه 386BSD، گروهی از کاربران 386BSD، نت‌بی‌اس‌دی را بنیان نهادند تا با کمک هم از سیستم نگهداری کرده و آن را توسعه دهند. بنیان‌گذاران اولیه پروژه نت‌بی‌اس‌دی، کریس دمیتریو، تئو درات، آدام گلس و چارلز هانوم بودند. آن‌ها بالا بودن کیفیت کدهای منبع و همینطور پورتابل بودن سیستم و وابسته نبودن آن به یک سکوی سخت‌افزاری خاص را هدف اولیه پروژه انتخاب کردند. مخزن کدمنبع نت‌بی‌اس‌دی در تاریخ ۲۱ مارس ۱۹۹۳ ایجاد شد و اولین نسخه رسمی از نت‌بی‌اس‌دی، نسخه ۰٫۸، در آوریل سال ۱۹۹۳ منتشر شد. چند ماه پس از بنیان نهاده شدن نت‌بی‌اس‌دی، گروه دیگری هم پروژه‌ای تحت عنوان فری‌بی‌اس‌دی را به صورت مستقل بنیان نهادند.
پس از شکایت کردن AT&T از شرکت برکلی سافتور دیزاین به اتهام استفاده غیرمجاز از کدهای منبع یونیکس در بی‌اس‌دی/اواس، توسعه‌دهندگان نت‌بی‌اس‌دی از بیم پیش آمدن مشکل با AT&T، تصمیم گرفتند تا به جای استفاده از 386BSD به عنوان کدبیس سیستم، از 4.4BSD-lite استفاده کنند که به تازگی منتشر شده بود و عاری از کدهای AT&T بود.
در سال ۱۹۹۴، یکی از بنیان‌گذاران پروژه به نام تئو دو راد، به علت مشکلات شخصی و درگیری در لیست پستی پروژه، از این پروژه کناره‌گیری کرد. او بعدها در اواخر سال ۱۹۹۵ پروژهٔ دیگری به نام اوپن‌بی‌اس‌دی را بنیان نهاد که تمرکز خود را بر روی امنیت نهاده است. اوپن‌بی‌اس‌دی از نسخه ۱٫۰ نت‌بی‌اس‌دی منشعب شد.
اتفاق مهمی که در سال ۱۹۹۸ افتاد، معرفی کردن یک سیستم مدیریت بسته‌های نرم‌افزاری به نام پکیج سورس بود. این سیستم از پورت‌های فری‌بی‌اس‌دی اقتباس شده بود و روشی ساده به منظور نصب کردن برنامه‌های کاربری در نت‌بی‌اس‌دی را فراهم می‌کرد.

سازگار کردن

همانطور که شعار پروژه نت‌بی‌اس‌دی نشان می‌دهد نت‌بی‌اس‌دی با تعداد زیادی از معماری‌های ۳۲ و ۶۴ بیت سازگار شده‌است. از مینی‌کامپیوترهای VAX تا رایانه‌های جیبی. در سال ۲۰۰۹ نت‌بی‌اس‌دی ۵۹ پلتفرم سخت‌افزاری (شامل ۱۵ معماری پروسسور متفاوت) را پشتیبانی می‌کرد. سیستم‌عامل نت‌بی‌اس‌دی از همه توزیع‌های لینوکس پلتفرم‌های سخت‌افزاری بیشتری را پشتیبانی می‌کند. کرنل و فضای کاربری در این پلتفرم‌ها همه ساخته شده از منبع کد درختی متحد است که به وسیلهٔ CVS مدیریت می‌شود. در حال حاضر بر خلاف سایر سیستم‌عامل‌ها مانند مو سی لینوکس، نت‌بی‌اس‌دی برای اجرا به واحد مدیریت حافظه برای اجرا روی سخت‌افزار نیاز دارد.
سازگاری نت‌بی‌اس‌دی به دلیل استفاده از واسط‌های لایه انتزاع سخت‌افزار برای دسترسی سطح پایین مانند ورودی/خروجی باس (به انگلیسی:  bus) یا حافظه دسترسی مستفیم (به انگلیسی:  DMA) است. با استفاده از این لایه سازگاری، راه‌اندازهای دستگاه می‌توانند به اجزای «وابسته به ماشین» و «مستقل از ماشین» تقسیم شوند.
این به راه‌انداز اجازه می‌دهد تا به آسانی در پلتفرم‌های متفاوت استفاده شود بدون نیاز به اطلاع از جزئیات چگونگی دسترسی راه‌انداز به سخت‌افزار و کاهش مقدار کار مورد نیاز برای پورت (انتقال) به یک معماری جدید.
این ویژگی قادر می‌سازد تا به عنوان مثال، یک راه‌انداز برای یک کارت PCI خاص، چه کارت یک اسلات PCI در IA-32 یا alpha یا پاورپی‌سی یا اسپارک یا سایر معماری‌ها باشد، با باس PCI بدون مشکل کار کند. در مقایسه کد درایورهای دستگاه‌های لینوکس اغلب نیاز دارند که برای هر معماری جدید دوباره نوشته شود. در نتیجه در تلاش برای پورت‌کردن در نت‌بی‌اس‌دی و لینوکس، توسعه‌دهندگان نت‌بی‌اس‌دی زمان کمتری برای انتقال به سخت‌افزارهای جدید صرف می‌کنند.
این چندسکویی به توسعه سامانه‌های توکار کمک کرده‌است، به خصوص از نت‌بی‌اس‌دی ۱.۶، هنگامی که تمام زنجیره ابزار مترجم، اسمبلر، پیوندده و باقی ابزارها به‌طور کامل ترجمه دوگانه را پشتیبانی کردند.
در سال ۲۰۰۵ به عنوان شعار نت‌بی‌اس‌دی یعنی سازگاری و شایستگی برای برنامه‌های توکار، سیستم‌های تکنولوژیکی، یک فروشنده سخت‌افزار سامانه‌های توکار یک توستر آشپزخانه با سیستم‌عامل نت‌بی‌اس‌دی را طراحی و نمایش داد.
انتقال‌های تجاری به پلتفرم‌های توکار شامل AMD Geode LX800، پروسسور Freescale PowerQUICC، Marvell Orion، خانواده AMCC 405 از پروسسور پاورپی‌سی، سری XScale IOP و IXP اینتل که به وسیلهٔ شرکت Wasabi system حمایت و در دسترسی قرار دارد.

چارچوب نرم‌افزاری قابل حمل

چارچوب ترجمه دوگانه نت‌بی‌اس‌دی (همچنین به عنوان build.sh) شناخته می‌شود به یک سیستم کامل نت‌بی‌اس‌دی برای یک معماری اجازه می‌دهد تا در یک سیستم با معماری کاملاً متفاوت (معمولاً سریع‌تر یا با منابع سخت‌افزاری بیشتر) ساخته شود. از آنجا که چارچوب بیشتر سیستم‌های شبه یونیکس را پشتیبانی می‌کند می‌توان بی‌اس‌دی را حتی در یک سیستم عامل متفاوت ساخت.
چندین سامانه توکار که از نت‌بی‌اس‌دی استفاده می‌کنند به محیط‌های توسعه اضافه به جز زنجیره ابزار و میزبان نیاز ندارند.

پکیج سورس

نت‌بی‌اس‌دی از یک سامانه مدیریت بسته به نام پکیج سورس استفاده می‌کند. این سامانه در اصل از پورت‌های فری‌بی‌اس‌دی گرفته شده‌است. همانند خود سیستم‌عامل نت‌بی‌اس‌دی، پکیج سورس هم به صورت پورتابل طراحی شده‌است و در حال حاضر علاوه بر نت‌بی‌اس‌دی، می‌توان از پکیج سورس بر روی سیستم‌عامل‌های دیگری نظیر فری‌بی‌اس‌دی، اوپن‌بی‌اس‌دی، برخی از گونه‌های تجاری یونیکس نظیر سولاریس، مک اواس ده، ایریکس، و همچنین دیگر نسخه‌های متن‌باز یونیکس نظیر لینوکس و مینیکس ۳ هم استفاده کرد. همچنین سیستم‌عامل دراگون‌فلای بی‌اس‌دی هم از نسخه ۱٫۴ به بعد پکیج سورس را به عنوان مدیر بسته اصلی خود پذیرفت. قسمت اعظم پکیج سورس از یکسری Makefile و شل اسکریپت تشکیل شده‌است. فرایند نصب نرم‌افزارها به وسیلهٔ پکیج سورس از چندین مرحله تشکیل می‌شود که تمام این مراحل به صورت خودکار انجام می‌شوند. ابتدا نرم‌افزار از نظر وجود داشتن آسیب‌پذیری‌های امنیتی بررسی می‌شود و در صورت وجود داشتن چنین آسیب‌پذیری‌هایی یک هشدار نمایش داده می‌شود. سپس نرم‌افزار از طریق اینترنت دانلود می‌شود، در مرحله بعد فایل‌های دانلود شده بررسی می‌شوند تا مبادا اشتباهاً یک فایل مخرب دانلود شده باشد. پس از آن وابستگی‌های نرم‌افزاری تشخیص داده شده و نصب می‌شوند. همینطور وصله‌های مورد نیاز بر روی برنامه اعمال می‌شوند تا برنامه بدرستی بر روی نت‌بی‌اس‌دی اجرا شود. در مرحله بعد برنامه کامپایل شده و بر روی سیستم نصب می‌شود. در آخرین مرحله، تمام فایل‌هایی که توسط برنامه بر روی سیستم نصب می‌شود، در یک پایگاه داده ثبت می‌شوند و یک بسته باینری از نرم‌افزار مورد نظر ایجاد می‌شود.

چند پردازشی متقارن

نت‌بی‌اس‌دی از زمان انشار نسخه ۲ در سال ۲۰۰۴ از چند پردازشی متقارن پشتیبانی می‌کند، که در ابتدا با استفاده از روش قفل بزرگ (به انگلیسی:  Giant lock) به اجرا گذاشته شده بود.
در طول چرخه توسعه انشار نت‌بی‌اس‌دی۵، کار عمده برای بهبود پشتیبانی از چند پردازشی متقارن انجام شد.
اغلب زیر سیستم‌های هسته ویرایش شدند تا MP safe باشند (قابلیت اجرا به صورت چندریسمانی را داشته باشند) و از روش قفل‌گذاری fine-grained استفاده کنند.
در فوریه ۲۰۰۷ همگام‌سازی جدید به اجرا درآمد و زمان‌بندی فعالانه با مدل چندریسمانی ۱.۱ جایگزین شد.
یک زمان‌بند چندریسمانی M2 مقیاس پذیر اجرا شد، هرچند زمانبندهای قدیمی بی‌اس‌دی۴.۴ همچنان پیش‌فرض باقی می‌مانند اما برای سازگاری با چند پردازشی متقارن (به انگلیسی:  Symmetric multiprocessing) تعییر یافتند.
وقفه‌های چندریسمانی نرم‌افزار برای بهبود هماهنگی اجرا شد.
سیستم حافظه مجازی، اختصاص‌دهنده حافظه (به انگلیسی:  memory allocator) و trap handling به صورت MP safe شد.
چارچوب فایل‌سیستم، از جمله فایل سیستم مجازی، و فایل سیستم‌های اصلی برای MP safe بودن ویرایش شدند. از آوریل ۲۰۰۸ تنها زیرسیستم که به وسیلهٔ قفل بزرگ اجرا می‌شود پروتکل‌های شبکه و بسیاری از راه‌اندازی‌ها دستگاه‌ها است.

امنیت

نت‌بی‌اس‌دی ویژگی‌های مختلفی را در زمینه امنیت فراهم می‌کند. چارچوب مجوز دهی هسته (یا Kauth) یک زیرسیستم است که تمام درخواست‌های مجوز در داخل هسته را مدیریت می‌کند و به عنوان سیستم امنیتی در سطح سیستم استفاده می‌شود.
این به ماژول‌های خارجی اجازه می‌دهد به روند کسب اجازه متصل شوند. نت‌بی‌اس‌دی همچنین شامل ویژگی‌های کاهش اکسپلویت، ASLR و حفاظت از حافظه و Segvguard از پروژه PaX است. همچنین شامل افزونه Stack Smashing Protection برای جی‌سی‌سی است.تایید اجرایی یا (Veriexec) یک زیرسیستم یکپارچگی فایل در نت‌بی‌اس‌دی است که به کاربر اجازه می‌دهد برای فایل‌ها اثرانگشت (hash) تنظیم کند و اگر فایل‌ها با اثرانگشت مطابقت نداشت عمل خاصی را بروی فایل انجام دهد. برای مثال به اسکریپت‌های پرل تنها در صورتی اجازه اجرا بدهد که با اثر انگشتشان مطابقت داشته باشند .

سازگاری با سیستم عامل‌های دیگر

در سطح کد منبع، نت‌بی‌اس‌دی به‌طور کامل با (POSIX.1 (EEE 1003.1-1990 سازگار است و غالباً با (POSIX.2 (IEEE 1003.2-1992 موافق است.
نت‌بی‌اس‌دی همچنین در معماری‌ها پردازنده مناسب، سیستم‌کال باینری سازگار با چندین سیستم عامل مشتق شده از یونیکس و شبه یونیکس، شامل لینوکس، دیگر انواع بی‌اس‌دی مانند فری‌بی‌اس‌دی، داروین اپل، سولاریس و sunos 4 دارد. این به کاربران نت‌بی‌اس‌دی اجازه می‌دهد تا برنامه‌های زیادی که تنها به صورت باینری و برای دیگر سیستم‌عامل‌ها منتشر شده را (معمولاً بدون از دست دادن کارایی زیاد) اجرا کنند.
همچنین انواع فایل سیستم‌های دیگر مانند جدول تخصیص فایل یا فت، ان‌تی‌اف‌اس، فایل سیستم لینوکس ext2fs، فایل سیستم مک او اس اپل UFS و RISC OS FileCore/ADFS و AmigaOS Fast File System و فایل سیستم EFS سیستم عامل IRIX و بسیاری فایل سیستم‌های دیگر با استفاده از FUSE در نت‌بی‌اس‌دی پشتیبانی می‌شود.

مجوز

کدهای منبع نت‌بی‌اس‌دی تحت نسخه‌های مختلف اجازه‌نامه‌های بی‌اس‌دی منتشر می‌شوند که یک مجوز نرم‌افزار آزاد است. در ۲۰ ژوئن ۲۰۰۸، بنیاد نت‌بی‌اس‌دی اعلام کرد که کدهای منبع نت‌بی‌اس‌دی تا جای ممکن به مجوز دوماده‌ای بی‌اس‌دی تغییر پروانه داده‌اند و این پروانه، از این پس پروانه اصلی مورد استفاده توسط پروژه نت‌بی‌اس‌دی خواهد بود. همچنین کلیه مشارکت‌کنندگان پروژه را هم تشویق به استفاده از این پروانه شده‌اند. همچنین کدهایی تحت مجوزهای دیگر از جمله جی‌پی‌ال هم در نت‌بی‌اس‌دی وجود دارد. این کدها در شاخه‌ای مجزا نگه‌داری می‌شوند تا جایگزین کردن آن‌ها با مجوز دیگری، آسان باشد.

نام و نشان

نام NetBSD از تلفیق Net و BSD گرفته شده‌است. Net به این خاطر که مشارکت‌کنندگان و توسعه‌دهندگان پروژه نت‌بی‌اس‌دی، از کانال‌های ارتباطی مبتنی بر اینترنت برای ارتباط با هم استفاده می‌کنند و بسیاری از آن‌ها هرگز یکدیگر را به صورت رودررو ملاقات نکرده‌اند و BSD هم به این علت که نت‌بی‌اس‌دی از سیستم‌عامل‌های 386BSD و 4.4BSD مشتق شده‌است.
لوگوی قدیمی پروژه نت‌بی‌اس‌دی، تعدادی غول بی‌اس‌دی را به تصویر می‌کشید که بر روی تکه‌های قراضه لوازم رایانه‌ای ایستاده بودند و در حال برافراشتن پرچمی بودند که بر روی آن نشان NetBSD حک شده بود و به نیزه سه‌شاخه غول بی‌اس‌دی شباهت داشت. این نشان در سال ۱۹۹۴ توسط شان مولر طراحی شده بود. این نشان، صحنه برافراشتن پرچم در ایوجیما را در ذهن تداعی می‌کرد. بعدها پروژه نت‌بی‌اس‌دی در صدد جایگزین کردن این نشان برآمد و مسابقه‌ای را برای طراحی یک نشان جدید تدارک دید و مبلغ ۱۰۰ دلار آمریکا را هم برای برنده آن در نظر گرفتند؛ چرا که آن‌ها معتقد بودند نشان فعلی، بیش از حد پیچیده بود، طراحی مجدد آن سخت بود و از نظر فرهنگی و دینی مشکل‌ساز بود. در ۳۰ اکتبر ۲۰۰۴ (میلادی)، نشان جدید را از میان ۴۰۰ نشان که توسط ۲۳۸ هنرمند طراحی شده بودند، انتخاب کرد. برنده مسابقه، گرنت بیست نام داشت که نشان جدید را با الهام‌گیری از نشان قدیمی طراحی کرده بود.
بنیاد نت‌بی‌اس‌دی یک نهاد حقوقی غیر-انتفاعی است که کمک‌های مالی اهدایی به پروژه، سخت‌افزارها و سرویس‌ها را اداره می‌کند و همینطور مالک نشان‌های تجاری و حق تکثیر پروژه است. این سازمان یک هیئت مدیره دارد که با رای‌گیری توسعه‌دهندگان انتخاب می‌شوند.

نمونه‌هایی از استفاده

طراحی تمیز نت‌بی‌اس‌دی، کارایی بالا، مقیاس‌پذیری و پشتیبانی از معماری‌های متفاوت، دلیل خوبی برای استفاده از این سیستم عامل در سامانه‌های توکار و سرورها بخصوص برنامه‌های شبکه شده‌است.
نت‌بی‌اس‌دی در پروژه SAMS-II ناسا در اندازه‌گیری میکروگرانشی محیط در ایستگاه فضایی بین‌المللی استفاده شده‌است؛ و برای تحقیقات TCP برای استفاده در شبکه‌های ماهواره‌ای نیز استفاده شده‌است.
شبکه شرکت Force10 از نت‌بی‌اس‌دی به عنوان سیستم‌عامل زمینه استفاده می‌کند که از سیستم‌عامل FTOS (سیستم‌عامل Force10) قدرت می‌گیرد و در سوئیچ‌ها و روترهای با مقیاس‌پذیری بالا مورد استفاده قرار می‌گیرد. Force10 در سال ۲۰۰۷ برای تحقیق بیشتر و کمک به جامعه متن‌باز به بنیاد نت‌بی‌اس‌دی کمک مالی کرد.
شرکت Wasabi Systems یک محصول تجاری بر پایه نت‌بی‌س‌دی با ویژگی‌های اختصاصی و الحاقات فراهم کرده‌است که تمرکز ساخت آن برای سامانه توکار، کارسازها و برنامه‌های ذخیره‌سازی است.
در سال ۲۰۰۴ SUNET از نت‌بی‌اس‌دی برای تنظیم کردن رکورد سرعت اینترنت۲ استفاده کرده‌است. نت‌بی‌اس‌دی به دلیل مقیاس‌پذیری کد TCP مورد استفاده قرار گرفت.
نت‌بی‌اس‌دی همچنینی در روتر بی‌سیم AirPort Extreme اپل و بی‌سیم Time Capsule اپل به جای مک اواس ده استفاده شده‌است.
سیستم‌عامل تلفن هوشمند T-Mobile Sidekick LX 2009 بر پایه نت‌بی‌اس‌دی است.
شرکت اپل در سیستم‌عامل داروین خود از برخی از قسمت‌های نت‌بی‌اس‌دی از جمله برنامه‌های فضای کاربری آن استفاده کرده‌است. حداقل یکی از توسعه‌دهندگان اپل به مخزن کد منبع نت‌بی‌اس‌دی دسترسی دارد و تغییرات مفید را به پروژه نت‌بی‌اس‌دی برمی‌گرداند.
در سیستم‌عامل QNX که توسط شرکت QNX Software Systems Ltd توسعه داده می‌شود، قسمت‌هایی از نت‌بی‌اس‌دی بکار رفته‌است.
پشتیبانی از زبان اسکریپت‌نویسی لوا به هسته نت‌بی‌اس‌دی اضافه شده‌است؛ بنابراین این امکان وجود دارد که با استفاده از این زبان، با قسمت‌های مختلف هسته نت‌بی‌اس‌دی تعامل برقرار کرد و حتی به گسترش قابلیت‌های هسته پرداخت.