NodeOS: سیستم عاملی کم حجم بر پایه ی Node.js

NodeOS سیستم عاملی است که کاملا با جاوا اسکریپت ساخته شده و با پکیج منیجر npm مدیریت می شود. هر پکیجی در npm یک پکیج NodeOS محسوب می شود که طبق آخرین شمارش تعداد آنها 301660 بوده است. NodeOS بخشی از زیرساخت های مورد نیاز را فراهم کرده و بقیه را به npm سپرده است و از آنجا که هر کسی می تواند در توسعه ی پکیج های npm مشارکت کند، بنابراین می تواند یک پکیج اختصاصی NodeOS توسعه داده و با سایر کاربران به اشتراک بگذارد. برای آشنایی بیشتر با این سیستم عامل و همچینن آموزش نصب آن، با سکان آکادمی همراه باشید.

این پروژه نهمین جایزه قهرمان ملی نرم افزار آزاد اسپانیا را در رده سیستمی از آن خود کرد و لوح تقدیر دوره دهم را نیز دریافت نمود. همچنین به عنوان تز Jesús Leganes Combarro (یکی از توسعه دهندگان پروژه) ارائه شده و با نمره 10/10 قبول شده است که این افتخارات نشان از اثربخشی این سیستم عامل روی نظرات منتقدین دارد.

معرفی
NodeOS سیستم عاملی است مبتنی بر Node.js است که روی کرنل لینوکس ساخته شده است. پروژه NodeOS با هدف اجرا در موارد زیر ایجاد شده که در حال حاضر بعضی از آنها تحقق یافته اند:

- سخت افزار واقعی: مانند دسکتاپ، لپ تاپ و سیستم هایی همچون Raspberry Pi
- خدمات کلاود: مانند Joyent، Amazon، Rackspace
- ماشین مجازی: مانند QEmu، VirtualBox، VMWare و KVM
- خدمات Paas (پلتفرم به عنوان سرویس): مانند Heroku یا Manta
- خدمات کانتینری: مانند Docker و Vagga

توسعه هسته ی این سیستم عامل در لایه های مختلفی انجام شده است که به نظر می رسد هدف از انجام این کار ایجاد تفاوت هایی برای سازگاری بهتر در پلتفرم های مختلف باشد؛ به هر حال، ساختار کلی نود او اس به این صورت است:

- کرنل لینوکس اختصاصی barebone به همراه initramfs که به یک Node.js REPL بوت می شود.
- محیط initramfs initram برای قرار دادن پارتیشن یوزر و بوت کردن سیستم
- ایمیج پارتیشن rootfs به صورت Read-only به عنوان هاست کرنل لینوکس و فایل های initramfs
- محیط چند کاربره usersfs با همان عملکرد سیستم عامل های مرسوم

پروسه بوت
همه لایه ها بوتیبل اند و barebone ها را به یک Node.js REPL خالی به اسم PID 1 ارجاع می دهند و این در حالی است که initramfs (و به طور کلی rootfs) کدهای NodeOS را اجرا می کنند تا پارتیشن usersfs را نصب نمایند. در هر صورت، از یک initramfs به عنوان فایل سیستم روت استفاده شده و تمامی تغییرات در صورت خاموش شدن سیستم از بین می روند.

اگر پارتیشن کاربری هنگام بوت تنظیم شده باشد، mount خواهد شد و سیستم هر کدام از فولدرهایش را به عنوان فولدر home برای یک کاربر معتبر ملاحظه می کند و یک فایل init را در روت هر کدام از فولدرها اجرا خواهد کرد. در صورت یافتن کاربر روت، این کاربر به عنوان اولین کاربر ملاحظه شده و دسترسی به همه ی دایرکتوری های home را خواهد داشت اما به خاطر طراحی، امکان این که دسترسی ها در حالی که سیستم بوت شده است تغییر کند، وجود نخواهد داشت.

کاستومایز کردن سیستم عامل
اگر می خواهید NodeOS را تا حدی به عنوان یک محصول سرور تغییر دهید، احتمالا ایمیج usersfs را خواهید ساخت چرا که هر کاربر از دیگران ایزوله است، اما می توانید تمامی لایه ها را ویرایش کنید. به عنوان مثال، می توانید initramfs را اصلاح کنید تا کاربران لاگین کنند و فولدر home شان را از یک سرویس کلاود mount نمایند یا سیستمی بدون سرویس های سراسری بسازند (بدون کاربر روت) یا همچنین یک نمونه NodeOS کامل را تنها به یک اپلیکیشن Node.js اختصاص دهند.

ایمیج های پیش ساخته
اگر قصد دارید تا از ایمیج های از پیش ایجاد شده که به طور خودکار بعد از هر commit در شاخه اصلی تولید شده اند استفاده کنید، برای اجرای آن ها باید QEmu روی سیستم تان نصب باشد.

این ISO می تواند روی سی دی یا فلش ریخته شود ولی rootfs را فقط به صورت Read-only در دسترس قرار می دهد و تغییراتی که در حافظه انجام می شوند بعد از ریبوت از بین خواهند رفت، بنابراین اگر می خواهید تغییرات را ثبت نمایید باید خودتان یک پارتیشن usersfs به صورت Read-Write ایجاد کنید. از طرف دیگر، اگر می خواهید آن را روی یک فلش بریزید، پیشنهاد می شود از دستور bin/install USB استفاده کنید که باعث ساخت یک پارتیشن usersfs به صورت Read-Write در فضای موجود می شود و تغییراتتان آنجا ذخیره خواهند شد.

ساخت NodeOS در پنج مرحله

دانلود سورس کد پروژه:

git clone git@github.com:NodeOS/NodeOS.git
cd NodeOS

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

sudo bin/install-dependencies

ساخت NodeOS:

npm install

به طور پیش فرض تعدادی فایل تولید می شود که می توان با QEmu از آنها استفاده کرد، تا برای معماری مورد نظرتان کامپایل شود. می توانید فرایند بیلد را با ارسال چند متغیر پیکربندی کنید. برای مثال، برای ساخت بیلد ۳۲ بیتی، از کد PLATFORM=qemu_32 npm install استفاده نمایید. صبر کنید تا عملیات انجام شود و در نهایت ایمیج کامپایل شده NodeOS را اجرا کنید:

npm start

در این مرحله، به طور خودکار معماری پردازنده ای که برای استفاده روی QEmu لازم است شناسایی و اجرا خواهد شد. اگر در حین عملیات بیلد NodeOS به اروری برخورد کردید، به ویکی مشکلات احتمالی نصب نود او اس نگاهی بیاندازید.

نظر شما چیست؟ آیا نود او اس می تواند سهم بازار خوبی را به خود اختصاص دهد یا در حد پروژه ی تفریحی باقی می ماند. نظرات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.

NodeOS

0


مرتضی صمدی

فارغ‌التحصیل رشتهٔ نرم‌افزارم و موفق شدم تا‌به‌حال چندتا پروژهٔ نصفه‌و‌نیمه رو ناموفق رها کنم! جستجوگر خوبی هستم، طوری که تا‌به‌حال مشخصات بیشتر سخت‌افزارهای جدید مثلا اسمارتفون‌ها، کنسول‌ها و لپ‌تاپ‌ها رو میدونم؛ اطلاعات سیستم‌عامل‌های جدید مثل لینوکس، ویندوز و مک رو می‌خونم و امتحان می‌کنم، البته اگه بتونم. بازی‌های جدید رو میشناسم ولی بازی نمیکنم (چراش رو نمیدونم) و عاشق اینم که یک بار اتومبیل‌های قدیمی مثل فورد ماستنگ یا کامارو اس‌اس رو برونم.






از طریق این فرم، می توانید بدون ثبت نام نظر دهید و یا اگر قبلا ثبت نام کرده اید، با ورود ناحیه ی کاربری می توانید علاوه بر ثبت نظر، به مدیریت نظرات خود نیز بپردازید.
(فیلد اجباری)
(فیلد اجباری)
(فیلد اجباری)
(فیلد اجباری)