واحدة من أكثر التقنيات صعودا في السنين الأخيرة في عالم توزيعات لينكس هي ImmutableOS وربما صادفت هذا المصطلح لو كنت تتابع مستجدات لينكس. لكن ماذا يعني؟ وكيف يمكن استخدام نظام لا تتغير ملفاته مع أننا نحتاج إلى تثبيت البرامج وحفظ الملفات وتحديث النظام؟
نحاول فهم أساس هذه التقنية من منظور تقني ومن منظور المستخدم العادي، لأنك إذا احتجت لاستخدام توزيعة كـ Fedora Silverblue على سبيل المثال لا الحصر سيكون فهمك لهذا النظام أوضح كصورة عامة.
الفكرة من منظور المستخدم العادي #
بافتراض أن أحد توزيعات الـ Immutable تشتغل على جهازه فالفكرة هنا أن أساس النظام يكون للقراءة فقط ومحمي، عند الحاجة لتحديث النظام فبطريقة ما سيتم التأكد من أن التحديث سينزل ككتلة واحدة، هذه العملية مُختصر خطواتها كما يلي:
- التأكد من أن التحديث كامل بدون ملفات ناقصة.
- التأكد من أن التحديث لا يتعارض مع ملفات النظام الأساسية.
- إذا كان التحديث سليم، النظام يجهزه في الخلفية وبمجرد أن يقوم المستخدم بإعادة تشغيل يتم التبديل للنسخة الجديدة.
هنا أنت كمستخدم عادي يُهمك أمرين، الأول هو استقرار النظام والثاني سهولة استرجاع النظام، فإذا كان التحديث به مشكلة فبسهولة يمكن العودة إلى إصدار سابق (Rollback) بضغطة زر.
فبغض النظر عن التفاصيل التقنية لمفهوم الـ Immutable أنت كمستخدم أولويتك الأمرين المذكورين سابقا.
مصطلحات تساعدك على فهم التقنية #
سنستخدم Fedora Silverblue مثالًا رئيسيًا في الشرح. أما Ubuntu Core وNixOS فتشتركان معها في بعض الأهداف، لكنهما تختلفان في التصميم والأدوات، فلا تنطبق جميع التفاصيل التالية عليهما بالطريقة نفسها.
النظام الأساسي (Base OS) #
هو الجزء الذي يضم مكونات تشغيل النظام، مثل النواة والمكتبات والأدوات الأساسية. في الأنظمة المبنية على rpm-ostree يكون المسار /usr للقراءة فقط أثناء الاستخدام المعتاد، بينما تبقى مسارات مثل /etc و/var قابلة للكتابة.
التحديثات الذرية (Atomic Updates) #
هي العملية التي تضمن أن التحديث يُطبق ككتلة واحدة، إما ينجح بالكامل ويُنفذ أو يفشل بالكامل ويُعاد كل شيء كما كان دون ترك النظام في حالة غير مستقرة.
حُزم التطبيقات (Flatpak وSnap) #
تساعد هذه الصيغ على توزيع التطبيقات مع اعتمادياتها، وتوفر آليات للعزل والصلاحيات. يشيع استخدام Flatpak لتطبيقات سطح المكتب في Silverblue، بينما يعتمد Ubuntu Core على حُزم Snap حتى في توزيع مكونات النظام نفسه.
إذا أردت التعرف أكثر على فلاتباك، يمكنك قراءة مقالنا عن تحزيم فلاتباك وطريقة تثبيته على Ubuntu.
الحاويات (Toolbx وContainers) #
توفر أدوات مثل Toolbx بيئة يمكنك فيها تثبيت أدوات التطوير والعمل عليها بعيدا عن حُزم النظام الأساسي لكن حاويات التطوير قد تشارك مجلدك الشخصي وموارد أخرى مع النظام لذلك لا ينبغي اعتبارها حاجز أمني لتشغيل برامج غير موثوقة.
إدارة نُسخ النظام (OSTree وrpm-ostree) #
إن جاز التعبير يُمكن أن نشبهه بـ Git لكن لنظام التشغيل. هو الأداة التي تحفظ نُسخ النظام وتسمح بالتنقل بينها (Rollback).
هذه أدوات تستخدمها أنظمة مثل Silverblue، وليست مكونات مشتركة بين كل التوزيعات المذكورة في المقال.
كيف تعمل عملية تحديث النظام؟ #
في التوزيعات التقليدية، تُثبت الحزم وتُحدث عادةً بتعديل الملفات الموجودة في النظام مباشرة. أما في مثال Silverblue، فيُجهز التحديث بصورة منفصلة عن النسخة التي تعمل حاليًا، ثم تُستخدم النسخة الجديدة عند الإقلاع التالي.
يمكن فهم العملية من خلال مرحلتين:
- التجهيز (Staging): تُحمل المكونات المطلوبة وتُجهز نسخة جديدة، بينما تواصل استخدام النظام الحالي.
- إعادة التشغيل والتبديل (Reboot & Switch): تُستخدم النسخة المجهزة عند الإقلاع التالي.
إذا ظهرت مشكلة بعد التحديث، يمكنك العودة إلى النسخة السابقة المتاحة، سواء من قائمة الإقلاع أو باستخدام أداة إدارة النظام. وتعتمد إمكانية الرجوع على بقاء تلك النسخة وعدم حذفها أثناء التنظيف.
ما الفرق بين Rollback واختيار نواة أقدم؟ #
تحتفظ توزيعات تقليدية كثيرة بأكثر من إصدار من نواة لينكس، وهو أمر مفيد إذا ظهرت مشكلة في النواة الجديدة. لكن ماذا لو كان سبب المشكلة تحديث مكتبة أساسية مثل glibc أو أحد مكونات واجهة سطح المكتب؟
في هذه الحالة، اختيار نواة أقدم وحده قد لا يحل المشكلة؛ لأن بقية الحزم تظل بالإصدارات المثبتة حاليًا.
أما الرجوع إلى نسخة سابقة من النظام في Silverblue فيشمل مكونات النسخة الأساسية، مثل النواة ومكتبات النظام، وليس النواة وحدها.
توضيحات مهمة حول الأنظمة غير القابلة للتغيير #
ليست كل التوزيعات مبنية بالطريقة نفسها #
تشترك بعض هذه الأنظمة في تقليل التعديل المباشر وتسهيل الرجوع، لكن طريقة تحقيق ذلك تختلف:
- Fedora Silverblue: تستخدم OSTree و
rpm-ostreeلإدارة نسخ النظام الأساسي، مع استخدام Flatpak وحاويات التطوير لأغراض مختلفة. - Ubuntu Core: توزع مكونات النظام والتطبيقات في حزم Snap، ولها تصميم خاص للتخزين والتحديث.
- NixOS: تعتمد على وصف إعدادات النظام مع تخزين الحزم في
/nix/store. ويمكن تفعيل كثير من التغييرات أثناء التشغيل، بينما تتطلب تغييرات مثل النواة إعادة التشغيل للاستفادة منها.
للقراءة فقط لا تعني استحالة التعديل #
حماية أجزاء من النظام تُقلل التغييرات العرضية لكنها لا تلغي قدرة المسؤول على استخدام أدوات التخصيص أو تجاوز بعض القيود عمدًا. كما أن مجلدات البيانات والإعدادات القابلة للكتابة تظل جزءًا ضروريًا من النظام.
التحديث الذري لا يضمن غياب الأعطال #
تجهيز التحديث قبل تفعيله يقلل خطر ترك النظام الحالي في حالة تحديث جزئي عند تعثر التنزيل. لكن ذلك لا يمنع أخطاء البرمجيات أو أعطال التخزين، ولا يضمن أن كل مكونات النظام والتطبيقات تُحدث في معاملة واحدة.
كما أن العودة إلى إصدار سابق تعتمد على آلية التوزيعة وحالة البيانات والإعدادات التي بقيت قابلة للتغيير.
ختامًا #
وصف النظام بأنه غير قابل للتغيير لا يعني أنك لن تستطيع حفظ صورة أو تثبيت برنامج. الذكاء في هذه التقنية هو التوازن يعني النظام يُقفل الأساس ليضمن الاستقرار وفي الوقت نفسه يُوفر لك بيئة مرنة مثل الحاويات لتعمل وتُعدل بحرية دون المساس بالأساس.
نتمنى أن تكون الصورة قد وصلت ولو بشيء القليل.
روابط ذات صلة #
- دليل إدارة rpm-ostree
- توثيق Ubuntu Core: مكونات النظام وتخطيط التخزين
- ويكي NixOS الرسمية: بنية النظام والأجيال