| SYSUPDATE.D(5) | sysupdate.d | SYSUPDATE.D(5) |
الاسم¶
sysupdate.d - ملفات تعريف النقل للتحديثات الآلية
موجز¶
الوصف¶
تصف هذه الملفات كيفية تحديث موارد معينة على النظام المحلي من مصدر بعيد. يُعرّف كل ملف من هذه الملفات عملية نقل واحدة: عادةً ما يكون مورد HTTP/HTTPS بعيد كمصدر؛ وملف محلي أو دليل أو قسم كهدف. يمكن استخدام هذا كآلية تحديث بسيطة وآلية وذرية لنظام التشغيل نفسه، أو للحاويات، أو الخدمات المحمولة، أو صور امتدادات النظام — ولكن في الواقع يمكن استخدامه لتحديث أي نوع من الملفات من مصدر بعيد.
يقرأ الأمر systemd-sysupdate(8) هذه الملفات ويستخدمها لتحديد الموارد المحلية التي ينبغي تحديثها، ثم يُنفّذ التحديث.
عادةً ما يتواجد كل من مصدر HTTP/HTTPS البعيد والهدف المحلي في إصدارات متعددة ومتزامنة، وذلك لتنفيذ مخططات تحديث مرنة، مثل تحديث A/B (أو مجموعة شاملة منها، مثل A/B/C، A/B/C/D، ...).
يُعرّف كل ملف *.transfer عملية نقل واحدة، أي يصف مورداً واحداً لتحديثه. وعادةً ما تُعرّف ملفات متعددة من هذه الملفات (أي عمليات نقل متعددة كهذه) معاً، وتُربط معاً بواسطة معرف إصدار مشترك من أجل تحديث موارد متعددة دفعة واحدة في كل عملية تحديث، على سبيل المثال لتحديث نواة ونظام ملفات جذر وقسم Verity في عملية واحدة مدمجة ومتزامنة، بحيث لا يشكل سوى التحديث المدمج لجميع الثلاثة معاً تحديثاً كاملاً. سنسمي هذه المجموعة من عمليات النقل هدفاً. ويعمل systemd-sysupdate(8) دائماً على هدف واحد.
يمكن تجميع عمليات النقل معاً في مجموعات يمكن لمدير النظام تمكينها أو تعطيلها بشكل فردي، وتسمى "الميزات الاختيارية": sysupdate.features(5).
يحتوي كل ملف *.transfer على ثلاثة أقسام: [Transfer] و [Source] و [Target].
وضع التشغيل الأساسي¶
تتكون تحديثات نظام التشغيل المستندة إلى صور الأقراص عادةً من موارد مختلفة متعددة يجب تحديثها معاً، على سبيل المثال قد يتكون تحديث نظام التشغيل الآمن من صورة نظام ملفات جذر لوضعها في قسم، وصورة قسم بيانات سلامة Verity مطابقة، وصورة نواة مجهزة للإقلاع في مزيج من القسمين. الموردان الأولان هما ملفان يُنزّلان ويُوضعان في قسم قرص، والأخير هو ملف يُنزل ويُوضع في ملف عادي في نظام ملفات الإقلاع (مثل قسم نظام EFI). وبالتالي، أثناء تحديث نظام تشغيل افتراضي "foobarOS" إلى إصدار افتراضي 47 ينبغي أن تحدث العمليات التالية:
التعميم المستقل عن الإصدار لهذا سيكون (باستخدام العلامة الخاصة "@v" كرمز بديل لمعرف الإصدار):
لا يمكن للتحديث أن يكتمل إلا إذا وفرت عناوين URL ذات الصلة مواردها لنفس الإصدار، أي لنفس قيمة "@v".
يمكن ترجمة ما سبق إلى ثلاثة ملفات *.transfer في sysupdate.d/، واحد لكل مورد يراد نقله. تضبط ملفات *.transfer نوع التنزيل، والمكان الذي تُكتب فيه المادة المنزلة (أي سواء كان ذلك إلى قسم أو ملف في نظام الملفات). والأهم من ذلك، تحتوي هذه الملفات على أنماط عنوان URL واسم القسم واسم الملف الموضحة أعلاه والتي تصف كيفية تسمية هذه الموارد في المصدر وكيفية تسميتها في الهدف.
من أجل سرد الإصدارات المتاحة ومعرفة المرشحين للتحديث إليهم، من الضروري وجود آلية لسرد الملفات المناسبة:
تُجرى عمليات النقل بالترتيب الأبجدي لأسماء ملفات .transfer المعرفة فيها. أولاً، تُنزل بيانات المورد مباشرة في ملف/دليل/قسم مستهدف. بمجرد اكتمال ذلك لجميع عمليات النقل المعرفة، تُغير أسماء الملفات/الأدلة/الأقسام في خطوة ثانية إلى أسمائها النهائية كما هو محدد في الـ MatchPattern= المستهدف، ومرة أخرى بالترتيب الذي تمليه أسماء ملفات النقل .transfer. هذه الخطوة ليست ذرية، ومع ذلك يُضمن تنفيذها بدقة بالترتيب مع وجود تزامن قرص مناسب. عادةً، عند تحديث نظام تشغيل، تحدد إحدى عمليات النقل نقطة الدخول عند الإقلاع. وبالتالي، فإنها فكرة جيدة عموماً ترتيب الموارد عبر أسماء ملفات تكوين النقل بحيث تُكتب نقطة الدخول أخيراً، مما يضمن أن أي إنهاء غير طبيعي لا يترك نقطة دخول لم يُؤسس دعمها بعد. في المثال أعلاه، سيكون من المنطقي تأسيس صورة نواة EFI في النهاية وبالتالي إعطاء ملف تكوين النقل الخاص بها الاسم الأخير أبجدياً.
انظر أدناه للحصول على مثال موسع وأكثر تحديداً بناءً على ما سبق.
أنواع الموارد¶
يُعرّف كل ملف نقل مورداً مصدرياً واحداً لنقله إلى مورد مستهدف واحد. أنواع الموارد التالية مدعومة:
كما أُشير بالفعل، فإن مجموعة فرعية فقط من تركيبات أنواع الموارد المصدرية والمستهدفة مدعومة:
الجدول 1. أنواع
الموارد
| المعرف | الوصف | صالح للاستخدام كمصدر | عند استخدامه كمصدر: الأهداف المتوافقة | عند استخدامه كمصدر: السلامة + الاستيثاق | عند استخدامه كمصدر: فك الضغط | صالح للاستخدام كهدف | عند استخدامه كهدف: المصادر المتوافقة |
| url-file | ملفات HTTP/HTTPS | نعم | regular-file, partition | نعم | نعم | no | - |
| url-tar | أرشيفات .tar عبر HTTP/HTTPS | نعم | directory, subvolume | نعم | نعم | no | - |
| regular-file | ملفات محلية | نعم | regular-file, partition | no | نعم | نعم | url-file, regular-file |
| partition | أقسام GPT محلية | no | - | - | - | نعم | url-file, regular-file |
| tar | أرشيفات .tar محلية | نعم | directory, subvolume | no | نعم | no | - |
| directory | أدلة محلية | نعم | directory, subvolume | no | no | نعم | url-tar, tar, directory, subvolume |
| subvolume | أحجام فرعية btrfs محلية | نعم | directory, subvolume | no | no | نعم | url-tar, tar, directory, subvolume |
تتبع ملفات بيان SHA256SUMS المستخدمة من قبل أنواع الموارد url-file و url-tar تنسيق الملف المعتاد الذي يتم إنشاؤه بواسطة أداة GNU المسماة sha256sum(1). يُوصى باستخدام نمط --binary، حتى وإن لم يكن له تأثير حقيقي على أنظمة لينكس . يجب أن تحتوي القائمة على أحرف ASCII فقط، وأسماء ملفات عادية فقط (أي لا تحتوي على مسارات مطلقة أو نسبية). إذا كانت قائمة SHA256SUMS تحتوي على ملف خاص يحمل الاسم BEST-BEFORE-YYYY-MM-DD (مع ملء السنة والشهر واليوم)، فلن تعتبر قائمة الملفات صالحة بعد التاريخ المحدد، وسيفشل النقل في مثل هذه الحالة . يمكن استخدام هذا لاكتشاف "حداثة" freshness ملف البيان .
أنماط المطابقة¶
عادةً ما يتواجد كل من المورد المصدري والمستهدف في إصدارات متعددة بالتزامن. تُجرى عملية التحديث كلما كان أحدث الإصدارات المصدرية أحدث من أحدث الإصدارات المستهدفة. لتحديد أحدث إصدار للموارد، يُستخدم سرد الدليل أو سرد الأقسام أو سرد البيان، وتُحدد مجموعة فرعية من المدخلات المؤهلة من ذلك، ويُستخرج معرف الإصدار من أسماء الملفات أو لصائق الأقسام لهذه المدخلات المحددة. يُجرى اختيار المجموعة الفرعية واستخراج معرف الإصدار (بالإضافة إلى البيانات الوصفية الأخرى المحتملة) عبر أنماط المطابقة، المكونة في MatchPattern= في قسمي [Source] و [Target]. هذه الأنماط هي سلاسل نصية تصف كيفية تسمية الملفات أو الأقسام، مع رموز بديلة مسماة لحقول معينة مثل معرف الإصدار. الرموز البديلة التالية معرفة:
الجدول 2. الرموز
البديلة
لأنماط
المطابقة
| الرمز البديل | الوصف | Format | ملاحظات |
| "@v" | معرف الإصدار | سلسلة إصدار صالحة | إلزامي |
| "@u" | معرف UUID لقسم GPT | سلسلة UUID صالحة بحجم 128 بت | ذو صلة فقط إذا اختير نوع المورد المستهدف كـ partition |
| "@f" | أعلام قسم GPT | عدد صحيح ست عشري منسق | ذو صلة فقط إذا اختير نوع المورد المستهدف كـ partition |
| "@a" | علم قسم GPT NoAuto | إما "0" أو "1" | يتحكم في بت NoAuto الخاص بأعلام قسم GPT، وفقًا لـ مواصفة الأقسام القابلة للاكتشاف UAPI.2[1]؛ ولا يكون ذا صلة إلا إذا اختير نوع المورد الهدف ليكون partition |
| "@g" | علم قسم GPT GrowFileSystem | إما "0" أو "1" | يتحكم في بت GrowFileSystem الخاص بأعلام قسم GPT، وفقًا لـ مواصفة الأقسام القابلة للاكتشاف UAPI.2[1]؛ ولا يكون ذا صلة إلا إذا اختير نوع المورد الهدف ليكون partition |
| "@r" | علم القراءة فقط | إما "0" أو "1" | يتحكم في بت ReadOnly لأعلام قسم GPT، وفقًا لـ UAPI.2 Discoverable Partitions Specification[1]وأعلام المخرجات الأخرى للقراءة فقط، انظر ReadOnly= أدناه |
| "@t" | وقت تعديل الملف | عدد صحيح عشري منسق، بالميكرو ثانية منذ حقبة يونكس 1 يناير 1970 | لا يكون ذا صلة إلا إذا اختير نوع المورد الهدف ليكون regular-file |
| "@m" | وضع الوصول للملف | عدد صحيح ثماني منسق، بأسلوب يونكس | لا يكون ذا صلة إلا إذا اختير نوع المورد الهدف ليكون regular-file |
| "@s" | حجم الملف بعد فك الضغط | عدد صحيح عشري منسق | مفيد لقياس التقدم ولتحسين منطق تخصيص الأقسام |
| "@d" | المحاولات المجراة | عدد صحيح عشري منسق | مفيد عند العمل مع ملفات صور النواة، وفقًا لـ تقييم الإقلاع الآلي[3] |
| "@l" | المحاولات المتبقية | عدد صحيح عشري منسق | مفيد عند العمل مع ملفات صور النواة، وفقًا لـ تقييم الإقلاع الآلي[3] |
| "@h" | مفرومة SHA256 للملف المضغوط | 64 محرفًا ست عشريًا | مفرومة SHA256 للملف المضغوط؛ وليست مفيدة لـ url-file أو url-tar حيث تُضمن مفرومة SHA256 بالفعل في ملف البيان على أي حال |
من بين هذه الأحرف البديلة، يجب فقط وجود "@v" في النمط الصالح، وتعد جميع الأحرف البديلة الأخرى اختيارية. يمكن استخدام كل حرف بديل مرة واحدة على الأكثر في كل نمط. يمكن أن يكون النمط البديل النموذجي الذي يطابق صورة مصدر نظام الملفات هو "MatchPattern=foobar_@v.raw.xz"، أي أي ملف يبدأ اسمه بـ "foobar_"، متبوعًا بمعرف الإصدار وينتهي بـ ".raw.xz".
لا تخلط بين بادئة الحرف البديل لمطابقة الأنماط "@" وبادئة توسيع المحدد "%". حيث تُغلف الأولى جزءًا متغيرًا من سلسلة نمط المطابقة، بينما تعد الأخيرة اختصارات بسيطة تُوسع أثناء تحليل ملفات الإسقاط. لمزيد من التفاصيل حول المحددات، انظر أدناه.
خيارات قسم [TRANSFER]¶
يحدد هذا القسم الخصائص العامة لعملية النقل هذه.
MinVersion=
أُضيف في الإصدار 251.
ProtectVersion=
يدعم هذا الإعداد توسيع المحددات كحال العديد من الإعدادات في ملفات الضبط هذه. ويفيد خصوصًا ضبط هذا الإعداد على أحد المحددات "%A" أو "%B" أو "%w" للإشارة آليًا إلى إصدار نظام التشغيل الحالي للنظام المشغل. انظر أدناه للتفاصيل حول المحددات المدعومة.
أُضيف في الإصدار 251.
Verify=
يعد هذا الخيار أساسيًا لتوفير ضمانات السلامة للموارد المنزلة ولذا ينبغي تركه مفعلًا، خارج بيئات الاختبار.
لاحظ أن ملفات الحمولة المنزلة يُفحص صحتها دون شروط مقابل مفرومات SHA256 المدرجة في البيان. يتحكم هذا الخيار فقط في الاستيثاق من تواقيع هذه البيانات.
لا يكون لهذا الخيار تأثير إلا إذا اختير نوع مورد المصدر ليكون url-file أو url-tar، حيث إن فحص السلامة والاستيثاق متاحان فقط لعمليات النقل من المصادر البعيدة.
أُضيف في الإصدار 251.
ChangeLog=
يمكن ضبط هذا لمرات متعددة في تعريف نقل واحد. وإذا ضُبط لمرات متعددة، تُجمع القيم في قائمة من روابط URL. وتؤدي إضافة قيمة عبارة عن سلسلة نصية فارغة إلى مسح القائمة الحالية من جميع القيم.
يدعم هذا الإعداد توسيع المحددات. انظر أدناه للتفاصيل حول المحددات المدعومة. سيوسع هذا الإعداد أيضًا نمط الحرف البديل "@v". انظر أعلاه للتفاصيل.
أُضيف في الإصدار 257.
AppStream=
يدعم هذا الإعداد توسيع المحددات. انظر أدناه للتفاصيل حول المحددات المدعومة.
أُضيف في الإصدار 257.
Features=
إذا كانت قائمة الميزات فارغة، فسيُستخدم هذا النقل دائمًا. وإذا كان هذا النقل ينتمي إلى أكثر من ميزة واحدة، فسيُستخدم إذا كانت أي واحدة من الميزات المدرجة مفعلة. الاسم الذي لا يتطابق مع ميزة محددة سيؤول إلى ميزة ضمنية تكون معطلة دائمًا.
أُضيف في الإصدار 257.
RequisiteFeatures=
أُضيف في الإصدار 257.
خيارات قسم [SOURCE]¶
يحدد هذا القسم خصائص مصدر النقل.
Type=
لاحظ أن تركيبات معينة فقط من أنواع موارد المصدر والهدف هي المدعومة، انظر أعلاه.
أُضيف في الإصدار 251.
Path=
إذا اختير نوع المصدر ليكون url-file أو url-tar فيجب أن يكون هذا رابط HTTP/HTTPS URL. ويُلحق برابط URL اللاحقة /SHA256SUMS للحصول على ملف البيان، وباللاحقة /SHA256SUMS.gpg للحصول على ملف التوقيع المنفصل له، وبأسماء الملفات المدرجة في ملف البيان في حال تنفيذ تحديث وتنزيل المورد.
بالنسبة لجميع أنواع موارد المصدر الأخرى، يجب أن يكون هذا مسارًا محليًا في نظام الملفات، يشير إلى دليل محلي للعثور على إصدارات هذا المورد فيه.
أُضيف في الإصدار 251.
MatchPattern=
هذا الخيار إلزامي. يجب أن يحتوي أي نمط مدرج على الأقل على الحرف البديل "@v"، بحيث يمكن استخراج معرف الإصدار من اسم الملف. وتعد جميع الأحرف البديلة الأخرى اختيارية.
إذا كان نوع المصدر regular-file أو directory، فقد يحتوي النمط على محارف الشرطة المائلة. وفي هذه الحالة، سيطابق الملف أو الدليل في الدليل الفرعي المقابل. على سبيل المثال "MatchPattern=foo_@v/bar.efi" سيطابق "bar.efi" في الدليل "foo_1".
أُضيف في الإصدار 251.
خيارات قسم [TARGET]¶
يحدد هذا القسم خصائص هدف النقل.
Type=
لاحظ أن تركيبات معينة فقط من أنواع موارد المصدر والهدف هي المدعومة، انظر أعلاه.
أُضيف في الإصدار 251.
Path=
لاحظ أنه لا يمكن استخدام هذه الآلية لإنشاء الأقسام أو إزالتها، في حال ضبط Type= على partition. إذ يجب أن تكون الأقسام موجودة بالفعل، وتُستخدم لصيقة قسم خاصة "_empty" للإشارة إلى الأقسام الفارغة. لتوليد أقسام مناسبة آليًا عند الإقلاع الأول، استخدم أداة مثل systemd-repart(8).
أُضيف في الإصدار 251.
PathRelativeTo=
إذا ضُبط على root أو esp أو xbootldr، فسيُحل المسار Path= المحدد نسبيًا إلى نقطة وصل القسم المقابل، كما هو معرف في مواصفة محمل الإقلاع UAPI.1[2].
إذا ضُبط على boot، فسيُحل المسار Path= المحدد نسبيًا إلى نقطة وصل قسم $BOOT (أي ESP أو XBOOTLDR)، كما هو معرف في مواصفة محمل الإقلاع UAPI.1[2].
إذا ضُبط على explicit، فسيُحل المسار Path= المحدد نسبيًا إلى الدليل المحدد باستخدام --transfer-source= عند استدعاء systemd-sysupdate(8).
القيم esp و xbootldr و boot مدعومة فقط عندما يكون Type= مضبوطًا على regular-file أو directory.
أُضيف في الإصدار 254.
MatchPattern=
هذا الخيار إلزامي. يجب أن يحتوي أي نمط مدرج على الأقل على الحرف البديل "@v"، بحيث يمكن استخراج معرف الإصدار من اسم الملف. وتعد جميع الأحرف البديلة الأخرى اختيارية.
يُستخدم هذا النمط لمطابقة الإصدارات المثبتة الحالية ولتحديد اسم الإصدارات الجديدة المراد تثبيتها. إذا حُدِّدَتْ أنماط متعددة، فإن النمط الأول المحدد يُستخدم لتسمية الإصدارات المثبتة حديثًا.
إذا كان نوع الهدف هو regular-file أو directory، فقد يحتوي النمط على محارف المائلة (slash). وفي هذه الحالة، فإنه سيطابق الملف أو الدليل في الدليل الفرعي المقابل. على سبيل المثال "MatchPattern=foo_@v/bar.efi" سيطابق "bar.efi" في الدليل "foo_1". ستُنشَأ الأدلة في المسار عند تثبيت الملف. وتُزال الأدلة الفارغة عند إزالة الملف.
أُضيف في الإصدار 251.
MatchPartitionType=
أُضيف في الإصدار 251.
PartitionUUID=, PartitionFlags=, PartitionNoAuto=, PartitionGrowFileSystem=
لاحظ أن هذه الإعدادات لا تُستخدم للمطابقة، بل لها تأثير فقط على الأقسام المكتوبة حديثًا في حال حدوث عملية نقل.
أُضيف في الإصدار 251.
ReadOnly=
أُضيف في الإصدار 251.
Mode=
لاحظ أن هذا الإعداد لا يُستخدم للمطابقة، بل له تأثير فقط على الملفات المكتوبة حديثًا عند حدوث عملية نقل.
أُضيف في الإصدار 251.
TriesDone=, TriesLeft=
أُضيف في الإصدار 251.
InstancesMax=
لاحظ أنه يجوز ضبط هذا الإعداد بشكل مختلف لكل عملية نقل. ومع ذلك، يُنصح عمومًا بالحفاظ على هذا الإعداد كما هو لجميع عمليات النقل، لأنه بخلاف ذلك ستُترك تركيبات غير مكتملة من الملفات أو الأقسام مثبتة.
إذا اختير Type= المستهدف كـ partition، فإن عدد الإصدارات المتزامنة المراد الاحتفاظ بها يكون مقيدًا بشكل إضافي بعدد فتحات الأقسام من النوع الصحيح في جدول الأقسام. أي أنه إذا كان هناك فتحتا أقسام فقط لنوع القسم المحدد، فإن ضبط هذه القيمة لتكون أكبر من 2 لن يكون له تأثير، إذ لا يمكن تخزين أكثر من إصدارين متزامنين في الصورة على أي حال.
أُضيف في الإصدار 251.
RemoveTemporary=
أُضيف في الإصدار 251.
CurrentSymlink=
أُضيف في الإصدار 251.
المحددات¶
يجوز استخدام المحددات في إعدادات MinVersion= و ProtectVersion= و Path= و MatchPattern= و CurrentSymlink=. وتُفهم التوسعات التالية:
الجدول 3. المحددات
المتاحة
| المحدد | المعنى | التفاصيل |
| "%a" | المعمارية | سلسلة نصية قصيرة تحدد معمارية النظام المحلي. سلسلة مثل x86 أو x86-64 أو arm64. انظر المعماريات المحددة لـ ConditionArchitecture= في systemd.unit(5) للحصول على قائمة كاملة. |
| "%A" | إصدار صورة نظام التشغيل | معرف إصدار صورة نظام التشغيل للنظام المشغل، كما يُقرأ من حقل IMAGE_VERSION= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات. |
| "%b" | معرف الإقلاع | معرف الإقلاع للنظام المشغل، منسق كسلسلة نصية. انظر random(4) لمزيد من المعلومات. |
| "%B" | معرف بناء نظام التشغيل | معرف بناء نظام التشغيل للنظام المشغل، كما يُقرأ من حقل BUILD_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات. |
| "%H" | اسم المضيف | اسم مضيف النظام المشغل. |
| "%l" | اسم المضيف القصير | اسم مضيف النظام المشغل، مقتطعًا عند النقطة الأولى لإزالة أي مكون نطاق. |
| "%m" | معرف الآلة | معرف الجهاز للنظام المشغل، منسق كسلسلة نصية. انظر machine-id(5) لمزيد من المعلومات. |
| "%M" | معرف صورة نظام التشغيل | معرف صورة نظام التشغيل للنظام المشغل، كما يُقرأ من حقل IMAGE_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات. |
| "%o" | معرف نظام التشغيل | معرف نظام التشغيل للنظام المشغل، كما يُقرأ من حقل ID= في /etc/os-release. انظر os-release(5) لمزيد من المعلومات. |
| "%v" | إصدار النواة | مطابق لمخرجات uname -r. |
| "%w" | معرف إصدار نظام التشغيل | معرف إصدار نظام التشغيل للنظام المشغل، كما يُقرأ من حقل VERSION_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات. |
| "%W" | معرف نوع نظام التشغيل | معرف تنويعة نظام التشغيل للنظام المشغل، كما يُقرأ من حقل VARIANT_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات. |
| "%T" | مجلد للملفات المؤقتة | هذا إما /tmp أو المسار الذي ضُبطت إليه "$TMPDIR" أو "$TEMP" أو "$TMP". (لاحظ أن الدليل قد يُحدد بدون شرطة مائلة لاحقة.) |
| "%V" | مجلد للملفات المؤقتة الأكبر حجمًا والمستمرة | هذا إما /var/tmp أو المسار الذي ضُبطت إليه "$TMPDIR" أو "$TEMP" أو "$TMP". (لاحظ أن الدليل قد يُحدد بدون شرطة مائلة لاحقة.) |
| "%%" | علامة مئوية مفردة | استخدم "%%" بدلاً من "%" لتحديد علامة مئوية مفردة. |
لا تخلط بين بادئة توسيع المحدد "%" وبادئة الرمز البديل لمطابقة الأنماط "@". فالأولى عبارة عن اختصارات بسيطة تُوسع أثناء تحليل ملفات الإسقاط (drop-in files)، بينما تلخص الأخيرة جزءًا متغيرًا من سلسلة نمط المطابقة. للحصول على تفاصيل حول رموز مطابقة الأنماط البديلة، انظر أعلاه.
أمثلة¶
مثال 1. تحديثات لنظام تشغيل آمن مُمكّن فيه Verity
باستخدام الملفات الثلاثة التالية، نحدد قسم نظام ملفات رئيس، وقسم Verity مطابق، وصورة نواة موحدة لتحديثها ككتلة واحدة. هذا المثال عبارة عن امتداد للمثال الذي نُوقش سابقًا في صفحة الدليل هذه.
# /usr/lib/sysupdate.d/50-verity.transfer [Transfer] ProtectVersion=%A [Source] Type=url-file Path=https://download.example.com/ MatchPattern=foobarOS_@v_@u.verity.xz [Target] Type=partition Path=auto MatchPattern=foobarOS_@v_verity MatchPartitionType=root-verity PartitionFlags=0 ReadOnly=1
يحدد ما ورد أعلاه آلية التحديث لقسم Verity لنظام الملفات الرئيس. تُنزَّل صور أقسام Verity من "https://download.example.com/foobarOS_@v_@u.verity.xz" وتُكتب في قسم محلي مناسب، والذي يُعلم عليه كقراءة فقط. بافتراض أن هذا التحديث يُشغل من الصورة نفسها، فإن إصدار الصورة الحالي (أي المحدد "%A") يُعلم عليه كمحمي، لضمان عدم تلفه أثناء الإقلاع. لاحظ أن معرف UUID للقسم المستهدف مُرمز في اسم ملف المصدر. يمكن أن يكون تثبيت معرف UUID للقسم مفيدًا لضمان أن "roothash=" في سطر أوامر النواة كافٍ لتحديد كل من قسم Verity وقسم نظام الملفات الرئيس بدقة، وأيضًا ترميز مستوى جذر هاش Verity (بافتراض أن معرف UUID في أسماء الملفات يطابق الهاش الخاص بمستواها الأعلى، بالطريقة التي يقترحها systemd-gpt-auto-generator(8)).
# /usr/lib/sysupdate.d/60-root.transfer [Transfer] ProtectVersion=%A [Source] Type=url-file Path=https://download.example.com/ MatchPattern=foobarOS_@v_@u.root.xz [Target] Type=partition Path=auto MatchPattern=foobarOS_@v MatchPartitionType=root PartitionFlags=0 ReadOnly=1
يحدد ما ورد أعلاه تعريف نقل مطابق لنظام الملفات الرئيس.
# /usr/lib/sysupdate.d/70-kernel.transfer [Transfer] ProtectVersion=%A [Source] Type=url-file Path=https://download.example.com/ MatchPattern=foobarOS_@v.efi [Target] Type=regular-file Path=/EFI/Linux PathRelativeTo=boot MatchPattern=foobarOS_@v+@l-@d.efi \
foobarOS_@v+@l.efi \
foobarOS_@v.efi Mode=0644 TriesLeft=3 TriesDone=0 InstancesMax=2
يثبت ما ورد أعلاه صورة نواة موحدة في قسم $BOOT، وفقًا لـ UAPI.1 Boot Loader Specification[2] النوع رقم 2. يحدد هذا ثلاثة أنماط ممكنة لأسماء صور النواة، وفقًا لـ Automatic Boot Assessment[3]، ويضمن عند تثبيت نواة جديدة، إعدادها مع بقاء 3 محاولات. لا يُحتفظ بأكثر من نواتين متوازيتين.
بهذا الإعداد، سيخدم خادم الويب الملفات التالية، لإصدار افتراضي 7 من نظام التشغيل:
لكل إصدار جديد من نظام التشغيل، ستُضاف مجموعة جديدة من الملفات الثلاثة الأخيرة، في كل مرة مع إصدار محدث. وينبغي بعد ذلك تحديث بيان SHA256SUMS وفقًا لذلك، مع إدراج جميع الملفات لجميع الإصدارات التي ستُعرض للتنزيل.
مثال 2. تحديثات لصورة حاوية دليل مجرد
[Source] Type=url-tar Path=https://download.example.com/ MatchPattern=myContainer_@v.tar.gz [Target] Type=subvolume Path=/var/lib/machines MatchPattern=myContainer_@v CurrentSymlink=myContainer
عند التحديثات، ينزل هذا "https://download.example.com/myContainer_@v.tar.gz" ويفك ضغطه/حزمه إلى /var/lib/machines/myContainer_@v. بعد كل تحديث، تُنشَأ/تُحدَّث وصلة رمزية /var/lib/machines/myContainer تشير دائمًا إلى التحديث الأحدث.
انظر أيضًا¶
ملاحظات¶
- 1.
- UAPI.2 مواصفات الأقسام القابلة للاكتشاف
- 2.
- مواصفات محمل الإقلاع UAPI.1
- 3.
- تقييم الإقلاع الآلي
- 4.
- فهرس AppStream
- 5.
- بيانات وصفية خاصة
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| systemd 260.1 |