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

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

NodeOS سیستم‌عاملی است که کاملاً با جاوااسکریپت ساخته شده و با پکیج منیجر npm مدیریت می‌شود. این سیستم‌عامل بخشی از زیرساخت‌های مورد نیاز را فراهم کرده و بقیه را به 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

توسعهٔ هستهٔ این سیستم‌عامل در لایه‌های مختلفی انجام شده است که به نظر می‌رسد هدف از انجام این کار، ایجاد تفاوت‌هایی برای سازگاری بهتر در پلتفرم‌های مختلف باشد؛ به هر حال، ساختار کلی نود اواس به صورت زیر است:
- کِرنِل لینوکس اختصاصی به همراه 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 را در روت هر کدام از فولدرها اجرا خواهد کرد. در صورت یافتن کاربر روت، این کاربر به عنوان اولین کاربر تلقی شده و دسترسی به همهٔ دایرکتوری‌های هوم خواهد داشت اما به خاطر طراحی این سیستم‌عامل، امکان اینکه دسترسی‌ها در حالی که سیستم بوت شده است تغییر کند، وجود نخواهد داشت.

ایمیج‌های پیش ساختهٔ NodeOS
اگر قصد دارید تا از ایمیج‌های از پیش ایجاد شده که به طور خودکار بعد از هر کامیت در برنچ اصلی تولید شده‌اند استفاده کنید، برای اجرای آنها باید QEmu روی سیستم‌تان نصب باشد. این ISO می‌تواند روی سی‌دی یا فلش ریخته شود ولی rootfs را فقط به صورت Read-only در دسترس قرار می‌دهد و تغییراتی که در حافظه انجام می‌شوند بعد از ریبوت از بین خواهند رفت (بنابراین اگر می‌خواهید تغییرات را ثبت نمایید، باید خودتان یک پارتیشن usersfs به صورت Read-Write ایجاد کنید).

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

در پایان، لازم به ذکر است که NodeOS تحت لیسانس MIT عرضه شده و به صورت اپن‌سورس در ریپازیتوری نود او‌اس گیت‌هاب در دسترس است.



مرتضی صمدی