| SYSTEMD-NSPAWN(1) | systemd-nspawn | SYSTEMD-NSPAWN(1) |
الاسم
systemd-nspawn - استدعِ أمراً أو نظام تشغيل في حاوية خفيفة
موجز
systemd-nspawn [الخيارات...] [الأمر [المعطيات...]]
systemd-nspawn --boot [الخيارات...] [المعطيات...]
الوصف
يُمكن استخدام systemd-nspawn لتشغيل أمر أو نظام تشغيل في حاوية نطاق أسماء خفيفة. يشبه في نواحٍ كثيرة chroot(1)، ولكنه أقوى لأنه يوفر بيئة افتراضية لهيكلية نظام الملفات، بالإضافة إلى شجرة العمليات، وأنظمة IPC الفرعية المختلفة، وأسماء المضيف والنطاق.
يُمكن استدعاء systemd-nspawn على أي شجرة دليل تحتوي على شجرة نظام تشغيل، باستخدام خيار سطر الأوامر --directory=. وباستخدام خيار --machine=، يُبحث عن شجرة نظام التشغيل آلياً في عدة مواقع، أهمها /var/lib/machines/، وهو الدليل المقترح لوضع صور حاويات نظام التشغيل المثبتة على الحاسوب.
على عكس chroot(1)، يُمكن استخدام systemd-nspawn لإقلاع أنظمة تشغيل كاملة مبنية على لينكس داخل حاوية.
يُقيد systemd-nspawn الوصول إلى واجهات النواة المختلفة في الحاوية لتكون للقراءة فقط، مثل /sys/ أو /proc/sys/ أو /sys/fs/selinux/. لا يجوز تغيير واجهات شبكة المضيف وساعة النظام من داخل الحاوية. ولا يجوز إنشاء عقد الأجهزة. لا يُمكن إعادة تشغيل نظام المضيف ولا يُمكن تحميل وحدات النواة من داخل الحاوية. يُمكن التحايل على هذه البيئة المعزولة بسهولة من داخل الحاوية إذا لم تُستخدم نطاقات أسماء المستخدمين. وهذا يعني أن الكود غير الموثوق يجب تشغيله دائماً في نطاق أسماء مستخدم، راجع مناقشة خيار --private-users= أدناه.
استخدم أداة مثل dnf(8) أو debootstrap(8) أو pacman(8) لإعداد شجرة دليل نظام تشغيل مناسبة كهيكلية نظام ملفات لحاويات systemd-nspawn. راجع قسم الأمثلة أدناه للحصول على تفاصيل حول الاستدعاء المناسب لهذه الأوامر.
كفحص للسلامة، سيتحقق systemd-nspawn من وجود /usr/lib/os-release أو /etc/os-release في شجرة الحاوية قبل إقلاع الحاوية (راجع os-release(5)). قد يكون من الضروري إضافة هذا الملف إلى شجرة الحاوية يدوياً إذا كان نظام تشغيل الحاوية قديماً جداً بحيث لا يحتوي على هذا الملف بشكل افتراضي.
يُمكن استدعاء systemd-nspawn مباشرة من سطر الأوامر التفاعلي أو تشغيله كخدمة نظام في الخلفية. في هذا النمط، تعمل كل نسخة حاوية كنسخة خدمة خاصة بها؛ ويوفر ملف وحدة قالب مبدئي systemd-nspawn@.service لتسهيل ذلك، حيث يأخذ اسم الحاوية كمعرف للنسخة. لاحظ أن خيارات مبدئية مختلفة تُطبق عند استدعاء systemd-nspawn بواسطة ملف وحدة القالب عما إذا استدعي تفاعلياً على سطر الأوامر. والأهم من ذلك، يستخدم ملف وحدة القالب خيار --boot وهو ليس الخيار المبدئي في حالة استدعاء systemd-nspawn من سطر الأوامر التفاعلي. تُوثق الاختلافات الإضافية عن الإعدادات المبدئية مع الخيارات المدعومة المتنوعة أدناه.
يُمكن استخدام أداة machinectl(1) لتنفيذ عدد من العمليات على الحاويات. على وجه الخصوص، توفر أوامر سهلة الاستخدام لتشغيل الحاويات كخدمات نظام باستخدام ملف وحدة القالب systemd-nspawn@.service.
إلى جانب كل حاوية، قد يوجد ملف إعدادات بلاحقة .nspawn، يحتوي على إعدادات إضافية لتطبيقها عند تشغيل الحاوية. راجع systemd.nspawn(5) للتفاصيل. تتجاوز ملفات الإعدادات الخيارات المبدئية المستخدمة بواسطة ملف وحدة القالب systemd-nspawn@.service، مما يجعل من غير الضروري عادةً تعديل ملف القالب هذا مباشرةً.
لاحظ أن systemd-nspawn سيقوم بوصل أنظمة ملفات خاصة بالحاوية في /dev/ و /run/ وما شابه ذلك. لن تكون هذه مرئية خارج الحاوية، وستُفقد محتوياتها عند خروج الحاوية.
لاحظ أن تشغيل حاويتي systemd-nspawn من نفس شجرة الدليل لن يجعل العمليات فيهما ترى بعضها البعض. إن فصل نطاق أسماء معرفات العمليات (PID) للحاويتين كامل، وستتشارك الحاويات في عدد قليل جداً من كائنات وقت التشغيل باستثناء نظام الملفات الأساسي. بدلاً من ذلك، استخدم أوامر login أو shell الخاصة بـ machinectl(1) لطلب جلسة تسجيل دخول إضافية في حاوية عاملة.
ينفذ systemd-nspawn مواصفات واجهة الحاوية[1].
أثناء التشغيل، تُسجل الحاويات المستدعاة بواسطة systemd-nspawn لدى خدمة systemd-machined(8) التي تتبع الحاويات العاملة، وتوفر واجهات برمجة للتفاعل معها.
العملية غير المميزة
يُمكن استدعاء systemd-nspawn بامتيازات أو بدونها. الوظائف الكاملة متاحة حالياً فقط عند الاستدعاء بامتيازات. عند الاستدعاء بدون امتيازات، تُطبق قيود متنوعة، تشمل على سبيل المثال لا الحصر:
عند التشغيل في النمط غير المميز، تُوفر بعض الوظائف المطلوبة عبر systemd-mountfsd.service(8) و systemd-nsresourced.service(8).
الخيارات
إذا حُدد خيار --boot، تُستخدم المعطيات كمعطيات لبرنامج البدء (init). خلاف ذلك، يحدد الأمر البرنامج المراد تشغيله في الحاوية، وتُستخدم المعطيات المتبقية كمعطيات لهذا البرنامج. إذا لم يُستخدم --boot ولم تُحدد أي معطيات، تُشغل صدفة (shell) في الحاوية.
الخيارات التالية مفهومة:
-q، --quiet
أُضيف في الإصدارة 209.
--settings=النمط
إذا مُكن (وهو المبدئي)، يُبحث عن ملف إعدادات يحمل اسم الآلة (كما هو محدد في إعداد --machine=، أو مشتق من اسم الدليل أو ملف الصورة) باللاحقة .nspawn في /etc/systemd/nspawn/ و /run/systemd/nspawn/. إذا وُجد هناك، تُقرأ إعداداته وتُستخدم. وإذا لم يُعثر عليه هناك، يُبحث عنه لاحقاً في نفس دليل ملف الصورة أو في الدليل الأب المباشر للدليل الجذر للحاوية. في هذه الحالة، إذا وُجد الملف، ستُقرأ إعداداته وتُستخدم أيضاً، ولكن تُتجاهل الإعدادات التي يحتمل أن تكون غير آمنة. لاحظ أنه في كلتا الحالتين، تكون للإعدادات في سطر الأوامر الأسبقية على الإعدادات المقابلة من ملفات .nspawn المحملة، في حال تحديد كليهما. تُعتبر الإعدادات غير آمنة إذا كانت ترفع امتيازات الحاوية أو تمنح الوصول إلى موارد إضافية مثل ملفات أو أدلة المضيف. للحصول على تفاصيل حول تنسيق ومحتويات ملفات .nspawn، استشر systemd.nspawn(5).
إذا ضُبط هذا الخيار على override، يُبحث عن الملف ويُقرأ ويُستخدم بنفس الطريقة، ومع ذلك، يُعكس ترتيب الأسبقية: ستكون للإعدادات المقروءة من ملف .nspawn الأسبقية على خيارات سطر الأوامر المقابلة، في حال تحديد كليهما.
إذا ضُبط هذا الخيار على trusted، يُبحث عن الملف ويُقرأ ويُستخدم بنفس الطريقة، ولكن بغض النظر عما إذا وُجد في /etc/systemd/nspawn/ أو /run/systemd/nspawn/ أو بجوار ملف الصورة أو الدليل الجذر للحاوية، فإن جميع الإعدادات ستدخل حيز التنفيذ، ومع ذلك، تظل لمعطيات سطر الأوامر الأسبقية على الإعدادات المقابلة.
إذا عُطل، فلن يُقرأ أي ملف .nspawn ولن تسري أي إعدادات باستثناء تلك الموجودة في سطر الأوامر.
أُضيف في الإصدارة 226.
--cleanup
أُضيف في الإصدار 257.
خيارات الصورة
-D، --directory=
إذا لم يُحدد --directory= ولا --image=، فسيُحدد الدليل من خلال البحث عن دليل يحمل نفس اسم الآلة المحدد بـ --machine=. راجع قسم "الملفات والأدلة" في machinectl(1) لمعرفة مسار البحث الدقيق.
بدلاً من مسار الدليل، يُمكن تحديد دليل ذي إصدار ".v/"، راجع systemd.v(7) للتفاصيل.
إذا لم يُحدد لا --directory= ولا --image= ولا --machine=، فسيُستخدم الدليل الحالي. لا يجوز تحديده مع --image=.
--template=
لاحظ أن هذا المفتاح يترك اسم المضيف ومعرف الآلة وجميع الإعدادات الأخرى التي يمكن أن تحدد هوية النسخة دون تعديل.
أُضيف في الإصدارة 219.
-x، --ephemeral
لاحظ أن هذا المفتاح يترك اسم المضيف ومعرف الآلة وجميع الإعدادات الأخرى التي يمكن أن تحدد هوية النسخة دون تعديل. يرجى ملاحظة أن أخذ اللقطة المؤقتة - كما هو الحال مع --template= - يكون أكثر كفاءة في أنظمة الملفات التي تدعم لقطات الأحجام الفرعية أو 'reflinks' بشكل أصيل ("btrfs" أو "xfs" الجديد) منه في أنظمة الملفات الأكثر تقليدية التي لا تدعمها ("ext4"). لاحظ أن اللقطة المأخوذة هي للدليل أو الحجم الفرعي المحدد، بما في ذلك جميع الأدلة الفرعية والأحجام الفرعية الموجودة أسفله، ولكن باستثناء أي عمليات وصل فرعية.
باستخدام هذا الخيار، لن يُحتفظ بأي تعديلات على صورة الحاوية. استخدم --volatile= (الموضح أدناه) لآليات أخرى لتقييد استمرارية صور الحاويات أثناء وقت التشغيل.
أُضيف في الإصدارة 219.
-i، --image=
في صور GPT، إذا اكتُشف قسم نظام EFI (ESP)، فسيُوصل آلياً في /efi (أو /boot كبديل) في حالة وجود دليل بهذا الاسم وكان فارغاً.
الأقسام المعماة بـ LUKS تُفك تعميتها آلياً. أيضاً، في صور GPT، تُعد أقسام تجزئة سلامة البيانات dm-verity إذا حُددت التجزئة الجذرية لها باستخدام خيار --root-hash=.
يُمكن فتح صور نظام الملفات الواحد (أي أنظمة الملفات بدون جدول أقسام محيط بها) باستخدام dm-verity إذا مُررت بيانات السلامة باستخدام خياري --root-hash= و --verity-data= (واختيارياً --root-hash-sig=).
لا تُوصل أي أقسام أخرى، مثل الأقسام الأجنبية أو أقسام التبديل (swap). لا يجوز تحديده مع --directory= أو --template=.
بدلاً من مسار الصورة، يمكن تحديد دليل بنسخة ".v/"، راجع systemd.v(7) للمزيد من التفاصيل.
أُضيف في الإصدارة 211.
--image-policy=السياسة
أُضيف في الإصدار 254.
--mstack=
أُضيف في الإصدار 260.
--oci-bundle=
أُضيف في الإصدارة 242.
--read-only
--volatile، --volatile=النمط
لاحظ أنه إذا اختير أحد الأنماط المتطايرة، فإن تأثيره يقتصر على نظام الملفات الجذر (أو /var/ في حالة state)، ولا تتأثر أي عمليات وصل أخرى موضوعة في الهيكلية - بغض النظر عما إذا كانت أُنشئت آلياً (مثل قسم نظام EFI الذي قد يُوصل في /efi/ أو /boot/) أو صراحةً (على سبيل المثال من خلال خيار سطر أوامر إضافي مثل --bind=، انظر أدناه). وهذا يعني أنه حتى لو استُخدم --volatile=overlay، فإن التغييرات في /efi/ أو /boot/ محظورة في حالة وجود مثل هذا القسم في صورة الحاوية التي يُعمل عليها، وحتى لو استُخدم --volatile=state فإن الملف الافتراضي /etc/foobar يحتمل أن يكون قابلاً للكتابة إذا استُخدم --bind=/etc/foobar لوصله من خارج دليل /etc/ الخاص بالحاوية الذي هو للقراءة فقط.
يرتبط خيار --ephemeral ارتباطاً وثيقاً بهذا الإعداد، ويوفر سلوكاً مشابهاً عن طريق عمل نسخة مؤقتة وعابرة لصورة نظام التشغيل بالكامل وتنفيذها. لمزيد من التفاصيل، راجع أعلاه.
يوفر خيارا --tmpfs= و --overlay= وظائف مماثلة، ولكن للأدلة الفرعية المحددة لصورة نظام التشغيل فقط. للحصول على تفاصيل، انظر أدناه.
يوفر هذا الخيار وظيفة مماثلة للحاويات كما يوفر مفتاح سطر أوامر النواة "systemd.volatile=" لأنظمة المضيف. راجع kernel-command-line(7) للتفاصيل.
لاحظ أن ضبط هذا الخيار على yes أو state لن يعمل بشكل صحيح إلا مع أنظمة التشغيل في الحاوية التي يمكنها الإقلاع مع وصل /usr/ فقط، وتكون قادرة على ملء /var/ آلياً (و /etc/ في حالة "--volatile=yes"). وتحديداً، هذا يعني أن أنظمة التشغيل التي تتبع الفصل التاريخي لـ /bin/ و /lib/ (والأدلة ذات الصلة) عن /usr/ (أي حيث لا تكون الأولى روابط رمزية في الأخيرة) ليست مدعومة بواسطة "--volatile=yes" كحمولة للحاوية. لا يتطلب خيار overlay أي استعدادات خاصة في نظام التشغيل، ولكن لاحظ أن سلوك "overlayfs" يختلف عن أنظمة الملفات العادية في عدد من النواحي، وبالتالي فإن التوافق محدود.
أُضيف في الإصدارة 216.
--root-hash=
لاحظ أن هذا يضبط التجزئة الجذرية لنظام الملفات الجذر. قد تحتوي صور الأقراص أيضاً على أنظمة ملفات منفصلة لهيكلية /usr/، والتي قد تكون محمية بـ Verity أيضاً. يُمكن ضبط التجزئة الجذرية لهذه الحماية عبر سمة الملف الموسعة "user.verity.usrhash" أو عبر ملف .usrhash مجاور لصورة القرص، باتباع نفس التنسيق والمنطق الخاص بالتجزئة الجذرية لنظام الملفات الجذر الموضح هنا. لاحظ أنه لا يوجد حالياً مفتاح لضبط التجزئة الجذرية لـ /usr/ من سطر الأوامر.
انظر أيضاً خيار RootHash= في systemd.exec(5).
أُضيف في الإصدار 233.
--root-hash-sig=
أُضيف في الإصدار 246.
--verity-data=
أُضيف في الإصدار 246.
--pivot-root=
هذا مخصص للحاويات التي تحتوي على عدة أدلة قابلة للإقلاع؛ على سبيل المثال، عدة عمليات نشر لـ ostree(1). وهو يحاكي سلوك محمل الإقلاع و initrd اللذين يختاران عادةً أي دليل يوصل كجذر ويبدآن فيه PID 1 الخاص بالحاوية.
أُضيف في الإصدار 233.
خيارات التنفيذ
-a، --as-pid2
أُضيف في الإصدارة 229.
-b، --boot
يوضح الجدول التالي أوضاع الاستدعاء المختلفة وعلاقتها بـ --as-pid2 (انظر أعلاه):
الجدول 1. وضع
الاستدعاء
| المفتاح | الشرح |
| لم يُحدد --as-pid2 ولا --boot | تُفسر المعاملات الممررة كسطر أوامر، ويُنفذ كـ PID 1 في الحاوية. |
| حُدد --as-pid2 | تُفسر المعاملات الممررة كسطر أوامر، ويُنفذ كـ PID 2 في الحاوية. تُشغل عملية init بديلة كـ PID 1. |
| حُدد --boot | يُبحث آليًا عن برنامج init ويُشغل كـ PID 1 في الحاوية. تُستخدم المعاملات الممررة كمعاملات استدعاء لهذه العملية. |
لاحظ أن --boot هو وضع التشغيل المبدئي إذا استُخدم ملف وحدة القالب systemd-nspawn@.service.
--chdir=
أُضيف في الإصدارة 229.
-E الاسم[=القيمة]، --setenv=الاسم[=القيمة]
أُضيف في الإصدارة 209.
-u، --user=
لاحظ أنه إذا استُخدمت بيانات الاعتماد مع --user= غير الجذر (مثال: --set-credential= أو --load-credential=)، فيجب استخدام --no-new-privileges=yes، ويجب عدم استخدام --boot أو --as-pid2، وإلا فلن تتمكن الحاوية من قراءة بيانات الاعتماد بسبب نقص الامتيازات بعد التبديل إلى المستخدم المحدد.
--kill-signal=
أُضيف في الإصدارة 220.
--notify-ready=
القيمة المبدئية هي false. (لاحظ أن هذا يختلف عن الخيار الذي يحمل نفس الاسم في systemd-vmspawn(1) حيث تكون قيمته المبدئية true.)
أُضيف في الإصدارة 231.
--suppress-sync=
أُضيف في الإصدار 250.
خيارات هوية النظام
-M، --machine=
أُضيف في الإصدارة 202.
--hostname=
أُضيف في الإصدار 239.
--uuid=
خيارات الخاصية
-S، --slice=
أُضيف في الإصدارة 206.
--property=
أُضيف في الإصدارة 220.
--register=
أُضيف في الإصدارة 209.
--keep-unit
لاحظ أن تمرير --keep-unit يعطل مفعول --slice= و --property=. استخدم --keep-unit و --register=no معًا لتعطيل أي نوع من تخصيص الوحدات أو التسجيل لدى systemd-machined.
أُضيف في الإصدارة 209.
خيارات مساحات أسماء المستخدمين
--private-users=
يُوصى بتخصيص 65536 UID/GID على الأقل لكل حاوية، بحيث يغطي نطاق UID/GID القابل للاستخدام في الحاوية 16 بت. ولتحقيق أفضل أمن، لا تخصص نطاقات UID/GID متداخلة لحاويات متعددة. ومن الجيد استخدام الـ 16 بت العلوية من الـ 32 بت لـ UID/GIDs للمضيف كمعرف للحاوية، بينما تشفر الـ 16 بت السفلية الـ UID/GID المستخدم للحاوية. هذا هو السلوك الذي يفرضه خيار --private-users=pick بالفعل.
عند استخدام مساحات أسماء المستخدمين، يُختار نطاق GID المخصص لكل حاوية دائمًا ليكون مطابقًا لنطاق UID.
في معظم الحالات، يُوصى بخيار --private-users=managed (أو --private-users=pick أيضًا عند التمتع بالامتيازات) حيث يُنصح بتقسيم مساحات أسماء المستخدمين لأسباب أمنية، ويعزز هذا الخيار أمن الحاوية بشكل هائل مع العمل آليًا بالكامل في معظم الحالات.
لاحظ أن نطاق UID/GID المختار لا يُكتب في /etc/passwd أو /etc/group. في الواقع، لا يُخزن تخصيص النطاق بشكل مستمر، إلا ربما في ملكية الملفات والأدلة الخاصة بالحاوية، انظر --private-users-ownership=.
لاحظ أنه عند استخدام تقسيم مساحة أسماء المستخدمين دون رسم خرائط UID (انظر أدناه)، فإن ملكية الملفات على القرص تعكس ذلك، وجميع ملفات وأدلة الحاوية تكون مملوكة لمعرفات المستخدم والمجموعة الفعالة للحاوية. وهذا يعني أن نسخ الملفات من وإلى صورة الحاوية يتطلب تصحيح قيم UID/GID العددية، وفقًا لإزاحة UID/GID المطبقة.
لاحظ أنه بالنسبة للتشغيل غير المتميز بالكامل في الوضع "المدار"، يجب أن تكون أي صورة دليل مملوكة لنطاق UID الأجنبي.
أُضيف في الإصدارة 220.
--private-users-ownership=
إذا اختير "chown"، فستُعدل جميع الملفات والأدلة في شجرة أدلة الحاوية بحيث تصبح مملوكة لـ UIDs/GIDs المناسبة المختارة للحاوية (انظر أعلاه). هذه العملية مكلفة محتملًا، لأنها تتضمن المرور عبر شجرة أدلة الحاوية بالكامل. إلى جانب ملكية الملفات الفعلية، تُعدل أيضًا قوائم التحكم في الوصول (ACLs) للملفات.
عادة ما يكون "foreign" أو "map" هو الخيار الأفضل، لأنه يعين UIDs/GIDs بشفافية في الذاكرة حسب الحاجة دون تعديل الصورة، ودون الحاجة إلى عملية تعديل متكررة مكلفة. ومع ذلك، فهو غير متاح لجميع أنظمة الملفات حاليًا.
خيار --private-users-ownership=auto مُتضمن إذا استُخدم --private-users=pick. ليس لهذا الخيار أي تأثير إذا لم يُستخدم تقسيم مساحة أسماء المستخدمين.
يمكن استخدام مفتاح --shift الخاص بـ systemd-dissect(1) لإزاحة ملكية UID/GID من أو إلى القاعدة 0، أو القاعدة الأجنبية، أو قاعدة UID/GID محددة للحاوية خارج أي استدعاء لـ systemd-nspawn.
أُضيف في الإصدارة 230.
--private-users-delegate=
يتطلب هذا الخيار --private-users=managed، حيث يُجرى التفويض بواسطة systemd-nsresourced.service(8) كجزء من تخصيص مساحة أسماء المستخدمين. أقصى عدد من النطاقات المفوضة هو 16. القيمة المبدئية هي 0، أي لا تفويض.
عند استخدام هذا الخيار بقيمة غير صفرية، يُوصل مقبس Varlink لخدمة systemd-nsresourced.service(8) في المسار (/run/systemd/io.systemd.NamespaceResource) آليًا داخل الحاوية مع روابط الاكتشاف الرمزية اللازمة في /run/systemd/userdb/ و /run/varlink/registry/. يسمح هذا للعمليات داخل الحاوية بالتراسل مع systemd-nsresourced على المضيف لتخصيص مساحات أسماء مستخدمين متداخلة من النطاقات المفوضة.
أُضيف في الإصدار 260.
-U
لاحظ أن -U هو المبدئي إذا استُخدم ملف وحدة القالب systemd-nspawn@.service.
ملاحظة: من الممكن التراجع عن تأثير --private-users-ownership=chown (أو -U) على نظام الملفات عن طريق إعادة العملية مع أول UID بقيمة 0:
systemd-nspawn ... --private-users=0 --private-users-ownership=chown
أُضيف في الإصدارة 230.
خيارات الشبكة
--private-network
--network-interface=
لاحظ أن أي واجهة شبكة محددة بهذه الطريقة يجب أن تكون موجودة بالفعل في وقت بدء الحاوية. إذا كان من المقرر بدء الحاوية آليًا عند الإقلاع عبر نسخة من ملف وحدة systemd-nspawn@.service، فقد يكون من المنطقي إضافة ملف وحدة تكميلي (drop-in) إلى نسخة الخدمة (مثل: /etc/systemd/system/systemd-nspawn@foobar.service.d/50-network.conf) بمحتويات مثل ما يلي:
[Unit] Wants=sys-subsystem-net-devices-ens1.device After=sys-subsystem-net-devices-ens1.device
سيضمن ذلك تأخير تفعيل خدمة الحاوية حتى تظهر واجهة الشبكة "ens1". هذا مطلوب لأن فحص العتاد غير متزامن تمامًا، وقد تُكتشف واجهات الشبكة لاحقًا فقط أثناء عملية الإقلاع، بعد أن تُبدأ الحاوية عادةً بدون هذه الاعتمادات الصريحة.
أُضيف في الإصدارة 209.
--network-macvlan=
كما هو الحال مع --network-interface=، يجب أن تكون واجهة شبكة إيثرنت الأساسية موجودة بالفعل وقت بدء تشغيل الحاوية، وبالتالي قد تكون ملفات الإقحام المماثلة لوحدات الخدمة كما هو موضح أعلاه مفيدة.
أُضيف في الإصدارة 211.
--network-ipvlan=
كما هو الحال مع --network-interface=، يجب أن تكون واجهة شبكة إيثرنت الأساسية موجودة بالفعل وقت بدء تشغيل الحاوية، وبالتالي قد تكون ملفات الإقحام المماثلة لوحدات الخدمة كما هو موضح أعلاه مفيدة.
أُضيف في الإصدارة 219.
-n، --network-veth
لاحظ أن systemd-networkd.service(8) يتضمن افتراضياً ملف شبكة /usr/lib/systemd/network/80-container-ve.network يطابق الواجهات من جانب المضيف المنشأة بهذه الطريقة، والذي يحتوي على إعدادات لتمكين التزويد الآلي للعناوين على الرابط الافتراضي المنشأ عبر DHCP، بالإضافة إلى التوجيه الآلي لبروتوكول IP إلى واجهات الشبكة الخارجية للمضيف. كما يحتوي أيضاً على /usr/lib/systemd/network/80-container-host0.network الذي يطابق الواجهة من جانب الحاوية المنشأة بهذه الطريقة، ويحتوي على إعدادات لتمكين تعيين العناوين من جانب العميل عبر DHCP. في حال كان systemd-networkd يعمل على كل من المضيف وداخل الحاوية، فإن اتصال IP الآلي من الحاوية إلى المضيف يكون متاحاً بذلك، مع إمكانية اتصال أوسع بالشبكة الخارجية.
لاحظ أن --network-veth هو المبدئي في حال استخدم ملف وحدة القالب systemd-nspawn@.service.
لاحظ أن أسماء واجهات الشبكة في لينكس قد يبلغ طولها 15 محرفاً كحد أقصى، بينما قد يصل طول أسماء الحاويات إلى 64 محرفاً. وبما أن هذا الخيار يشتق اسم الواجهة من جانب المضيف من اسم الحاوية، فمن المحتمل أن يُبتر الاسم. لذا، يجب توخي الحذر لضمان بقاء أسماء الواجهات فريدة في هذه الحالة، أو الأفضل من ذلك عدم اختيار أسماء حاويات أطول من 12 محرفاً بشكل عام لتجنب البتر. إذا بُتر الاسم، فسيقوم systemd-nspawn آلياً بإلحاق قيمة هاش مكونة من 4 أرقام بالاسم لتقليل فرصة حدوث تصادمات. ومع ذلك، فإن خوارزمية الهاش ليست خالية تماماً من التصادمات. (انظر systemd.net-naming-scheme(7) للحصول على تفاصيل حول خوارزميات التسمية الأقدم لهذه الواجهة). بدلاً من ذلك، يمكن استخدام الخيار --network-veth-extra=، والذي يسمح بضبط حر لاسم الواجهة من جانب المضيف بشكل مستقل عن اسم الحاوية — ولكن قد يتطلب القليل من الإعداد الإضافي في حال الرغبة في التجسير بطريقة مماثلة لـ --network-bridge=.
أُضيف في الإصدارة 209.
--network-veth-extra=
أُضيف في الإصدارة 228.
--network-bridge=
كما هو الحال مع --network-interface=، يجب أن تكون واجهة شبكة الجسر الأساسية موجودة بالفعل وقت بدء تشغيل الحاوية، وبالتالي قد تكون ملفات الإقحام المماثلة لوحدات الخدمة كما هو موضح أعلاه مفيدة.
أُضيف في الإصدارة 209.
--network-zone=
يجعل هذا الإعداد من السهل وضع عدة حاويات مرتبطة ببعضها في نطاق بث مشترك قائم على الإيثرنت الافتراضي، يُسمى هنا "نطاقاً" (zone). يمكن لكل حاوية أن تكون جزءاً من نطاق واحد فقط، ولكن يمكن لكل نطاق أن يحتوي على أي عدد من الحاويات. يُشار إلى كل نطاق باسمه. يمكن اختيار الأسماء بحرية (طالما أنها تشكل أسماء واجهات شبكة صالحة عند سبقها بـ "vz-")، ويكفي تمرير نفس الاسم إلى مفتاح --network-zone= للحاويات المختلفة التي تعمل في وقت واحد لضمها في نطاق واحد.
لاحظ أن systemd-networkd.service(8) يتضمن افتراضياً ملف شبكة /usr/lib/systemd/network/80-container-vz.network يطابق واجهات الجسر المنشأة بهذه الطريقة، والذي يحتوي على إعدادات لتمكين التزويد الآلي للعناوين على الشبكة الافتراضية المنشأة عبر DHCP، بالإضافة إلى التوجيه الآلي لبروتوكول IP إلى واجهات الشبكة الخارجية للمضيف. استخدام --network-zone= يكون في معظم الحالات آلياً تماماً وكافياً لربط عدة حاويات محلية في نطاق بث منضم بالمضيف، مع إمكانية اتصال أوسع بالشبكة الخارجية.
أُضيف في الإصدارة 230.
--network-namespace-path=
أُضيف في الإصدارة 236.
-p، --port=
أُضيف في الإصدارة 219.
خيارات الأمان
--capability=
إذا مُررت القيمة الخاصة "help"، فسيقوم البرنامج بطباعة أسماء القدرات المعروفة ثم يخرج.
يضبط هذا الخيار مجموعة القدرات المقيدة والتي تحد أيضاً من القدرات المحيطة كما هو معطى مع --ambient-capability=.
أُضيف في الإصدارة 186.
--drop-capability=
إذا مُررت القيمة الخاصة "help"، فسيقوم البرنامج بطباعة أسماء القدرات المعروفة ثم يخرج.
يضبط هذا الخيار مجموعة القدرات المقيدة والتي تحد أيضاً من القدرات المحيطة كما هو معطى مع --ambient-capability=.
أُضيف في الإصدارة 209.
--ambient-capability=
يجب أن تكون جميع القدرات المحددة هنا ضمن المجموعة المسموح بها مع خياري --capability= و --drop-capability=. وإلا، ستُعرض رسالة خطأ.
لا يمكن دمج هذا الخيار مع وضع إقلاع الحاوية (كما هو مطلوب عبر --boot).
إذا مُررت القيمة الخاصة "help"، فسيقوم البرنامج بطباعة أسماء القدرات المعروفة ثم يخرج.
أُضيف في الإصدار 248.
--no-new-privileges=
أُضيف في الإصدار 239.
--system-call-filter=
أُضيف في الإصدارة 235.
-Z، --selinux-context=
أُضيف في الإصدارة 209.
-L، --selinux-apifs-context=
أُضيف في الإصدارة 209.
خيارات الموارد
--rlimit=
أُضيف في الإصدار 239.
--oom-score-adjust=
أُضيف في الإصدار 239.
--cpu-affinity=
أُضيف في الإصدار 239.
--personality=
أُضيف في الإصدارة 209.
خيارات التكامل
--resolv-conf=
إذا ضُبط على "off"، يُترك ملف /etc/resolv.conf في الحاوية كما هو مضمن في الصورة، ولا يُعدل ولا يُوصل فوقه بواسطة bind.
إذا ضُبط على "copy-host"، يُنسخ ملف /etc/resolv.conf من المضيف إلى الحاوية، ما لم يكن الملف موجوداً بالفعل وليس ملفاً عادياً (على سبيل المثال رابط رمزي). وبالمثل، إذا استُخدم "replace-host" فسيُنسخ الملف، مستبدلاً أي inode موجود، بما في ذلك الروابط الرمزية. وبالمثل، إذا استُخدم "bind-host"، يُوصل الملف من المضيف إلى الحاوية بواسطة bind mount.
إذا ضُبط على "copy-static" أو "replace-static" أو "bind-static"، فسيُنسخ ملف resolv.conf الساكن المرفق مع systemd-resolved.service(8) (تحديداً: /usr/lib/systemd/resolv.conf) أو يُوصل في الحاوية.
إذا ضُبط على "copy-uplink" أو "replace-uplink" أو "bind-uplink"، يُنسخ ملف resolv.conf للوصلة الصاعدة (uplink) الذي يديره systemd-resolved.service (تحديداً: /run/systemd/resolve/resolv.conf) أو يُوصل في الحاوية.
إذا ضُبط على "copy-stub" أو "replace-stub" أو "bind-stub"، يُنسخ ملف resolv.conf البديل (stub) الذي يديره systemd-resolved.service (تحديداً: /run/systemd/resolve/stub-resolv.conf) أو يُوصل في الحاوية.
إذا ضُبط على "delete"، يُحذف ملف /etc/resolv.conf في الحاوية إذا وجد.
أخيراً، إذا ضُبط على "auto" يُترك الملف كما هو إذا فُعّلت الشبكة الخاصة (انظر --private-network). وبخلاف ذلك، إذا كان systemd-resolved.service يعمل فسيُستخدم ملف resolv.conf البديل الخاص به، وإذا لم يكن يعمل فسيُستخدم ملف /etc/resolv.conf الخاص بالمضيف. في الحالات الأخيرة، يُنسخ الملف إذا كانت الصورة قابلة للكتابة، ويُوصل بواسطة bind بخلاف ذلك.
يُوصى باستخدام "copy-..." أو "replace-..." إذا كان يجب أن تكون الحاوية قادرة على إجراء تغييرات على إعدادات DNS بنفسها، مع الانحراف عن إعدادات المضيف. بخلاف ذلك، يُفضل "bind"، لأنه يعني أن التغييرات المباشرة على /etc/resolv.conf في الحاوية غير مسموح بها، لأنه وصل bind للقراءة فقط (ولكن لاحظ أنه إذا كانت للحاوية امتيازات كافية، فقد تقوم ببساطة بفصل وصل bind على أي حال). لاحظ أنه سواء وُصل الملف بواسطة bind أو نُسخ، فلا يُجرى عادةً أي نشر إضافي للإعدادات بعد التهيئة المبكرة لمرة واحدة (هذا لأن الملف يُحدث عادةً من خلال النسخ وإعادة التسمية). المبدئي هو "auto".
أُضيف في الإصدار 239.
--timezone=
أُضيف في الإصدار 239.
--link-journal=
لاحظ أن --link-journal=try-guest هو المبدئي في حال استُخدم ملف وحدة القالب systemd-nspawn@.service.
أُضيف في الإصدارة 187.
-j
أُضيف في الإصدارة 187.
خيارات الوصل
--bind=، --bind-ro=
خيارات الوصل مفصولة بفاصلة. يتحكم rbind و norbind في ما إذا كان سيُنشأ وصل bind متكرر (recursive) أو عادي. المبدئي هو rbind. وتتحكم noidmap و idmap و rootidmap و owneridmap في رسم المعرفات (ID mapping).
يتطلب استخدام idmap أو rootidmap أو owneridmap دعماً من نظام ملفات المصدر لعمليات الوصل المرسومة لمعرفات المستخدم/المجموعة. المبدئي هو noidmap. بفرض أن x هو إزاحة نطاق UID للحاوية، و y هو طول نطاق UID للحاوية، و p هو UID المالك لـ inode مصدر وصل bind على المضيف:
أياً كان خيار رسم المعرفات (ID mapping) المستخدم، فسيُستخدم نفس الرسم لمعرفات المستخدمين والمجموعات. إذا استُخدم rootidmap أو owneridmap، فلن يكون للمجموعة المالكة للمجلد الموصول بواسطة bind أي تأثير.
لاحظ أنه عند استخدام هذا الخيار بالاقتران مع --private-users، فإن نقاط الوصل الناتجة ستكون مملوكة للمستخدم nobody. وذلك لأن الوصل وملفاته ومجلداته تظل مملوكة لمستخدمي ومجموعات المضيف المعنيين، والذين لا وجود لهم في الحاوية، وبالتالي يظهرون تحت معرف UID العام 65534 (nobody). إذا أُنشئت مثل هذه الوصلات، فيُوصى بجعلها للقراءة فقط، باستخدام --bind-ro=. بدلاً من ذلك، يمكنك استخدام خيار الوصل "idmap" لرسم معرفات نظام الملفات.
أُضيف في الإصدارة 198.
--bind-user=
يضمن الجمع بين العمليتين أعلاه إمكانية تسجيل الدخول إلى الحاوية باستخدام نفس معلومات الحساب الموجودة على المضيف. يُرسم المستخدم بشكل عابر فقط، أثناء تشغيل الحاوية، ولا يؤدي الرسم نفسه إلى تغييرات مستمرة في الحاوية (باستثناء ربما رسائل السجل الناتجة عند وقت تسجيل الدخول، وما شابه). لاحظ بشكل خاص أن تعيين UID/GID في الحاوية لا يُجرى بشكل مستمر. إذا رُسم المستخدم بشكل عابر، فمن الأفضل عدم السماح للمستخدم بإجراء تغييرات مستمرة على الحاوية. إذا ترك المستخدم ملفات أو مجلدات مملوكة له، وأعيد استخدام معرفات UID/GID هذه أثناء استدعاءات الحاوية اللاحقة (ربما برسم --bind-user= مختلف)، فستكون تلك الملفات والمجلدات متاحة للمستخدم "الجديد".
لا يعمل تعيين سجلات المستخدمين/المجموعات إلا إذا كان الحاوية تحتوي على systemd 249 أو إصدار أحدث، مع ضبط nss-systemd بشكل صحيح في nsswitch.conf. انظر nss-systemd(8) لمزيد من التفاصيل.
لاحظ أن سجل المستخدم المنشور من المضيف إلى الحاوية سيحتوي على هاش كلمة مرور يونكس للمستخدم، بحيث يكون تسجيل الدخول السلس في الحاوية ممكناً. إذا كانت الحاوية أقل ثقة من المضيف، فمن المهم استخدام دالة هاش قوية لكلمة مرور يونكس (مثل yescrypt أو ما شابه، مع بادئة الهاش "$y$").
عند وصل مستخدم من المضيف إلى الحاوية، تُنفذ فحوصات لضمان أن اسم المستخدم ليس معروفاً بعد في الحاوية. علاوة على ذلك، يُفحص أن UID/GID المخصص له غير محدد حالياً في قواعد بيانات المستخدمين/المجموعات للحاوية. كلا الفحصين يصلان مباشرة إلى /etc/passwd و /etc/group في الحاوية، وبالتالي قد لا يكتشفان الحسابات الموجودة في قواعد البيانات الأخرى.
أُضيف في الإصدار 249.
--bind-user-shell=
ملاحظة: لن يتحقق هذا مما إذا كانت الصدف المحددة موجودة في الحاوية.
هذه العملية مدعومة فقط بالاقتران مع --bind-user=.
أُضيف في الإصدار 258.
--bind-user-group=اسم
ملاحظة: لن يتحقق هذا مما إذا كانت المجموعات المحددة موجودة في الحاوية.
هذه العملية مدعومة فقط بالاقتران مع --bind-user=.
أُضيف في الإصدار 259.
--inaccessible=
أُضيف في الإصدارة 242.
--tmpfs=
لاحظ أنه لا يمكن استخدام هذا الخيار لاستبدال نظام الملفات الجذر للحاوية بنظام ملفات مؤقت. ومع ذلك، يوفر الخيار --volatile= الموضح أدناه وظائف مماثلة، مع التركيز على تنفيذ صور أنظمة تشغيل عديمة الحالة.
أُضيف في الإصدارة 214.
--overlay=، --overlay-ro=
تُفسر هروبات الشرطة المائلة العكسية في المسارات، لذا يمكن استخدام "\:" لتضمين النقطتين في المسارات.
إذا حُددت ثلاثة مسارات أو أكثر، فإن المسار الأخير المحدد هو نقطة وصل الوجهة في الحاوية، وجميع المسارات المحددة قبله تشير إلى أشجار أدلة على المضيف وتُدمج بالترتيب المحدد في نظام ملفات تراكبي واحد. ومن ثم يكون المسار الموجود في أقصى اليسار هو شجرة الأدلة الدنيا، والمسار قبل الأخير هو شجرة الأدلة العليا في ترتيب التكديس. إذا استُخدم --overlay-ro= بدلاً من --overlay=، يُنشأ نظام ملفات تراكبي للقراءة فقط. إذا أُنشئ نظام ملفات تراكبي قابل للكتابة، فإن جميع التغييرات التي تجرى عليه تُكتب في شجرة الأدلة العليا في ترتيب التكديس، أي المسار قبل الأخير المحدد.
إذا حُدد مساران فقط، فسيُستخدم المسار الثاني المحدد كشجرة أدلة المستوى الأعلى في ترتيب التكديس كما يُرى من المضيف، وأيضًا كنقطة وصل لنظام الملفات التراكبي في الحاوية. يجب تحديد مسارين على الأقل.
يمكن اختياريًا سبق مسارات المصدر بحرف "+". إذا كان الأمر كذلك، فسيتم أخذها نسبةً إلى الدليل الجذر للصورة. يمكن أيضًا تحديد مسار المصدر العلوي كسلسلة فارغة، وفي هذه الحالة يُستخدم دليل مؤقت تحت /var/tmp/ للمضيف. يُزال الدليل آليًا عند إيقاف تشغيل الحاوية. هذا السلوك مفيد لجعل أدلة الحاوية المخصصة للقراءة فقط قابلة للكتابة أثناء تشغيل الحاوية. على سبيل المثال، استخدم "--overlay=+/var::/var" من أجل تراكب دليل مؤقت قابل للكتابة آليًا على دليل /var/ المخصص للقراءة فقط. إذا لم يكن مسار المصدر مطلقًا، فسيُحلل نسبةً إلى دليل العمل الحالي.
للحصول على تفاصيل حول أنظمة الملفات التراكبية، راجع نظام الملفات التراكبي (Overlay Filesystem)[4]. لاحظ أن دلالات أنظمة الملفات التراكبية تختلف جوهريًا عن أنظمة الملفات العادية، لا سيما فيما يتعلق بمعلومات الجهاز والآينود (inode) المبلغ عنها. قد تتغير معلومات الجهاز والآينود لملف أثناء الكتابة إليه، وقد ترى العمليات إصدارات قديمة من الملفات في بعض الأحيان. لاحظ أن هذا المفتاح يشتق آليًا خيار الوصل "workdir=" لنظام الملفات التراكبي من شجرة أدلة المستوى الأعلى، مما يجعله شقيقًا لها. لذا من الضروري ألا تكون شجرة أدلة المستوى الأعلى نقطة وصل في حد ذاتها (بما أن دليل العمل يجب أن يكون على نفس نظام الملفات مثل شجرة الأدلة العليا). لاحظ أيضًا أن خيار الوصل "lowerdir=" يتلقى مسارات التكديس بترتيب عكسي لهذا المفتاح.
لاحظ أنه لا يمكن استخدام هذا الخيار لاستبدال نظام الملفات الجذر للحاوية بنظام ملفات تراكبي. ومع ذلك، يوفر الخيار --volatile= الموضح أدناه وظائف مماثلة، مع التركيز على تنفيذ صور أنظمة تشغيل عديمة الحالة.
أُضيف في الإصدارة 220.
خيارات الإدخال والإخراج
--console=وضع
في وضع pipe، لن يكون /dev/console موجودًا في الحاوية. هذا يعني أن حمولة الحاوية عمومًا لا يمكن أن تكون نظام تهيئة (init) كاملاً لأن أنظمة التهيئة تميل إلى اشتراط توفر /dev/console. من ناحية أخرى، في هذا الوضع يمكن استخدام استدعاءات الحاوية داخل أنابيب الصدفة. هذا لأن الـ pseudo TTYs الوسيطة لا تسمح بنشر ثنائي الاتجاه مستقل لحالة نهاية الملف (EOF)، وهو أمر ضروري لعمل أنابيب الصدفة بشكل صحيح. لاحظ أنه يجب استخدام وضع pipe بحذر، لأن تمرير واصفات ملفات اعتباطية إلى حمولات حاوية أقل ثقة قد يفتح واجهات غير مرغوب فيها للوصول من قبل حمولة الحاوية. على سبيل المثال، إذا كان واصف الملف الممرر يشير إلى TTY من نوع ما، فقد تُستخدم واجهات برمجة تطبيقات مثل TIOCSTI لتصنيع إدخال قد يُستخدم للهروب من الحاوية. لذا يجب استخدام وضع pipe فقط إذا كانت الحمولة موثوقة بما يكفي أو عندما تكون واصفات ملفات الإدخال/المخرجات/مخرج الخطأ القياسية معروفة بأنها آمنة، مثل الأنابيب.
أُضيف في الإصدارة 242.
--pipe، -P
أُضيف في الإصدارة 242.
--background=COLOR
أُضيف في الإصدار 256.
بيانات الاعتماد
--load-credential=المعرف:المسار، --set-credential=المعرف:القيمة
ملاحظة: عندما يعمل systemd-nspawn كخدمة نظام systemd، يمكنه نشر بيانات الاعتماد التي تلقاها عبر LoadCredential=/SetCredential= إلى حمولة الحاوية. ويمكن لمدير خدمة systemd الذي يعمل كـ PID 1 في الحاوية نشرها بشكل أكبر إلى الخدمات التي يبدأها هو نفسه. وبذلك يمكن بسهولة نشر بيانات الاعتماد من مدير خدمة أب إلى خدمة مدير حاوية ومن هناك إلى حمولتها. يمكن القيام بذلك بشكل عودي حتى.
لتضمين بيانات ثنائية في بيانات الاعتماد لـ --set-credential=، استخدم هروباً بنمط لغة C (أي "\n" لتضمين سطر جديد، أو "\x00" لتضمين بايت NUL). لاحظ أن الصدفة المستدعاة قد تطبق بالفعل إلغاء الهروب مرة واحدة، لذا قد يتطلب ذلك هروباً مزدوجاً!
تقرأ خدمات systemd-sysusers.service(8) و systemd-firstboot(1) بيانات الاعتماد المهيأة بهذه الطريقة لغرض ضبط كلمة سر المستخدم الجذر وصدفته في الحاوية، بالإضافة إلى المحلية ونظام المفاتيح والمنطقة الزمنية للنظام أثناء عملية الإقلاع الأولى للحاوية. هذا مفيد بشكل خاص بالاقتران مع --volatile=yes حيث تظهر كل عملية إقلاع كأنها الإقلاع الأول، بما أن الإعدادات المطبقة على /etc/ تُفقد في دورات إعادة تشغيل الحاوية. راجع صفحات الدليل المعنية لمزيد من التفاصيل. مثال:
# systemd-nspawn -i image.raw \
--volatile=yes \
--set-credential=firstboot.locale:de_DE.UTF-8 \
--set-credential=passwd.hashed-password.root:'$y$j9T$yAuRJu1o5HioZAGDYPU5d.$F64ni6J2y2nNQve90M/p0ZP0ECP/qqzipNyaY9fjGpC' \
-b
سيستدعي سطر الأوامر أعلاه ملف الصورة المحدد image.raw في الوضع المتقلب، أي بمجلدات /etc/ و /var/ فارغة. ستتعرف حمولة الحاوية على هذا كإقلاع أول، وستستدعي خدمة systemd-firstboot.service، التي تقرأ بعد ذلك بيانَي الاعتماد الممررين لضبط محلية النظام الأولية وكلمة سر الجذر.
أُضيف في الإصدار 247.
أخرى
--no-pager
-h، --help
--version
--no-ask-password
مفاتيح الاختصار
عند الاستدعاء في الوضع التفاعلي (أي المبدئي --console=interactive)، تُفهم بعض اختصارات لوحة المفاتيح الخاصة التي تتحكم في وقت تشغيل الحاوية. يجب كتابة هذه الاختصارات في غضون ثانية واحدة لتكون فعالة، وإلا فسيتم توجيهها إلى الحاوية كضغطات مفاتيح عادية.
Ctrl-] Ctrl-] Ctrl-]
Ctrl-] Ctrl-] r
أُضيف في الإصدار 258.
Ctrl-] Ctrl-] p
أُضيف في الإصدار 258.
البيئة
$SYSTEMD_LOG_LEVEL
$SYSTEMD_LOG_COLOR
هذا الإعداد مفيد فقط عندما تُكتب الرسائل مباشرة إلى الطرفية، لأن journalctl(1) والأدوات الأخرى التي تعرض السجلات ستلون الرسائل بناءً على مستوى السجل من تلقاء نفسها.
$SYSTEMD_LOG_TIME
هذا الإعداد مفيد فقط عندما تُكتب الرسائل مباشرة إلى الطرفية أو إلى ملف، لأن journalctl(1) والأدوات الأخرى التي تعرض السجلات ستُرفق طوابع زمنية بناءً على البيانات الوصفية للمدخلات من تلقاء نفسها.
$SYSTEMD_LOG_LOCATION
لاحظ أن موقع السجل غالبًا ما يُرفق كبيانات وصفية بمدخلات اليوميات على أي حال. ومع ذلك، قد يكون تضمينه مباشرة في نص الرسالة مفيدًا عند تنقيح البرامج.
$SYSTEMD_LOG_TID
لاحظ أن هذه المعلومات تُرفق كبيانات وصفية بمدخلات اليوميات على أي حال. ومع ذلك، قد يكون تضمينه مباشرة في نص الرسالة مفيدًا عند تنقيح البرامج.
$SYSTEMD_LOG_TARGET
$SYSTEMD_LOG_RATELIMIT_KMSG
$SYSTEMD_PAGER، $PAGER
ملاحظة: إذا لم يُضبط $SYSTEMD_PAGERSECURE، فلا يمكن استخدام $SYSTEMD_PAGER و $PAGER إلا لتعطيل مستعرض الصفحات (باستخدام "cat" أو "")، ويتم تجاهلهما فيما عدا ذلك.
$SYSTEMD_LESS
قد يرغب المستخدمون في تغيير خيارين على وجه الخصوص:
K
إذا لم تتضمن قيمة $SYSTEMD_LESS الحرف "K"، وكان المستعرض المستدعى هو less، فسيُتجاهل Ctrl+C من قبل الملف التنفيذي، ويجب معالجته من قبل المستعرض.
X
لاحظ أن ضبط متغير البيئة العادي $LESS ليس له أي تأثير عند استدعاء less بواسطة أدوات systemd.
راجع less(1) لمزيد من النقاش.
$SYSTEMD_LESSCHARSET
لاحظ أن ضبط متغير البيئة العادي $LESSCHARSET ليس له أي تأثير عند استدعاء less بواسطة أدوات systemd.
$SYSTEMD_PAGERSECURE
يأخذ هذا الخيار وسيطًا منطقيًا. عند ضبطه على صحيح (true)، يتم تمكين "الوضع الآمن" لمستعرض الصفحات. في "الوضع الآمن"، سيُضبط LESSSECURE=1 عند استدعاء المستعرض، مما يوجه المستعرض لتعطيل الأوامر التي تفتح أو تنشئ ملفات جديدة أو تبدأ عمليات فرعية جديدة. حاليًا، يُعرف فقط less(1) بقدرته على فهم هذا المتغير وتطبيق "الوضع الآمن".
عند الضبط إلى false، لا توضع قيود على أداة التصفح (pager). إن ضبط SYSTEMD_PAGERSECURE=0 أو عدم إزالته من البيئة الموروثة قد يسمح للمستخدم باستدعاء أوامر اعتباطية.
عندما لا يكون $SYSTEMD_PAGERSECURE مضبوطًا، تحاول أدوات systemd آليًا معرفة ما إذا كان ينبغي تفعيل "النمط الآمن" وما إذا كان المستعرض يدعمه. يُفعل "النمط الآمن" إذا كان معرف المستخدم الفعلي ليس هو نفسه مالك جلسة الولوج، انظر geteuid(2) و sd_pid_get_owner_uid(3)، أو عند التشغيل تحت sudo(8) أو أدوات مماثلة ($SUDO_UID مضبوط [6]). في تلك الحالات، سيُضبط SYSTEMD_PAGERSECURE=1 ولن تُستخدم المستعرضات التي لا يُعرف عنها تنفيذ "النمط الآمن" على الإطلاق. لاحظ أن هذا الاكتشاف الآلي يغطي فقط الآليات الأكثر شيوعًا لرفع الامتيازات وهو مخصص للتسهيل. يوصى بضبط $SYSTEMD_PAGERSECURE صراحة أو تعطيل المستعرض.
لاحظ أنه إذا أُريد احترام المتغيرات $SYSTEMD_PAGER أو $PAGER، لغير غرض تعطيل مستعرض الصفحات، فيجب ضبط $SYSTEMD_PAGERSECURE أيضًا.
$SYSTEMD_COLORS
true
false
"16"، "256"، "24bit"
"auto-16"، "auto-256"، "auto-24bit"
$SYSTEMD_URLIFY
أمثلة
المثال 1. نزّل صورة TAR لأوبونتو وافتح صدفة فيها
# importctl pull-tar -mN https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64-root.tar.xz # systemd-nspawn -M jammy-server-cloudimg-amd64-root
ينزل هذا صورة .tar المحددة ويتحقق منها، ثم يستخدم systemd-nspawn(1) لفتح صدفة فيها.
المثال 2. ابنِ وأقلع توزيعة Fedora دنيا في حاوية
# dnf -y --releasever=43 --installroot=/var/lib/machines/f43 \
--use-host-config --setopt=install_weak_deps=0 \
--repo=fedora --repo=updates install \
passwd dnf fedora-release nano util-linux systemd systemd-networkd
# systemd-nspawn -bD /var/lib/machines/f43
(تجاهل --use-host-config عند استخدام dnf أصغر من أو يساوي 4.) يثبت هذا توزيعة Fedora دنيا في الدليل /var/lib/machines/f43 ثم يقلع نظام التشغيل هذا في حاوية فضاء أسماء. نظرًا لأن التثبيت يقع تحت الدليل القياسي /var/lib/machines/، فمن الممكن أيضًا بدء تشغيل الآلة باستخدام systemd-nspawn -M f43.
المثال 3. أنشئ صدفة في حاوية لتوزيعة Debian غير مستقرة دنيا
# debootstrap unstable ~/debian-tree/ # systemd-nspawn -D ~/debian-tree/
يثبت هذا توزيعة Debian غير مستقرة دنيا في الدليل ~/debian-tree/ ثم ينشئ صدفة من هذه الصورة في حاوية فضاء أسماء.
يدعم debootstrap توزيعتي Debian[7]، و Ubuntu[8] تلقائيًا، لذا يمكن استخدام نفس الأمر لتثبيت أي منهما. بالنسبة للتوزيعات الأخرى من عائلة Debian، يجب تحديد مرآة، انظر debootstrap(8).
المثال 4. أقلع توزيعة Arch Linux دنيا في حاوية
# pacstrap -c ~/arch-tree/ base # systemd-nspawn -bD ~/arch-tree/
يثبت هذا توزيعة Arch Linux دنيا في الدليل ~/arch-tree/ ثم يقلع نظام تشغيل في حاوية فضاء أسماء فيها.
المثال 5. ثبت توزيعة OpenSUSE Tumbleweed المتدحرجة
# zypper --root=/var/lib/machines/tumbleweed ar -c \
https://download.opensuse.org/tumbleweed/repo/oss tumbleweed
# zypper --root=/var/lib/machines/tumbleweed refresh
# zypper --root=/var/lib/machines/tumbleweed install --no-recommends \
systemd shadow zypper openSUSE-release vim
# systemd-nspawn -M tumbleweed passwd root
# systemd-nspawn -M tumbleweed -b
المثال 6. أقلع في لقطة عابرة لنظام المضيف
# systemd-nspawn -D / -xb
يشغل هذا نسخة من نظام المضيف في لقطة تُزال فور خروج الحاوية. ستُفقد جميع تغييرات نظام الملفات التي أُجريت أثناء وقت التشغيل عند الإغلاق.
المثال 7. شغل حاوية مع سياقات أمان SELinux المعزولة
# chcon system_u:object_r:svirt_sandbox_file_t:s0:c0,c1 -R /srv/container
# systemd-nspawn -L system_u:object_r:svirt_sandbox_file_t:s0:c0,c1 \
-Z system_u:system_r:svirt_lxc_net_t:s0:c0,c1 -D /srv/container /bin/sh
المثال 8. شغل حاوية مع نشر OSTree
# systemd-nspawn -b -i ~/image.raw \
--pivot-root=/ostree/deploy/$OS/deploy/$CHECKSUM:/sysroot \
--bind=+/sysroot/ostree/deploy/$OS/var:/var
حالة الخروج
يُعاد رمز الخروج للبرنامج الذي نُفذ في الحاوية.
انظر أيضًا
systemd(1)، systemd.nspawn(5)، chroot(1)، dnf(8)، debootstrap(8)، pacman(8)، zypper(8)، systemd.slice(5)، machinectl(1)، importctl(1)، systemd-mountfsd.service(8)، systemd-nsresourced.service(8)، systemd.mstack(7)، btrfs(8)
ملاحظات
- 1.
- واجهة الحاويات
- 2.
- UAPI.2 مواصفات الأقسام القابلة للاكتشاف
- 3.
- مواصفات وقت تشغيل OCI
- 4.
- نظام ملفات Overlay
- 5.
- رمز هروب ANSI (ويكيبيديا)
- 6.
- يوصى للأدوات الأخرى بضبط والتحقق من $SUDO_UID حسب الاقتضاء، ومعاملته كواجهة مشتركة.
- 7.
- ديبايان
- 8.
- أوبونتو
- 9.
- أرتش لينكس
- 10.
- أوبن سوزي تامبلي ويد
ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| systemd 260.1 |