» فناوری اطلاعات » آیا سیستم عامل های آینده تغییر ناپذیرند؟
012
فناوری اطلاعات

آیا سیستم عامل های آینده تغییر ناپذیرند؟

شهریور 19, 1403 1۰18

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

با این حال، در زمینه فنی، این ویژگی ها به یک مزیت تبدیل می شود و به معنای قابل اعتماد بودن و تکرارپذیری یک سیستم است.

مانند بسیاری از مفاهیم و روندهای فناوری ، چیز جدیدی نیست. NixOS بیش از بیست سال است که وجود داشته است، و ChromeOS احتمالاً پرکاربردترین سیستم عامل غیرقابل تغییر (OS) است.

با این حال، پذیرش گسترده کانتینرها با Docker بیش از ۱۰ سال پیش، این مفهوم را مورد توجه گسترده تری قرار داد.

به طور معمول، شما یک کانتینر را در یک فایل متنی تعریف می‌کنید، و یک Container Runtime آن تعریف را به سرویس‌های در حال اجرا تبدیل می‌کند. این بدان معناست که بسته کردن، ایجاد مجدد و راه اندازی مجدد کانتینر بر اساس آن تعریف نسبتاً آسان است.

مهم نیست که چند بار آن را بازسازی و راه اندازی مجدد کنید، می توانید به یکسان بودن آن اعتماد کنید – تغییرناپذیر است.

تیم های توسعه اکنون از کانتینرها به طور گسترده استفاده می کنند که توسط ابزارهایی مانند Kubernetes مدیریت و هماهنگ شده اند . کانتینرها مفهوم تغییر ناپذیری را تا حدودی پیش می برند.

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

این احتمالاً برای کسانی که به طور منظم از Windows، macOS یا اکثر توزیع‌های لینوکس استفاده می‌کنند، شدید به نظر می‌رسد. اما از دستگاه‌ها و سرورها گرفته تا ماشین‌های رومیزی که من و شما روزانه استفاده می‌کنیم، سیستم‌عامل‌های غیرقابل تغییر اکنون وارد یک واقعیت عملی شده‌اند.

چرا الان این اتفاق می افتد؟ همانطور که گابریل اگیار نوری، مدیر محصول Ubuntu Core Canonical می گوید، این به دلیل رشد قوانین امنیت سایبری از سوی دولت های سراسر جهان است.

این مقررات به طور کلی به سازندگان دستگاه و توسعه دهندگان می گوید که همه چیز تغییر خواهد کرد. نوری می‌گوید ما باید سازگارتر باشیم: “ما باید مطمئن باشیم که هر عنصر در محصولات ما دارای یک برنامه امنیتی است که شامل نگهداری امنیتی است.”

اتحادیه اروپا مقررات امنیت سایبری را در سال ۲۰۱۹ معرفی کرد و نوری می‌افزاید که ضرب‌الاجل این قانون برای انطباق، توجه زیادی را به همراه دارد.

«مقررات امنیت سایبری اتحادیه اروپا در حال گسترش است و در سال ۲۰۲۷، ما مجبور به تبعیت از آن خواهیم بود. بنابراین در حال حاضر، ما در دوره ای هستیم که باید دستگاه‌هایی را که راه‌اندازی می‌کنیم مطابق با آن بسازیم و ایده تغییر ناپذیری در آن نقش دارد.»

Nix قدیمی ترین سیستم عامل تغییرناپذیر در حال فعالیت است. مردم اغلب از Nix و NixOS به جای یکدیگر استفاده می کنند، اما آنها متفاوت هستند.

Nix یک مدیر بسته است که برای ساخت و نصب وابستگی های کوچک مانند OpenSSL به وابستگی های بزرگتر مانند فایرفاکس یا زنجیره ابزار زبان برنامه نویسی استفاده می شود.

همانطور که والنتین گاگارین، بخشی از تیم نگهدارنده Nix می‌گوید: « Nix برای بسیاری از مردم پیچیده است. اما در اصل، Nix به طرز شگفت آوری ساده است.»

تقریباً هر بسته ای که نصب می کنیدمجزا نیست و از وابستگی/ dependency استفاده می کند.

برای رسیدگی به این موضوع و تغییر ناپذیر ماندن، هنگامی که یک بسته را با Nix می‌سازید و نصب می‌کنید، یک هش رمزنگاری از هر چیزی که برای نصب آن وابستگی در زمان نصب استفاده می‌شود، حفظ می‌کند.

اگر بعداً وابستگی را دوباره نصب کنید، Nix یک هش جدید ایجاد می‌کند، به این معنی که در صورت وجود مشکل می‌توانید به نسخه کاربردی برگردید. گاگارین می‌گوید:

«Nix روابط بین فایل‌ها را در یک سیستم فایل که بخشی از یک برنامه باینری می‌شوند، سیم‌کشی می‌کند و آنها را به روشی تغییرناپذیر ثبت می‌کند. هر زمان که می‌خواهید این فایل‌ها را به جای دیگری منتقل کنید، با کشیدن یک طرف آن به جای اینکه از هم بپاشد، کل آن را به شما می‌دهد.»

NixOS این مورد را فراتر می برد. شما می توانید کل سیستم عامل را از بسته های موجود در مدیر بسته Nix و پیکربندی آن بسته ها تعریف کنید. پیکربندی به بسته‌هایی که نصب می‌کنید بستگی دارد، اما می‌تواند شامل دستگاه‌های بوت، پیام‌های ورود به سیستم، حساب‌های کاربری و موارد دیگر باشد.

همچنین، Nix هر فرآیندی را که این فایل‌ها را در یک سندباکس ایزوله ایجاد می‌کند، اجرا می‌کند و امنیت را بیشتر می‌کند.

برای هر کسی که تا به حال از مدیریت دستگاه تلفن همراه (MDM) یا چیزی شبیه به آن برای پخش تصاویر سیستمی ثابت در سراسر ماشین‌ها استفاده کرده است، این ممکن است انقلابی به نظر نرسد، اما NixOS نیازی به ارسال فایل‌های تصویری بزرگ چند گیگابایتی در سراسر شبکه ندارد. این فقط یک فایل متنی است که در زمان عرضه ساخته شده است.

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

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

Nix این ایده ها را برای مدت طولانی علیرغم کاربرد مدرن آنها توسعه داده است. بیش از ۲۰ سال است که وجود دارد و از Docker و Git قدیمی تر است.

همانطور که گاگارین اضافه می کند، حتی اولین بار هم نبود. Nix همچنین اولین تلاش برای تغییر بسته‌بندی لینوکس (Linux) نبود. Nix پیش‌سازهایی داشت که اساساً همین کار را می‌کردند اما برای مخاطبان عمومی لینوکس پیچیده‌تر و کمتر در دسترس بودند.

«و من فکر می‌کنم چیزی که Nix را متمایز کرده، سادگی مفهومی آن است و برخلاف بسیاری دیگر، هنوز هم وجود دارد.»

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

سه تا از جالب‌ترین محصولات تجاری مبتنی بر NixOS عبارتند از Determinate Systems ، Flox و DevBox .

همه آنها در مراحل اولیه هستند، اما آنها و ابزارهایی مانند آنها تشخیص می دهند که شاید دنیای “ساده تر” توسعه با استفاده از زمان های اجرا کانتینری مانند Docker به سادگی وعده داده شده نبوده و جایگزینی ارائه می دهد.

وقتی خیلی ها به لینوکس فکر می کنند، Ubuntu از Canonical را به یاد می آورند . به دست آوردن اعداد واقع بینانه دشوار است، زیرا اکثر منابع استفاده از دسکتاپ را گزارش می دهند، در حالی که، در واقع، مراکز داده و سرورهای آن جایی هستند که لینوکس برتری دارد.

پیشنهاد تغییرناپذیر، Ubuntu Core ، نه کاربران دسکتاپ، بلکه Edge Device را هدف قرار داده است. اینها دستگاه های محاسباتی کوچکی هستند که اکنون در همه جا، از ماشین ها گرفته تا ربات ها تا شهرهای هوشمند یافت می شوند.

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

در عوض، Ubuntu Core به شما امکان می‌دهد بر روی اجزای کاربردی منحصربه‌فرد برای مورد استفاده خود تمرکز کنید و اطمینان داشته باشید که بدون نظر شما تغییر نخواهند کرد.

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

فرمت Snap Canonical و Snap Store شبیه به مدیر بسته Nix هستند. نصب یک وابستگی از Snap Store شامل تمام وابستگی‌ها در زمان نصب است، با محافظت‌های اضافی که از سیستم عامل میزبان در برابر برنامه «snapped» محافظت می‌کند.

برای هر کاربر macOS، این ممکن است بسیار شبیه نصب از اپ استور باشد، اما از آنجایی که کاربران لینوکس بیشتر به ساختن نرم‌افزار در حین نصب عادت دارند، این رویکرد جدیدتری است و جامعه لینوکس را از هم جدا می‌کند.

Ubuntu Core متفاوت از NixOS کار می کند. به جای پیکربندی با یک فایل متنی، از یک سری مدل برای تعریف اجزای اصلی یک سیستم عامل، مانند معماری، پایه سیستم عامل، نسخه های Snap برای نصب و سطوح امنیتی استفادهمی کند.

با انجام این کار، می‌توانید یک تصویر را روی ماشین‌ها منتشر، بسازید و نصب کنید. اگر از ابزار Canonical’s Multipass استفاده می‌کنید ، می‌توانید تصاویر را به صورت محلی در یک ماشین مجازی ایجاد کنید، قبل از انتشار آن‌ها، آنها را آزمایش کنید و بسازید و تصاویر از پیش ساخته شده را مرور کنید.

در حالی که دسکتاپ Ubuntu غیر قابل تغییر باقی می ماند، اما Snap Store را نیز برای درجه ای از تغییر ناپذیری دارد.

ابزارهای توسعه‌دهنده از Toolbx استفاده می‌کنند ، که به نوبه خود از کانتینرها استفاده می‌کند تا به توسعه‌دهندگان اجازه دهد تا یک سری وابستگی‌های عملکردی در هر پروژه داشته باشند بدون اینکه تأثیری بر سیستم عامل پایه داشته باشند.

با این حال، هیچ فایل پیکربندی وجود ندارد که همه چیز را مانند NixOS و Ubuntu Core به هم متصل کند.

سیستم عامل Vanilla نیز مشابه است. کل سیستم عامل تغییر ناپذیر نیست، اما بخش های کلیدی آن تغییر ناپذیر است.

رویکرد خاص خود را به مدیر بسته به شکل Apx دارد که بسته ها را در یک کانتینر نصب می کند، همه چیز را از سیستم عامل میزبان جدا می کند و دوباره جابجایی بین نسخه ها را آسان می کند.

علاوه بر نصب های جداگانه، می توانید محیط های توسعه دهنده را بر اساس سایر توزیع های لینوکس با Apx نیز تعریف کنید، که سیستم عامل Vanilla را به عنوان نوعی هاب لینوکس قرار می دهد.

همچنین به‌روزرسانی‌های سیستم را متفاوت مدیریت می‌کند و پارتیشن‌های موقتی (دوباره بر اساس تصاویر کانتینر) برای به‌روزرسانی ایجاد می‌کند که تنها پس از راه‌اندازی مجدد موفقیت‌آمیز به آن سوئیچ می‌کند (نسخه‌های اخیر macOS کاری مشابه انجام می‌دهند).

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

هر دو سیستم عامل Fedora Silverblue و Vanilla OS به افراط‌های غیرقابل تغییری که NixOS انجام می‌دهد نمی‌رسند، اما مهم‌ترین و آسیب‌پذیرترین بخش‌ها را تغییرناپذیر می‌کنند.

اعتماد یک جنبه اصلی در سراسر این بحث است. نقطه فروش سیستم عامل های تغییرناپذیر این است که قابل اعتماد و ایمن هستند. اما چرا باید به آنها اعتماد کرد؟

همانطور که نوری می گوید، «تغییر ناپذیری لزوماً به معنای امنیت نیست».

در اصل، اقدامات پیشگیرانه این است که به شما امکان می دهند در صورت وجود مشکل تست کنید و به عقب برگردید، و معمولاً، سرویس ها در جعبه های ایزوله (چه کانتینر یا چیز دیگری) اجرا می شوند، به این معنی که هر سرویس سرکش می تواند کمترین تأثیر را بر هر چیز دیگری داشته باشد. .

برای پیشنهادات تجاری مانند Ubuntu Core یا NixOS با پشتیبانی تجاری، نگهبانان معمولاً پایگاه‌های داده‌های Common Vulnerabilities and Exposures (CVE) را مشاهده می‌کنند تا مطمئن شوند که نسخه‌ها بدون آسیب‌پذیری هستند.

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

همانطور که در طول این مقاله به آن پرداختیم، حتی اگر نمی‌خواهید با یک سیستم عامل کاملاً تغییرناپذیر مانند NixOS و همه هشدارهای همراه با آن کار کنید، افزایش نیاز به امنیت در دستگاه‌های مصرف‌کننده مدرن به این معنی است که به هر حال بسیاری از سیستم عامل‌هایی که استفاده می‌کنید تا حدی غیرقابل تغییر هستند، مخصوصاً وقتی نوبت به نصب به‌روزرسانی‌ها می‌رسد.

در حالی که جوامع پیرامون سیستم عامل های تغییرناپذیر ذکر شده در این مقاله سخت تلاش کرده اند تا سیستم هایی را تا حد امکان در دسترس و قابل استفاده بسازند، یک سیستم عامل کاملاً تغییرناپذیر هنوز پیچیده تر از سیستم عامل معمولی است.

ما مطمئن نیستیم که سیستم عامل های آینده کاملا تغییرناپذیر هستند، اما برخی از مفاهیم و اصول آنها قطعاً اینگونه هستند. آنها یک مثال کلاسیک از این هستند که چگونه، گاهی اوقات، ممکن است ۲۰ سال یا بیشتر طول بکشد تا یک مفهوم فنی زمان خود را پیدا کند.

به این نوشته امتیاز بدهید!

گروه نویسندگان

دیدگاهتان را بنویسید

  • ×