table of contents
- unstable 4.31.0-1
| SYSTEMD.GENERATOR(7) | systemd.generator | SYSTEMD.GENERATOR(7) |
الاسم¶
systemd.generator - مولّدات وحدات systemd
موجز¶
/path/to/generator normal-dir [early-dir] [late-dir]
الوصف¶
المولّدات هي برامج تنفيذية صغيرة موضوعة في /usr/lib/systemd/system-generators/ وأدلة أخرى مذكورة أعلاه. systemd(1) ينفّذ هذه البرامج الثنائية مبكرًا جدًا عند الإقلاع وعند إعادة تحميل الإعدادات — قبل تحميل ملفات الوحدات. غرضها الرئيس هو تحويل معاملات الإعدادات وسياق التنفيذ غير الأصلية لمدير الخدمة إلى ملفات وحدات مولّدة ديناميكيًا، أو روابط رمزية، أو إضافات ملفات وحدات، بحيث يمكنها توسيع تسلسل ملفات الوحدات الذي يقوم مدير الخدمة بتحميله والعمل عليه لاحقًا.
systemd يستدعي كل مولّد مع ثلاثة مسارات أدلة تُستخدم لمخرجات المولّد. في هذه الأدلة الثلاثة، يمكن للمولّدات أن تولّد ديناميكيًا ملفات وحدات (عادية، ونماذج، بالإضافة إلى قوالب)، وإضافات .d/ لملفات الوحدات، وإنشاء روابط رمزية لملفات الوحدات لإضافة تبعيات إضافية، أو إنشاء أسماء مستعارة، أو إنشاء مثيلات من القوالب الموجودة. هذه الأدلة مضمنة في مسار تحميل الوحدات، مما يسمح للإعدادات المولّدة بتوسيع التعريفات الموجودة أو تجاوزها. للاختبارات، قد يُستدعى المولّد بحجة واحدة فقط؛ يجب على المولّد افتراض أن جميع المسارات الثلاثة متطابقة في هذه الحالة.
المولّدات المنفّذة من قبل مدير النظام تُستدعى في صندوق حماية مع دليل /tmp/ خاص قابل للكتابة وحيث معظم نظام الملفات للقراءة فقط باستثناء أدلة مخرجات المولّد.
مسارات الأدلة لمخرجات المولّد تختلف حسب الأولوية: .../generator.early له أولوية أعلى من إعدادات المسؤول في /etc/، بينما .../generator له أولوية أقل من /etc/ لكن أعلى من إعدادات البائع في /usr/، و .../generator.late له أولوية أقل من جميع الإعدادات الأخرى. انظر القسم التالي ونقاش مسارات تحميل الوحدات وتجاوز الوحدات في systemd.unit(5).
المولّدات تُحمّل من مجموعة مسارات محدّدة أثناء التجميع، كما هو مذكور أعلاه. مولّدات النظام والمستخدم تُحمّل من أدلة بأسماء تنتهي بـ system-generators/ و user-generators/، على التوالي. المولّدات الموجودة في الأدلة المذكورة سابقًا تتجاوز تلك التي تحمل نفس الاسم في الأدلة الأدنى في القائمة [1]. رابط رمزي إلى /dev/null أو ملف فارغ يمكن استخدامه لإخفاء مولّد، وبالتالي منعه من التشغيل. يُرجى ملاحظة أن ترتيب الدليلين ذوي الأولوية الأعلى معكوس بالنسبة لمسار تحميل الوحدات، والمولّدات في /run/ تستبدل تلك الموجودة في /etc/.
بعد تثبيت مولّدات جديدة أو تحديث الإعدادات، يمكن تنفيذ systemctl daemon-reload. هذا يحذف الإعدادات السابقة التي أنشأتها المولّدات، ويعيد تشغيل جميع المولّدات، ويجعل systemd يعيد تحميل الوحدات من القرص. انظر systemctl(1) لمزيد من المعلومات.
أدلة المخرجات¶
المولّدات تُستدعى مع ثلاث وسائط: مسارات إلى أدلة حيث يمكن للمولّدات وضع ملفات الوحدات المولّدة أو الروابط الرمزية. افتراضيًا، هذه المسارات هي أدلة وقت تشغيل مضمنة في مسار البحث لـ systemd، لكن قد يُستدعى المولّد بمسارات مختلفة لأغراض التصحيح. إذا تم توفير وسيطة واحدة فقط، يجب على المولّد استخدام نفس الدليل كمسارات المخرجات الثلاثة.
في الاستخدام العادي هذا هو /run/systemd/generator في حالة مولّدات النظام و $XDG_RUNTIME_DIR/systemd/generator في حالة مولّدات المستخدم. ملفات الوحدات الموضوعة في هذا الدليل لها أولوية على إعدادات وحدات البائع لكن ليس على إعدادات وحدات المستخدم/المسؤول الأصلية.
في الاستخدام العادي هذا هو /run/systemd/generator.early في حالة مولّدات النظام و $XDG_RUNTIME_DIR/systemd/generator.early في حالة مولّدات المستخدم. ملفات الوحدات الموضوعة في هذا الدليل تتجاوز ملفات الوحدات في /usr/ و /run/ و /etc/. هذا يعني أن ملفات الوحدات الموضوعة في هذا الدليل لها أولوية على جميع الإعدادات العادية، سواء البائع أو المستخدم/المسؤول.
في الاستخدام العادي هذا هو /run/systemd/generator.late في حالة مولّدات النظام و $XDG_RUNTIME_DIR/systemd/generator.late في حالة مولّدات المستخدم. هذا الدليل يمكن استخدامه لتوسيع شجرة ملفات الوحدات دون تجاوز أي ملفات وحدات أخرى. أي ملفات إعدادات أصلية مقدمة من البائع أو المستخدم/المسؤول لها أولوية.
ملاحظة: يجب ألا تكتب المولدات إلى مواقع أخرى أو تُجري تغييرات أخرى على حالة النظام. من المفترض أن يستمر ناتج المولد فقط حتى إعادة تحميل الخفي daemon-reload أو إعادة تنفيذ الخفي daemon-reexec التالية؛ إذا تم استبدال المولد أو إخفاؤه، يجب أن تختفي تأثيراته.
البيئة¶
يُعيّن مدير الخدمة عددًا من متغيرات البيئة عند استدعاء ملفات المولدات القابلة للتنفيذ. تحمل هذه المتغيرات معلومات حول سياق تنفيذ المولد، وذلك لتبسيط تكييف المولدات مع بيئات محددة. تُعيّن متغيرات البيئة التالية:
$SYSTEMD_SCOPE
أُضيف في الإصدار 251.
$SYSTEMD_IN_INITRD
أُضيف في الإصدار 251.
$SYSTEMD_SOFT_REBOOTS_COUNT
أُضيف في الإصدار 257.
$SYSTEMD_FIRST_BOOT
أُضيف في الإصدار 251.
$SYSTEMD_VIRTUALIZATION
أُضيف في الإصدار 251.
$SYSTEMD_ARCHITECTURE
أُضيف في الإصدار 251.
$CREDENTIALS_DIRECTORY، $ENCRYPTED_CREDENTIALS_DIRECTORY
أُضيف في الإصدار 254.
$SYSTEMD_CONFIDENTIAL_VIRTUALIZATION
أُضيف في الإصدار 254.
ملاحظات حول كتابة المولدات¶
لاحظ أنه باستخدام إعدادات StandardInputData=/StandardInputText= لملفات وحدات الخدمة (انظر systemd.exec(5))، من الممكن جعل بيانات إدخال عشوائية (بما في ذلك تهيئة خاصة بالخفي) جزءًا من تعريفات الوحدة، والتي قد تكون غالبًا كافية لتضمين بيانات أو تهيئة لبرامج أخرى في ملفات الوحدة بطريقة أصلية.
يجب استخدام التوجيه SourcePath= في الملفات المُولدة لتحديد ملف التهيئة المصدر الذي تُولد منه. هذا يجعل الأمور أكثر سهولة في الفهم للمستخدم وله أيضًا فائدة أن systemd يمكنه تحذير المستخدم حول ملفات التهيئة التي تغيرت على القرص ولكن لم تُقرأ بعد بواسطة systemd. لا يجب أن تكون قيمة SourcePath= ملفًا في نظام ملفات فعلي. على سبيل المثال، في الحالة الشائعة حيث ينظر المولد إلى سطر أوامر النواة، يجب استخدام SourcePath=/proc/cmdline.
من بين هاتين القاعدتين، القاعدة الأولى هي الأكثر أهمية على الأرجح، وتنتهك القاعدة الثانية أحيانًا. لذلك، عند تحديد ما إذا كنت ستستخدم argv[1] أو argv[2] أو argv[3]، فاختيارك المبدئي ينبغي أن يكون argv[1].
أمثلة¶
مثال 1. systemd-fstab-generator
systemd-fstab-generator(8) يحول /etc/fstab إلى وحدات وصل أصلية. يستخدم argv[1] كموقع لوضع ملفات الوحدات المُنشأة للسماح للمستخدم بتجاوز /etc/fstab بملفات الوحدات الأصلية الخاصة به، ولكن أيضًا لضمان تجاوز /etc/fstab لأي إعداد مبدئي من البائع من /usr/.
بعد تحرير /etc/fstab، ينبغي على المستخدم استدعاء systemctl daemon-reload. هذا يُعيد تشغيل جميع المولدات ويُجبر systemd على إعادة تحميل الوحدات من القرص. لوصل الدلائل الجديدة المُضافة إلى fstab فعليًا، يمكن استخدام systemctl start /path/to/mountpoint أو systemctl start local-fs.target.
مثال 2. systemd-system-update-generator
systemd-system-update-generator(8) يُعيد توجيه default.target مؤقتًا إلى system-update.target، إذا كان تحديث النظام مُجدولاً. نظرًا لأن هذا يحتاج إلى تجاوز إعداد المستخدم المبدئي لـ default.target، فإنه يستخدم argv[2]. للتفاصيل حول هذا المنطق، انظر systemd.offline-updates(7).
المثال 3. تنقيح مولد
dir=$(mktemp -d) SYSTEMD_LOG_LEVEL=debug /usr/lib/systemd/system-generators/systemd-fstab-generator \
"$dir" "$dir" "$dir" find $dir
انظر أيضًا¶
systemd(1), systemd-cryptsetup-generator(8), systemd-debug-generator(8), systemd-fstab-generator(8), fstab(5), systemd-getty-generator(8), systemd-gpt-auto-generator(8), systemd-hibernate-resume-generator(8), systemd-system-update-generator(8), systemd-xdg-autostart-generator(8), systemd.unit(5), systemctl(1), systemd.environment-generator(7)
ملاحظات¶
- 1.
- 💣💥🧨💥💥💣 يرجى ملاحظة أن ملفات الضبط تلك يجب أن تكون متوفرة في جميع الأوقات. إذا كان /usr/local/ قسماً منفصلاً، فقد لا يكون متوفراً أثناء بدء التشغيل المبكر، ويجب عدم استخدامه للضبط.
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| systemd 261~rc3 |