table of contents
| SYSTEMD-SYSEXT(8) | systemd-sysext | SYSTEMD-SYSEXT(8) |
الاسم¶
systemd-sysext, systemd-sysext.service, systemd-sysext-initrd.service, systemd-confext, systemd-confext.service, systemd-confext-initrd.service - يُنشّط صور إضافات النظام
موجز¶
systemd-sysext [خيارات...] أمر
systemd-sysext.service
systemd-confext [خيارات...] أمر
systemd-confext.service
الوصف¶
يُنشّط/يُعطّل systemd-sysext صور إضافات النظام. قد تُوسّع صور إضافات النظام - ديناميكيًا في وقت التشغيل - التسلسلات الهرمية للدليل /usr/ و /opt/ بملفات إضافية. يُعد هذا مفيدًا بشكل خاص في صور النظام غير القابلة للتغيير حيث يُراد توسيع تسلسل هرمي /usr/ أو /opt/ موجود على نظام ملفات للقراءة فقط مؤقتًا في وقت التشغيل دون إجراء أي تعديلات دائمة.
يجب أن تحتوي صور إضافات النظام على ملفات وأدلة مشابهة لأسلوب شجرة نظام التشغيل العادية. عندما تُنشّط صورة إضافة نظام واحدة أو أكثر، تُدمج تسلسلاتها الهرمية /usr/ و /opt/ عبر "overlayfs" مع نفس التسلسلات الهرمية لنظام التشغيل المضيف، ويُوصَل فوق /usr/ و /opt/ المضيف بها ("الدمج"). عندما تُعطّل، تُفكّك نقطة الوصل - مما يكشف مرة أخرى عن النسخة الأصلية غير المعدلة من التسلسل الهرمي للمضيف ("فك الدمج"). وبالتالي، يجعل الدمج موارد الإضافة تظهر فجأة أسفل التسلسلات الهرمية /usr/ و /opt/ كما لو كانت مضمنة في صورة نظام التشغيل الأساسية نفسها. فك الدمج يجعلها تختفي مرة أخرى، تاركًا في مكانه فقط الملفات التي شُحنت مع صورة نظام التشغيل الأساسية نفسها.
الملفات والأدلة الموجودة في صور الإضافة خارج التسلسلات الهرمية /usr/ و /opt/ لا تُدمج، وبالتالي ليس لها تأثير عند تضمينها في صورة إضافة نظام. على وجه الخصوص، الملفات في /etc/ و /var/ المضمنة في صورة إضافة نظام لن تظهر في التسلسلات الهرمية المعنية بعد التنشيط.
صور إضافات النظام هي للقراءة فقط بشكل صارم بشكل مبدئي. في أنظمة ملفات المضيف القابلة للتغيير، تصبح التسلسلات الهرمية /usr/ و /opt/ للقراءة فقط أثناء دمج الإضافات، ما لم تُفعّل القابلية للتغيير. قد تُفعّل القابلية للتغيير عبر الخيار --mutable= والخيار Mutable= في ملف الإعداد؛ راجع "القابلية للتغيير" أدناه لمزيد من المعلومات.
يمكن ضبط خيارات أوامر متنوعة عالميًا عبر ملفات الإعداد. راجع sysext.conf(5) للتفاصيل.
من المفترض أن تكون إضافات النظام إضافية بحتة، أي من المفترض أن تتضمن فقط ملفات غير موجودة في صورة نظام التشغيل الأساسية الكامنة. ومع ذلك، تسمح الآلية الكامنة (overlayfs) أيضًا بتركيب أو إزالة الملفات، لكن يُوصى بعدم استخدام هذا.
قد تُقدّم صور إضافات النظام بالتنسيقات التالية:
تنسيقات الصور هذه هي نفسها التي يدعمها systemd-nspawn(1) عبر مفتاحيه --directory=/--image= وتلك التي يدعمها مدير الخدمة عبر RootDirectory=/RootImage=. وبشكل مشابه لها، قد تحمل اختياريًا معلومات استيثاق Verity.
يُبحث عن إضافات النظام في الأدلة /etc/extensions/ و /run/extensions/ و /var/lib/extensions/. أول دليلين مذكورين غير مناسبين لحمل صور ثنائية كبيرة، لكنهما لا يزالان مفيدين لحمل روابط رمزية إليها. المكان الرئيس لتثبيت إضافات النظام هو /var/lib/extensions/. أي أدلة توجد في أدلة البحث هذه تُعد صور إضافة قائمة على الدليل؛ وأي ملفات باللاحقة .raw تُعد صور إضافة قائمة على صورة القرص. عند الاستدعاء في initrd، يُضمّن الدليل الإضافي /.extra/sysext/ في الأدلة التي يُبحث فيها عن صور الإضافة. لاحظ مع ذلك، أن سياسة صور أكثر صرامة تنطبق بشكل مبدئي على الصور الموجودة هناك، انظر أدناه. هذا الدليل يُملأ بواسطة systemd-stub(7) بصور الإضافة الموجودة في قسم نظام EFI للنظام.
تُنشّط صور إضافات نظام التشغيل آليًا أثناء الإقلاع، إذا كانت خدمة systemd-sysext.service مُفعّلة. لاحظ أن هذه الخدمة تعمل فقط بعد وصل أنظمة الملفات الأساسية حيث قد توجد إضافات النظام. هذا يعني أنها غير مناسبة لشحن الموارد التي تُعالج بواسطة أنظمة فرعية تعمل في أبكر مراحل الإقلاع. تحديدًا، صور إضافات نظام التشغيل غير مناسبة لشحن خدمات النظام أو تعريفات systemd-sysusers(8). راجع صفحة الخدمات المحمولة[2] لآلية بسيطة لشحن خدمات النظام في صور الأقراص، بطريقة مشابهة لإضافات نظام التشغيل. لاحظ العزل المختلف في هاتين الآليتين: بينما توسع إضافة النظام مباشرة صورة نظام التشغيل الأساسية بملفات إضافية تظهر بطريقة مشابهة جدًا كما لو كانت مشحونة في صورة نظام التشغيل نفسها وبالتالي لا تستلزم عزلًا أمنيًا، تستلزم الخدمات المحمولة عزلًا على مستوى الخدمة بطريقة أو بأخرى. خدمة systemd-sysext.service مضمونة لإنهاء بدء التشغيل قبل الوصول إلى basic.target؛ أي في وقت تهيئة الخدمات العادية (تلك التي لا تستخدم DefaultDependencies=no)، تكون الملفات والأدلة التي توفرها إضافات النظام متاحة في /usr/ و /opt/ ويمكن الوصول إليها.
لاحظ أنه لا يوجد مفهوم لتمكين/تعطيل صور إضافات النظام المثبتة: جميع صور الإضافات المثبتة تُنشّط آليًا عند الإقلاع. ومع ذلك، يمكنك وضع دليل فارغ مسمى مثل الإضافة (بدون .raw) في /etc/extensions/ "لحجب" إضافة بنفس الاسم في مجلد نظام ذي أولوية أقل.
تُفرض آلية بسيطة لتوافق الإصدارات: يجب أن تحمل صورة إضافة نظام ملف /usr/lib/extension-release.d/extension-release.NAME، والذي يجب أن يطابق اسم صورتها، ويُقارن مع ملف os-release للمضيف: يجب أن تتطابق حقول ID= الموجودة ما لم يُضبط "_any" للإضافة. إذا كان ID= للإضافة ليس "_any"، يجب أن يتطابق حقل SYSEXT_LEVEL= (إذا كان مُعرّفًا). إذا لم يُعرّف الأخير، يجب أن يتطابق حقل VERSION_ID= بدلاً من ذلك. إذا عرّفت الإضافة حقل ARCHITECTURE= ولم تكن القيمة "_any"، فيجب أن يطابق معمارية النواة التي يبلغ عنها uname(2)، مع العلم أن معرفات المعمارية المستخدمة هي نفسها المستخدمة في ConditionArchitecture= الموصوفة في systemd.unit(5). يمكن ضبط EXTENSION_RELOAD_MANAGER= على 1 إذا كانت الإضافة تتطلب إعادة تحميل مدير الخدمة بعد تطبيقها. لاحظ أنه للأسباب المذكورة سابقًا، تظل الخدمات المحمولة[2] هي الطريقة الموصى بها لشحن خدمات النظام. يجب ألا تشحن إضافات النظام ملف /usr/lib/os-release (لأن ذلك سيُدمج في شجرة /usr/ للمضيف، مما يتجاوز بيانات إصدار نظام التشغيل المضيف، وهو أمر غير مرغوب فيه). يتبع ملف extension-release نفس تنسيق ودلالات ملف os-release لنظام التشغيل، ويحمل نفس المحتوى، ولكنه يصف الموارد المحمولة في صورة الإضافة.
يتبع مفهوم systemd-confext نفس مبدأ وظيفة systemd-sysext(8) ولكن بدلاً من العمل على /usr و /opt، سيعمل confext على توسيع /etc فقط. الملفات والأدلة الموجودة في صور confext خارج تسلسل /etc/ الهرمي لا تُدمج، وبالتالي ليس لها تأثير عند تضمينها في الصورة. تنسيقات هذه الصور هي نفسها تنسيقات صور sysext. سيُوصَل التسلسل الهرمي المدمج بـ "nosuid" و "noexec" (ما لم يُعطّل عبر --noexec=false).
تمامًا مثل sysexts، تكون confexts للقراءة فقط بشكل صارم بشكل مبدئي. سيؤدي دمج confexts على أنظمة ملفات المضيف القابلة للتغيير إلى جعل /etc/ للقراءة فقط. وكما هو الحال مع sysexts، يمكن تمكين القابلية للتغيير عبر خيار --mutable=. راجع "القابلية للتغيير" أدناه لمزيد من المعلومات.
يُبحث عن Confexts في الأدلة /run/confexts/ و /var/lib/confexts/ و /usr/lib/confexts/ و /usr/local/lib/confexts/. أول دليل مذكور غير مناسب لحمل صور ثنائية كبيرة، ولكنه لا يزال مفيدًا لحمل روابط رمزية إليها. المكان الرئيس لتثبيت إضافات الإعداد هو /var/lib/confexts/. أي أدلة توجد في أدلة البحث هذه تُعد صور confext قائمة على الدليل؛ وأي ملفات باللاحقة .raw تُعد صور confext قائمة على صورة القرص.
مرة أخرى، تمامًا مثل صور sysext، ستحتوي صور confext على ملف /etc/extension-release.d/extension-release.NAME، والذي يجب أن يطابق اسم الصورة (مع إمكانية تجاوز ذلك عبر user.extension-release.strict في xattr(7))، ومرة أخرى مع محتوى يتكون من حقل واحد أو أكثر من ID= و VERSION_ID= و CONFEXT_LEVEL. سيُتحقّق من صور Confext ومطابقتها مع طبقة نظام التشغيل الأساسية.
الاستخدامات¶
حالة الاستخدام الرئيسة لصور النظام هي البيئات غير القابلة للتغيير حيث يُراد توفير أدوات التنقيح والتطوير اختياريًا، ولكن دون تضمينها في صورة نظام التشغيل الأساسية غير القابلة للتغيير نفسها (على سبيل المثال، توفير strace(1) و gdb(1) كإضافة قابلة للتثبيت اختياريًا لتسهيل التنقيح/التطوير). لا ينبغي فهم صور إضافات النظام خطأً كإطار عمل عام لحزم البرمجيات، حيث لا يتوفر مخطط تبعيات: يجب أن تحمل إضافات النظام جميع الملفات التي تحتاجها بنفسها، باستثناء تلك المشحونة بالفعل في صورة النظام المضيف الأساسية. عادةً، تُبنى صور إضافات النظام في نفس وقت بناء صورة نظام التشغيل الأساسية - ضمن نفس نظام البناء.
حالة استخدام أخرى لمفهوم إضافة النظام هي التجاوز المؤقت للموارد التي يوفرها نظام التشغيل بموارد أحدث، على سبيل المثال لتثبيت نسخة تطويرية مُجمّعة محليًا لمكون منخفض المستوى فوق صورة نظام التشغيل غير القابلة للتغيير دون إعادة بناء كاملة لنظام التشغيل أو تعديل الصورة التي يُفترض أنها غير قابلة للتغيير. (مثلًا، "تثبيت" حزمة مبنية محليًا باستخدام DESTDIR=/var/lib/extensions/mytest make install && systemd-sysext refresh، مما يجعلها متاحة في /usr/ كما لو كانت مثبتة في صورة نظام التشغيل نفسها). تعمل هذه الحالة بغض النظر عما إذا كان دليل /usr/ للمضيف الأساسي يُدار كصورة قرص غير قابلة للتغيير أو كشجرة تقليدية يتحكم بها مدير حزم (أي قابلة للكتابة).
باستخدام systemd-confext، يمكن إجراء إعادة ضبط إعدادات خدمات نظام التشغيل أثناء وقت التشغيل. أحيانًا، تكون هناك حاجة لتبديل قيم معينة لمعاملات الإعداد أو إعادة تشغيل خدمة محددة فقط دون نشر كود جديد أو نشر كامل لنظام التشغيل. بعبارة أخرى، نريد أن نكون قادرين على ربط الخيارات الأكثر استخدامًا في الإعداد بأعلام قابلة للتحديث في وقت التشغيل يمكن تغييرها دون إعادة تشغيل النظام. سيساعد هذا في تقليل أوقات الصيانة عند الحاجة لتغيير إعدادات نظام التشغيل. كما يوفر أداة موثوقة لإدارة الإعدادات لأن جميع ملفات الإعداد القديمة تختفي عند إزالة صورة systemd-confext.
القابلية للتغيير¶
بشكل مبدئي، سيؤدي دمج إضافات النظام في أنظمة ملفات المضيف القابلة للتغيير إلى جعل التسلسلات الهرمية /usr/ و /opt/ للقراءة فقط. وسيكون لدمج إضافات الإعداد نفس التأثير على /etc/. يسمح الوضع القابل للتغيير بالكتابة في هذه المواقع عند دمج الإضافات.
الأنماط التالية مدعومة:
انظر "الخيارات" أدناه حول تحديد الأنماط باستخدام خيار سطر الأوامر --mutable=.
باستثناء الوضع المؤقت (ephemeral)، يوجه الوضع القابل للتغيير عمليات الكتابة إلى أدلة فرعية في /var/lib/extensions.mutable/.
إذا كانت المجلدات usr/ أو opt/ أو etc/ في /var/lib/extensions.mutable/ روابط رمزية، فتُوجّه الكتابات إلى أهداف هذه الروابط الرمزية. بناءً على ذلك، وللحفاظ على قابلية تغيير نظام ملفات المضيف، أنشئ روابط رمزية
بدلاً من ذلك، يمكن وصل نظام ملفات مؤقت في /var/lib/extensions.mutable/، أو قد تشير الروابط الرمزية في /var/lib/extensions.mutable/ إلى أدلة فرعية في نظام ملفات مؤقت (مثلًا أسفل /tmp/) للسماح فقط بالتغييرات المؤقتة. لاحظ أن هذا ليس نفس الوضع المؤقت (ephemeral mode)، لأن نظام الملفات المؤقت سيظل موجودًا بعد فك الدمج.
أُضيف في الإصدار 256.
الأوامر¶
الأوامر التالية يفهمها كلا مفهومي sysext و confext:
status
أُضيف في الإصدار 248.
merge
أُضيف في الإصدار 248.
unmerge
أُضيف في الإصدار 248.
refresh
أُضيف في الإصدار 248.
list
أُضيف في الإصدار 248.
-h، --help
--version
الخيارات¶
--root=
أُضيف في الإصدار 248.
--force
أُضيف في الإصدار 248.
--always-refresh=yes|no
أُضيف في الإصدار 260.
--image-policy=السياسة
أُضيف في الإصدار 254.
--mutable=BOOL|auto|import|ephemeral|ephemeral-import|help
no
أُضيف في الإصدار 256.
auto
أُضيف في الإصدار 256.
yes
أُضيف في الإصدار 256.
import
أُضيف في الإصدار 256.
ephemeral
أُضيف في الإصدار 256.
ephemeral-import
أُضيف في الإصدار 256.
help
أُضيف في الإصدار 259.
أُضيف في الإصدار 256.
--noexec=BOOL
أُضيف في الإصدار 254.
--no-reload
أُضيف في الإصدار 255.
--no-pager
--no-legend
--json=وضع
حالة الخروج¶
عند النجاح، يُعاد 0.
انظر أيضًا¶
systemd(1), sysext.conf(5), systemd-nspawn(1), systemd-stub(7), importctl(1)
ملاحظات¶
- 1.
- UAPI.2 مواصفات الأقسام القابلة للاكتشاف
- 2.
- الخدمات المحمولة
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| systemd 260.1 |