table of contents
- trixie-backports 4.31.0-1~bpo13+1
- testing 4.32.4-1
- unstable 4.32.4-1
| SYSTEMD-SYSEXT(8) | systemd-sysext | SYSTEMD-SYSEXT(8) |
الاسم¶
systemd-sysext, systemd-sysext.service, systemd-sysext-initrd.service, systemd-sysext-sysroot.service, systemd-confext, systemd-confext.service, systemd-confext-initrd.service, systemd-confext-sysroot.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-confext.service مفعَّلتين. لاحظ أن هذه الخدمات تُشغَّل فقط بعد وصول أنظمة الملفات الأساسية حيث قد توجد تمديدات النظام والتهيئة. لجعل من الممكن شحن الموارد التي تُعالَج بواسطة أنظمة فرعية تعمل في مراحل الإقلاع المبكرة (على سبيل المثال، خدمات النظام أو تعريفات systemd-sysusers(8))، تُوفَّر خدمات initrd systemd-sysext-sysroot.service و systemd-confext-sysroot.service. حاليًا، لا يمكن استخدام هذه الخدمات لدمج تمديدات النظام من /sysroot/var/lib/extensions/ وتمديدات التهيئة من /sysroot/var/lib/confexts/ عند فصل قسم /var/. تُدمَج هذه التمديدات لاحقًا بواسطة خدمتي systemd-sysext.service و systemd-confext.service أثناء عملية إقلاع نظام التشغيل الرئيسية.
أيضًا، انظر إلى صفحة الخدمات المحمولة[2] للحصول على آلية بسيطة لتقديم خدمات النظام في صور الأقراص، بطريقة مشابهة لامتدادات نظام التشغيل. لاحظ الاختلافات في العزل بين هاتين الآليتين: بينما تمتد امتدادات النظام مباشرة على صورة نظام التشغيل الأساسية بملفات إضافية تظهر كما لو كانت مضمّنة في صورة نظام التشغيل نفسها وبالتالي لا تعني عزلًا أمنيًا، فإن الخدمات المحمولة تعني عزلًا على مستوى الخدمة بطريقة أو بأخرى. البرامج الثنائية المقدمة في امتدادات النظام يمكنها فقط الربط مع مكتبات المضيف إذا كان الامتداد مرتبطًا بإصدار نظام تشغيل المضيف (انظر أدناه) أو يجب عليها استخدام الربط الثابت. أما الخدمات المحمولة، فهي منفصلة تمامًا عن المضيف لأنها تحمل تبعيات مكتباتها الخاصة.
خدمتا systemd-sysext.service و systemd-confext.service مضمونتان لإنهاء بدء التشغيل قبل الوصول إلى basic.target؛ أي، بحلول وقت تهيئة الخدمات العادية (تلك التي لا تستخدم DefaultDependencies=no)، تكون الملفات والأدلة المقدمة من تمديدات النظام والتهيئة متاحة في /usr/ و /opt/ و /etc/ ويمكن الوصول إليها.
يمكن أيضًا استخدام تمديدات النظام والتهيئة لتمديد initrd، وتُوفَّر خدمات initrd systemd-sysext-initrd.service و systemd-confext-initrd.service. لاحظ أن بعض القيود تنطبق: الموارد المستخدمة في مراحل الإقلاع المبكرة لـ initrd (مثل خدمات النظام) لا يمكن تحديثها.
لاحظ أنه لا يوجد مفهوم لتفعيل/تعطيل صور تمديد النظام المثبتة: جميع صور التمديد المثبتة تُفعَّل آليًا عند الإقلاع. ومع ذلك، يمكنك وضع دليل فارغ باسم مشابه للتمديد (بدون .raw) في /etc/extensions/ "لإخفاء" تمديد بنفس الاسم في مجلد نظام بأولوية أقل. من الممكن أيضًا تعطيل الدمج الآلي بالكامل باستخدام خيارات سطر أوامر النواة rd.systemd.sysext= و rd.systemd.confext= و systemd.sysext= و systemd.confext=. لاحظ أن systemd-sysext-sysroot.service و systemd-confext-sysroot.service تتحكم بهما خيارات systemd.sysext= و systemd.confext=، حيث تدمج هذه الخدمات تمديدات النظام والتهيئة للنظام الرئيسي، وليس لـ initrd.
آلية بسيطة لتوافق الإصدارات مفروضة: يجب أن تحمل صورة امتداد النظام ملف /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 إذا كان الامتداد يتطلب إعادة تحميل مدير الخدمة بعد تطبيق الامتداد. يمكن ضبط EXTENSION_RESTART_UNITS= وEXTENSION_RELOAD_OR_RESTART_UNITS= على قائمة مفصولة بمسافات من أسماء الوحدات (مثل "EXTENSION_RESTART_UNITS="my.service other.service"") التي يجب على systemd-sysext/systemd-confext إعادة تشغيلها أو إعادة تحميلها (أو إعادة تشغيلها، إذا كانت الوحدة لا تدعم إعادة التحميل) بعد دمج أو تحديث الامتداد، وبعد إلغاء دمجه. استخدم EXTENSION_RESTART_UNITS= للوحدات التي يستبدل الامتداد برنامجها الثنائي (إعادة التحميل لن تلتقط البرنامج الثنائي الجديد)، وEXTENSION_RELOAD_OR_RESTART_UNITS= للوحدات التي يوسعها الامتداد بإضافات تكوين فقط (حتى لا تُقاطع الخدمات القابلة لإعادة التحميل دون داعٍ). إذا اختفت وحدة، مثلًا عند إلغاء الدمج لأنها كانت جزءًا من الامتداد، تُوقف بدلاً من ذلك. إذا كانت نفس الوحدة مدرجة في كلا الحقلين، EXTENSION_RESTART_UNITS= له الأولوية. إدراج أي وحدة في أي حقل يعني EXTENSION_RELOAD_MANAGER=1، لأن مدير الخدمة لن يرى بعد (أو لن يرى بعد الآن) ملفات الوحدات المقدمة من الامتداد. لاحظ أن هذه الإعدادات لا تسري عندما يُدمج الامتداد للنظام بالفعل من initrd ويجب أن تظل الامتدادات تحمل رابطًا رمزيًا ".wants/" أو ".upholds/" من هدف تثبيت الوحدة لضمان بدء الوحدة عند الإقلاع. لا يجب أن تحمل امتدادات النظام ملف /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 262.1 |