SYSTEMD-REPART(8)

الاسم
systemd-repart، systemd-repart.service - توسعة وإضافة الأقسام آليًا، وتوليد صور الأقراص (DDIs)

موجز

systemd-repart [خيارات...] [جهاز_كتلة]

systemd-repart.service

الوصف

systemd-repart ينشئ جداول الأقسام، ويضيف أو يوسع الأقسام، بناءً على ملفات الإعدادات الموصوفة في repart.d(5). يعمل على جهاز الكتلة أو صورة الملف المحددة في سطر الأوامر.

يُستخدم systemd-repart عند بناء صور نظام التشغيل، وأيضًا عند نشر الصور لضبطها آليًا، أثناء الإقلاع، للنظام الذي تعمل عليه. بهذه الطريقة يمكن أن تكون الصورة ضئيلة الحجم وقد تُوسع آليًا عند الإقلاع، مستحوذة على مساحة القرص المتاحة.

إذا استُدعي بدون وسائط، يعمل systemd-repart على جهاز الكتلة الداعم لقسم نظام ملفات الجذر لنظام التشغيل الجاري، وبالتالي يضيف ويوسع أقسام نظام التشغيل المُقلع نفسه. عند استدعائه في initrd، يعمل على جهاز الكتلة الداعم لـ /sysroot/ بدلاً من ذلك، أي على جهاز الكتلة الذي سينتقل إليه النظام قريبًا. إذا استُخدم --image=، سيعمل على الجهاز أو ملف الصورة المحدد. تُشغّل خدمة systemd-repart.service عمومًا عند الإقلاع في initrd، من أجل توسعة جدول أقسام نظام التشغيل قبل تحميل أقسامه.

إذا حُدد جهاز الكتلة كـ "-" (أو كسلسلة فارغة)، لن يعمل systemd-repart على أي جهاز كتلة أو ملف صورة، وبدلاً من ذلك سيحدد ويخرج الحد الأدنى لحجم القرص/الصورة لإعدادات القسم المحددة، مع مراعاة جميع قيود الحجم المُعدة.

عمليات systemd-repart هي في الغالب تزايدية: يوسع الأقسام الموجودة أو يضيف أقسامًا جديدة، لكنه لا يقلص أو يحذف أو ينقل الأقسام الموجودة. الخدمة مخصصة للتشغيل عند كل إقلاع، لكن عندما يكتشف أن جدول الأقسام يطابق بالفعل ملفات إعدادات repart.d/*.conf المثبتة، لا ينفذ أي عملية.

حالات الاستخدام التالية من بين تلك المشمولة:

    • يمكن توسعة القسم الجذر لتغطية مساحة القرص المتاحة بالكامل.

    • يمكن إضافة قسم /home/ أو swap أو /srv/.

    • يمكن إضافة قسم جذر ثانٍ (أو ثالث، ...) لتغطية إعدادات نمط A/B حيث يُستخدم إصدار ثانٍ من نظام ملفات الجذر بالتناوب لتنفيذ مخططات التحديث. الصورة المنشورة ستحمل قسمًا واحدًا فقط ("A") لكن عند الإقلاع الأول يُنشأ قسم ثانٍ ("B") لهذا الغرض آليًا.

الخوارزمية التي ينفذها systemd-repart هي تقريبًا كما يلي:

    1. تُحمّل وتُحلل ملفات إعدادات repart.d/*.conf، وتُرتب حسب اسم الملف (بدون بادئة الدليل). لكل ملف إعدادات، تُحمّل ملفات الإدراج من أدلة بنفس اسم ملف الإعدادات مع إضافة اللاحقة ".d".

    2. يُحمّل ويُحلل جدول الأقسام على جهاز الكتلة، إذا كان موجودًا.

    3. تُطابق الأقسام الموجودة في جدول الأقسام مع ملفات repart.d/*.conf بواسطة UUID نوع قسم GPT. يُسند أول قسم موجود من نوع معين إلى أول ملف إعدادات يعلن نفس النوع. ثم يُسند ثاني قسم موجود من نوع معين إلى ثاني ملف إعدادات يعلن نفس النوع، وهكذا. بعد اكتمال هذا الإسناد التكراري، تُعتبر أي أقسام موجودة ليس لها ملف إعدادات مطابق "أجنبية" وتُترك كما هي. وأي ملفات إعدادات لم يُطابق لها قسم تُعالج كطلبات لإنشاء قسم.

    4. تُخصص الآن الأقسام التي ستُنشئ على القرص، مع مراعاة قيود الحجم والأوزان المعلنة في ملفات الإعدادات. تُستخدم المساحة الحرة ضمن الحدود المحددة بطلبات الحجم والحشو. بالإضافة إلى ذلك، تُوسع الأقسام الموجودة التي يجب توسعتها. تُلحق الأقسام الجديدة دائمًا بنهاية جدول الأقسام، آخذة أول فتحة جدول أقسام يكون فهرسها أكبر من فهارس جميع الأقسام الموجودة. لا يُعاد ترتيب الأقسام أبدًا وبالتالي تبقى أرقام الأقسام مستقرة. عند إنشاء الأقسام، توضع في أصغر منطقة من المساحة الحرة كبيرة بما يكفي لتلبية حدود الحجم والحشو. هذا يعني أن الأقسام قد يكون لها ترتيب مختلف على القرص عن جدول الأقسام. لاحظ أن هذا التخصيص يحدث في الذاكرة فقط، جدول الأقسام على القرص لم يُحدث بعد.

    5. جميع الأقسام الموجودة التي توجد لها ملفات إعدادات والتي ليس لها حاليًا تسمية قسم GPT مُعدة سيُسند لها تسمية، إما مُعدة صراحة في الإعدادات أو — إذا كان ذلك مفقودًا — مُشتقة آليًا من نوع القسم. يُفعل نفس الشيء لجميع الأقسام المنشأة حديثًا. هذه الإسنادات تُجرى في الذاكرة فقط أيضًا، القرص لم يُحدث بعد.

    6. بالمثل، جميع الأقسام الموجودة التي توجد لها ملفات إعدادات والتي لديها حاليًا UUID تعريف صفري بالكامل سيُسند لها UUID جديد. هذا UUID مُشتق تشفيريًا من قيمة بذرة مشتركة مع UUID نوع القسم (وعداد في حالة تعريف أقسام متعددة من نفس النوع)، انظر أدناه. يُفعل نفس الشيء لجميع الأقسام المنشأة من جديد. هذه الإسنادات تُجرى في الذاكرة فقط أيضًا، القرص لم يُحدث بعد.

    7. بالمثل، إذا كان UUID وحدة تخزين القرص صفريًا بالكامل يُهيأ أيضًا، مُشتق تشفيريًا أيضًا من نفس قيمة البذرة المشتركة. هذا يُفعل في الذاكرة فقط أيضًا.

    8. تُمسح الآن مساحة القرص المخصصة للأقسام الجديدة (أي ما كان سابقًا مساحة حرة). تحديدًا، تُزال جميع تواقيع نظام الملفات، وإذا كان الجهاز يدعم ذلك، يُصدر أمر التحكم بالإدخال/الإخراج BLKDISCARD لإعلام العتاد بأن المساحة فارغة الآن. بالإضافة إلى ذلك، يُمسح أي "حشو" بين الأقسام وفي نهاية الجهاز بالمثل.

    9. يُكتب أخيرًا جدول الأقسام الجديد إلى القرص. يُطلب من النواة إعادة قراءة جدول الأقسام.

كاستثناء من العملية التزايدية العادية، عند استدعائه في وضع "إعادة ضبط المصنع" خاص، يمكن استخدام systemd-repart لمسح الأقسام الموجودة لإعادة تثبيت إلى الإعدادات المبدئية للبائع. يُستخدم وضع التشغيل هذا عندما يُمرر المفتاح --factory-reset=yes في سطر أوامر الأداة، أو يُحدد الخيار systemd.factory_reset=yes في سطر أوامر النواة، أو يُضبط متغير EFI FactoryResetRequest (UUID البائع 8cf2644b-4b0b-428f-9387-6d876050dc67) على "yes". يغير الخوارزمية أعلاه قليلاً: بين الخطوة الثالثة والرابعة أعلاه يُحذف أي قسم مُعلّم صراحة عبر القيمة المنطقية FactoryReset=، وتُعاد تشغيل الخوارزمية، وبالتالي تُعاد إنشاء هذه الأقسام من جديد فارغة فورًا.

لاحظ أن systemd-repart مبدئيًا يغير جداول الأقسام فقط، لا ينشئ أو يغير حجم أي أنظمة ملفات ضمن هذه الأقسام، ما لم يُحدد خيار الإعدادات Format=. لاحظ أيضًا أن هناك آليات منفصلة متاحة لهذا الغرض، على سبيل المثال systemd-growfs(8) و systemd-makefs.

تُجزئ UUIDs التي تحدد الأقسام الجديدة المنشأة (أو المخصصة للأقسام الموجودة التي لا تحتوي على UUID بعد)، وكذلك القرص ككل، بشكل تشفيري من قيمة بذرة مشتركة. عادةً ما تكون قيمة البذرة هذه هي machine-id(5) للنظام، بحيث يحدد معرف الجهاز بشكل قابل للتكرار UUIDs المخصصة لجميع الأقسام. إذا تعذر قراءة معرف الجهاز (أو مرر المستخدم --seed=random، انظر أدناه) تُنشئ البذرة عشوائيًا بدلاً من ذلك، وبالتالي تكون UUIDs للقسم عشوائية أيضًا بشكل فعال. يمكن أيضًا تعيين قيمة البذرة بشكل صريح، بتنسيق UUID عبر الخيار --seed=. من خلال تجزئة UUIDs هذه من بذرة مشتركة، تصبح الصور المعدة بهذه الأداة قابلة للتكرار وتكون نتيجة الخوارزمية أعلاه حتمية.

يجب أن تحدد الوسيطة الموضعية جهاز الكتلة أو الملف العادي الذي سيُعمل عليه. إذا حُدد --empty=create، يُنشئ المسار المحدد كملف عادي، وهو مفيد لإنشاء صور القرص من البداية.

الخيارات

الخيارات التالية مفهومة:

--dry-run=
    يأخذ قيمة منطقية. إذا لم يُحدد هذا المفتاح، يكون --dry-run=yes هو المبدئي الضمني. يتحكم فيما إذا كان systemd-repart ينفذ عمليات إعادة التقسيم المطلوبة أو ما إذا كان يجب فقط عرض ما سيفعله. ما لم يُحدد --dry-run=no، لن يلمس systemd-repart جدول أقسام الجهاز فعليًا.

    أُضيف في الإصدار 245.

--empty=
    يأخذ واحدًا من "refuse" أو "allow" أو "require" أو "force" أو "create". يتحكم في كيفية العمل على أجهزة الكتلة الفارغة تمامًا، أي التي لا تحمل جدول أقسام/تسمية قرص بعد. إذا لم يُحدد هذا المفتاح، يكون المبدئي الضمني هو "refuse".

    إذا كان "refuse"، يتطلب systemd-repart أن جهاز الكتلة الذي سيعمل عليه يحمل بالفعل جدول أقسام ويرفض العملية إذا لم يُعثر على أي جدول. إذا كان "allow"، سيقوم الأمر بتوسيع جدول أقسام موجود أو إنشاء جدول جديد إذا لم يكن موجودًا. إذا كان "require"، سيقوم الأمر بإنشاء جدول أقسام جديد إذا لم يكن موجودًا حتى الآن، ويرفض العملية إذا كان موجودًا بالفعل. إذا كان "force"، سيقوم بإنشاء جدول أقسام جديد بشكل غير مشروط، مما يمحو القرص بالكامل فعليًا. إذا كان "force"، لن يُؤخذ أي أقسام موجودة في الاعتبار أو البقاء بعد العملية. وبالتالي: استخدم بحذر، فهذه طريقة رائعة لفقدان جميع بياناتك. إذا كان "create"، يُنشئ ملف حلقة جديد تحت المسار الذي تم تمريره عبر معلمة عقدة الجهاز، بالحجم المشار إليه بـ --size=، انظر أدناه.

    أُضيف في الإصدار 245.

--discard=
    يأخذ قيمة منطقية. إذا لم يُحدد هذا المفتاح، يكون --discard=yes هو المبدئي الضمني. يتحكم في ما إذا كان سيُصدر أمر التحكم في الإدخال/الإخراج BLKDISCARD على المساحة التي تشغلها أي أقسام مضافة أو على المساحة بينها. عادةً، من الجيد إصدار هذا الطلب لأنه يخبر الأجهزة الأساسية بأن الكتل المغطاة يجب اعتبارها فارغة، مما يحسن الأداء. إذا عُمل على ملف عادي بدلاً من عقدة جهاز كتلة، يُنشئ ملف متناثر.

    أُضيف في الإصدار 245.

--size=
    يأخذ حجمًا بالبايت، باستخدام اللواحق المعتادة K، M، G، T، أو القيمة الخاصة "auto". إذا اُستخدم، يجب أن يشير مسار عقدة الجهاز المحدد إلى ملف عادي، يُكبر بعد ذلك إلى الحجم المحدد إذا كان أصغر، قبل إجراء أي تغيير على جدول الأقسام. إذا حُدده كـ "auto"، يُحدد الحجم الأدنى لصورة القرص آليًا (أي تُجمع الأحجام الدنيا لجميع الأقسام، مع مراعاة المساحة للبيانات الوصفية الإضافية). هذا المفتاح غير مدعوم إذا كانت العقدة المحددة هي جهاز كتلة. هذا المفتاح ليس له تأثير إذا كان الملف بالفعل بحجم الحجم المحدد أو أكبر. يُقرب الحجم المحدد ضمنيًا إلى مضاعفات 4096. عند استخدامه مع --empty=create، يحدد هذا الحجم الأولي لملف الحلقة المراد إنشاؤه.

    يأخذ الخيار --size=auto أحجام الأقسام الموجودة مسبقًا في الاعتبار. ومع ذلك، فإنه لا يستوعب جداول الأقسام غير المعبأة بإحكام: قد لا تتناسب الأقسام المهيأة مع الجهاز الداعم إذا كانت هناك مساحة فارغة بين الأقسام الموجودة مسبقًا (أو قبل القسم الأول) لا يمكن ملؤها بالكامل بواسطة الأقسام المراد تكبيرها أو إنشاؤها.

    لاحظ أيضًا أن تحديد الحجم الآلي لا يأخذ في الاعتبار الملفات أو الدلائل المحددة مع CopyFiles=: قد تفشل العملية إذا كانت الملفات أو الدلائل المحددة تتطلب مساحة قرص أكبر من حد الحجم الأدنى لكل قسم مهيأ.

    أُضيف في الإصدار 246.

--factory-reset=
    يأخذ قيمة منطقية. إذا لم يُحدد هذا المفتاح، يكون --factory-reset=no هو المبدئي الضمني. يتحكم في ما إذا كان سيُعمل في وضع "إعادة الضبط إلى إعدادات المصنع"، انظر أعلاه. إذا عُيين على true، فسيؤدي ذلك إلى إزالة جميع الأقسام الموجودة المميزة بـ FactoryReset= المضبوطة على yes مبكرًا أثناء تنفيذ خوارزمية إعادة التقسيم. استخدم بحذر، فهذه طريقة رائعة لفقدان جميع بياناتك. لاحظ أن ملفات القسم تحتاج إلى تشغيل FactoryReset= بشكل صريح، حيث أن الخيار مبدئيًا off. إذا لم يُميز أي أقسام لإعادة الضبط إلى إعدادات المصنع، فلن يكون لهذا المفتاح أي تأثير. لاحظ أن هناك طريقتين أخريين لطلب عملية إعادة الضبط إلى إعدادات المصنع: عبر سطر أوامر النواة وعبر متغير EFI، انظر أعلاه.

    أُضيف في الإصدار 245.

--can-factory-reset
    إذا حُدد هذا المفتاح، لا يُعاد تقسيم القرص. بدلاً من ذلك، يحُدد ما إذا كانت أي أقسام موجودة مميزة بـ FactoryReset=. إذا كانت موجودة، سيخرج الأداة بحالة خروج صفر، وإلا غير صفرية. يمكن استخدام هذا المفتاح لتحديد بسرعة ما إذا كان النظام قيد التشغيل يدعم آلية إعادة ضبط إلى إعدادات المصنع المبنية على systemd-repart.

    أُضيف في الإصدار 245.

--root=
    يأخذ مسارًا إلى دليل لاستخدامه كنظام ملفات جذر عند البحث عن ملفات repart.d/*.conf، وللملف معرف الجهاز لاستخدامه كبذرة ولملفات ومجلدات المصدر CopyFiles= و CopyBlocks=. بشكل مبدئي عند استدعائه على النظام العادي، يكون هذا مبدئيًا نظام الملفات الجذر للمضيف /. إذا اُستدعي من initrd، يكون هذا مبدئيًا /sysroot/، بحيث تعمل الأداة على التهيئة ومعرف الجهاز المخزنين في نظام الملفات الجذر الذي سيُنتقل إليه لاحقًا.

    انظر --copy-source= للحصول على خيار أكثر تقييدًا يؤثر فقط على CopyFiles=.

    أُضيف في الإصدار 245.

--image=
    يأخذ مسارًا إلى ملف صورة قرص أو جهاز لتركيبه واستخدامه بطريقة مماثلة لـ --root=، انظر أعلاه.

    أُضيف في الإصدار 249.

--image-policy=السياسة
    يأخذ سلسلة سياسة صورة كوسييط، وفقًا لـ systemd.image-policy(7). تُفرض السياسة عند العمل على صورة القرص المحددة عبر --image=، انظر أعلاه. إذا لم تُحدد، فسيُرجع إلى سياسة "*" المبدئية، أي تُستخدم جميع أنظمة الملفات المعروفة في الصورة.

--seed=
    يأخذ UUID كوسيطة أو القيمة الخاصة random. إذا حُدد UUID، يُشتق UUIDs المخصصة للأقسام وجدول الأقسام نفسه عبر التجزئة التشفيرية منه. إذا لم يُحدد، سيُحاول قراءة معرف الجهاز من المضيف (أو بشكل أكثر دقة، الدليل الجذر المهيأ عبر --root=) واستخدامه كبذرة بدلاً من ذلك، مع الرجوع إلى بذرة عشوائية بخلاف ذلك. استخدم --seed=random لفرض بذرة عشوائية. يمكن استخدام تحديد البذرة بشكل صريح لإنشاء جداول أقسام قابلة للتكرار بدقة.

    أُضيف في الإصدار 245.

--pretty=
    يأخذ وسيطة منطقية. إذا لم يُحدد هذا المفتاح، يكون مبدئيًا on عند استدعائه من طرفية تفاعلية و off بخلاف ذلك. يتحكم في ما إذا كان سيعرض جدول ورسوم بيانية سهلة الاستخدام توضح التغييرات المطبقة.

    أُضيف في الإصدار 245.

--definitions=
    يستقبل مسار نظام الملفات. في حالة تحديده، تُقرأ ملفات *.conf من الدليل المحدد بدلاً من البحث في /usr/lib/repart.d/*.conf، و/etc/repart.d/*.conf، و/run/repart.d/*.conf.

    يمكن تحديد هذا المعامل عدة مرات.

    أُضيف في الإصدار 245.

--key-file=
    يستقبل مسار نظام الملفات. يهيئ مفتاح التعمية المراد استخدامها عند إعداد وحدات تخزين LUKS2 التي هُيئت باستخدام الإعداد Encrypt=key-file في ملفات الأقسام. يجب أن يشير إلى ملف عادي يحتوي على المفتاح، أو إلى مقبس دفق AF_UNIX في نظام الملفات. في الحالة الأخيرة، يُقام اتصال به ويُقرأ المفتاح منه. إذا لم يُحدد هذا المفتاح، ولم يُحدد KeyFile= في ملف القسم، يُستخدم المفتاح الفارغ (أي مفتاح بطول صفر). هذا السلوك مفيد لإعداد الأقسام المشفرة أثناء التشغيل الأول المبكر التي تتلقى كلمة المرور التي يزودها المستخدم فقط في خطوة إعداد لاحقة.

    أُضيف في الإصدار 247.

--private-key=
    يأخذ مسار نظام ملفات أو تسمية خاصة بمحرك أو مزود. يهيئ مفتاح التوقيع لاستخدامه عند إنشاء أقسام توقيع التحقق مع إعداد Verity=signature في ملفات الأقسام.

    أُضيف في الإصدار 252.

--private-key-source=
    يأخذ أحد القيم "file" أو "engine" أو "provider". في الحالتين الأخيرتين، يتبعه اسم مزود أو محرك، مفصول بنقطتين، يُمرر لمنطق "engine" أو "provider" في OpenSSL. يهيئ كيفية تحميل المفتاح الخاص لاستخدامه عند إنشاء أقسام توقيع التحقق مع إعداد Verity=signature في ملفات الأقسام.

    أُضيف في الإصدار 256.

--certificate=
    يأخذ مسار نظام ملفات أو تسمية خاصة بمزود. يهيئ شهادة X.509 المشفرة بصيغة PEM لاستخدامها عند إنشاء أقسام توقيع التحقق مع إعداد Verity=signature في ملفات الأقسام.

    أُضيف في الإصدار 252.

--certificate-source=
    يأخذ أحد القيم "file" أو "provider". في الحالة الأخيرة، يتبعه اسم مزود، مفصول بنقطتين، يُمرر لمنطق "provider" في OpenSSL. يهيئ كيفية تحميل شهادة X.509 لاستخدامها عند إنشاء أقسام توقيع التحقق مع إعداد Verity=signature في ملفات الأقسام.

    أُضيف في الإصدار 257.

--join-signature=
    يحدد مجموعة مفصولة بنقطتين تحتوي على تجزئة Verity عالية المستوى مشفرة بالنظام الست عشري لقسم Verity=hash كعنصر أول، وتوقيع PKCS7 للتجزئة الجذرية كمسار لملف توقيع مشفر بصيغة DER، أو كسلسلة ASCII مشفرة بصيغة base64 لتوقيع مشفر بصيغة DER مسبوقة بـ "base64:". يُستخدم على صورة موجودة مسبقاً أُنشئت بمعامل مثل --defer-partitions=root-verity-sig، للسماح بتنفيذ توقيع غير متصل لقسم توقيع التحقق.

    هذا بديل للتوقيع المتصل باستخدام معاملات مثل --private-key=، لأنظمة البناء حيث المفتاح الخاص لتوقيع الإنتاج غير متوفر في نفس السياق الذي يُنشأ فيه المحتوى.

    أُضيف في الإصدار 258.

--tpm2-device=, --tpm2-pcrs=
    يهيئ جهاز TPM2 وقائمة PCRs لاستخدامها لوحدات تخزين LUKS2 المهيأة بخيار Encrypt=tpm2. تأخذ هذه الخيارات نفس المعاملات كالخيارات المسماة بشكل مماثل لـ systemd-cryptenroll(1) ولها نفس التأثير على الأقسام حيث يُطلب تسجيل TPM2.

    أُضيف في الإصدار 248.

--tpm2-device-key=PATH, --tpm2-seal-key-handle=HANDLE
    يهيئ مفتاح SRK لـ TPM2 لربط التشفير به. انظر systemd-cryptenroll(1) للتفاصيل حول هذا الخيار.

    أُضيف في الإصدار 255.

--tpm2-public-key=المسار، --tpm2-public-key-pcrs=PCR[+PCR...]
    يهيئ سياسة PCR موقعة لـ TPM2 لربط التشفير بها. انظر systemd-cryptenroll(1) للتفاصيل حول هذين الخيارين.

    أُضيف في الإصدار 252.

--tpm2-pcrlock=المسار
    يهيئ سياسة pcrlock لـ TPM2 لربط التشفير بها. انظر systemd-cryptenroll(1) للتفاصيل حول هذا الخيار.

    أُضيف في الإصدار 255.

--split=BOOL
    يفعّل توليد القطع المجزأة من الأقسام المهيأة بـ SplitName=. إذا كان مفعّلاً، لكل قسم مع تعيين SplitName=، يُنشأ ملف إخراج منفصل يحتوي فقط على محتويات ذلك القسم. يتكون اسم ملف الإخراج من اسم ملف الحلقة اللولبية ملحقًا بالاسم المهيأ بـ SplitName=. إذا كان اسم ملف الحلقة اللولبية ينتهي بـ ".raw"، تُدرج اللاحقة قبل الامتداد ".raw" بدلاً من ذلك.

    لاحظ أن --split مستقل عن --dry-run. حتى إذا كان --dry-run مفعّلاً، ستظل القطع المجزأة تُنشأ من صورة موجودة إذا كان --split مفعّلاً.

    أُضيف في الإصدار 252.

--include-partitions=PARTITIONS, --exclude-partitions=PARTITIONS
    تحدد هذه الخيارات أنواع الأقسام التي يجب أن يعمل عليها systemd-repart. إذا استُخدم --include-partitions=، تُستبعد جميع الأقسام غير المحددة. إذا استُخدم --exclude-partitions=، تُستبعد جميع الأقسام المحددة. يأخذ كلا الخيارين قائمة مفصولة بفواصل من UUIDs لنوع قسم GPT أو معرفات (انظر Type= في repart.d(5)).

    أُضيف في الإصدار 253.

--defer-partitions=PARTITIONS
    يحدد هذا الخيار أنواع الأقسام التي يجب أن يؤجلها systemd-repart. جميع الأقسام المؤجلة باستخدام هذا الخيار ما زالت تؤخذ في الاعتبار عند حساب الأحجام والإزاحات للأقسام الأخرى، لكنها لا تُكتب فعلياً إلى صورة القرص. التأثير الصافي لهذا الخيار هو أنه إذا شغّلت systemd-repart مرة أخرى بدون هذا الخيار، ستُضاف الأقسام المفقودة كما لو أنها لم تؤجل في المرة الأولى التي نُفذ فيها systemd-repart.

    أُضيف في الإصدار 253.

--defer-partitions-empty=yes
    هذا مشابه جداً لـ --defer-partitions= لكنه يختار آلياً جميع الأقسام للتأجيل التي لديها Format=empty مضبوطاً ولا تهيئ تسمية مخصصة، أو التي تضبط Label=_empty. يمكن استخدامه بالتزامن مع --defer-partitions= أو --defer-partitions-factory-reset=yes، وفي هذه الحالة تؤجل جميع الأقسام المتطابقة.

    أُضيف في الإصدار 259.

--defer-partitions-factory-reset=yes
    هذا مشابه جدًا لـ --defer-partitions= لكنه يختار آليًا جميع الأقسام للتأجيل التي لديها FactoryReset=yes مضبوطة. يمكن استخدامه بالتزامن مع --defer-partitions= أو --defer-partitions-empty=yes، وفي هذه الحالة تُؤجل جميع الأقسام المتطابقة.

    أُضيف في الإصدار 259.

--sector-size=بايت
    يسمح هذا الخيار بتكوين حجم القطاع للصورة المنتجة بواسطة systemd-repart. يأخذ قيمة هي قوة للعدد "2" بين "512" و"4096". هذا الخيار مفيد عند بناء صور لأقراص تستخدم حجم قطاع مختلف عن القرص الذي تُنتج عليه الصورة.

    أُضيف في الإصدار 253.

--grain-size=بايت
    يتحكم هذا الخيار في دقة محاذاة الأقسام المستخدمة عند وضع الأقسام. يأخذ قيمة من قوى العدد 2 لا تقل عن حجم القطاع. تُقرّب جميع إزاحات بدء الأقسام إلى أعلى مضاعف لهذه القيمة. المبدئي هو MAX(4096, sector_size)، مطابقًا للمحاذاة التقليدية 4 كيبي بايت. ضبط هذا إلى "1M" يضمن محاذاة صحيحة لأجهزة التخزين الحديثة حتى بعد أقسام صغيرة ثابتة الحجم مثل قسم توقيع التحقق.

    أُضيف في الإصدار 261.

--architecture=بنية
    يسمح هذا الخيار بتجاوز البنية المستخدمة لأنواع الأقسام الخاصة بالبنية. على سبيل المثال، إذا ضُبط على "arm64" فسيُصحح نوع قسم "root-x86-64" المُشار إليه في إضافات repart.d/ ديناميكيًا للإشارة إلى "root-arm64" بدلاً من ذلك. يأخذ واحدًا من "alpha"، "arc"، "arm"، "arm64"، "ia64"، "loongarch64"، "mips-le"، "mips64-le"، "parisc"، "ppc"، "ppc64"، "ppc64-le"، "riscv32"، "riscv64"، "s390"، "s390x"، "tilegx"، "x86" أو "x86-64".

    أُضيف في الإصدار 254.

--offline=قيمة_منطقية
    يوجه systemd-repart لبناء الصورة دون اتصال. يأخذ قيمة منطقية أو "auto". المبدئي هو "auto". إذا فُعّل، تُبنى الصورة دون استخدام أجهزة الحلقة. هذا مفيد لبناء الصور بدون صلاحيات أو عندما لا تتوفر أجهزة الحلقة. إذا عُطّل، تُبنى الصورة دائمًا باستخدام أجهزة الحلقة. إذا كان "auto"، سيبني systemd-repart الصورة عبر الاتصال إن أمكن ويعود إلى بناء الصورة دون اتصال إذا لم تتوفر أجهزة الحلقة أو لا يمكن الوصول إليها بسبب صلاحيات مفقودة.

    أُضيف في الإصدار 254.

--copy-from=مسار
    يوجه systemd-repart لتجميع تعريفات الأقسام من جدول الأقسام في الصورة أو الجهاز المُعطى. يمكن تحديد هذا الخيار عدة مرات لتجميع تعريفات من كل صورة أو جهاز مُعطى. ستنسخ التعريفات المُولّدة الأقسام إلى جدول الأقسام الوجهة. سيكون للأقسام المنسوخة نفس الحجم والبيانات الوصفية والمحتويات لكن قد يكون لها رقم قسم مختلف وقد تكون موجودة في إزاحة مختلفة في جدول الأقسام الوجهة. يمكن دمج هذه التعريفات مع تعريفات الأقسام المقروءة من ملفات تعريف الأقسام العادية. التعريفات المُجمّعة لها أسبقية على التعريفات المقروءة من ملفات تعريف الأقسام.

    أُضيف في الإصدار 255.

--copy-source=PATH, -s PATH
    يحدد دليل مصدر تُعتبر جميع مسارات مصدر CopyFiles= نسبية إليه. هذا مشابه لـ --root=، لكنه ينطبق حصريًا على إعداد CopyFiles=. إذا استُخدم --root= و--copy-source= معًا، يُطبق الأول كالمعتاد، باستثناء CopyFiles= حيث يكون للأخير الأسبقية.

    أُضيف في الإصدار 255.

--make-ddi=نوع
    يأخذ واحدًا من "sysext"، "confext" أو "portable". يُولّد صورة قرص قابلة للاكتشاف (DDI) لامتداد النظام (sysext، انظر systemd-sysext(8) للتفاصيل)، امتداد التهيئة (confext) أو الخدمات المحمولة[1]. ستتكون الصورة المُولّدة من نظام ملفات "erofs" Verity مُوقّع كقسم جذر. في وضع التشغيل هذا، لا تُقرأ تعريفات الأقسام في /usr/lib/repart.d/*.conf والأدلة ذات الصلة، و--definitions= غير مدعوم، حيث ستُختار التعريفات المناسبة لفئة DDI المحددة آليًا.

    يجب استخدامه بالتزامن مع --copy-source= لتحديد التسلسل الهرمي للملفات لملء DDI به. يجب أن يحتوي الدليل المُحدد على دليل فرعي etc/ إذا اختير "confext". إذا اختير "sysext" فيجب أن يحتوي على دليل usr/ أو opt/، أو كليهما. إذا استُخدم "portable" فيمكن توفير تسلسل هرمي كامل لنظام التشغيل.

    هذا الخيار يستلزم --empty=create و--size=auto و--seed=random (يمكن تجاوز الأخيرين).

    يجب تحديد المفتاح الخاص والشهادة لتوقيع DDI عبر المفاتيح --private-key= و--certificate=.

    أُضيف في الإصدار 255.

-S, -C, -P
    اختصارات لـ --make-ddi=sysext و--make-ddi=confext و--make-ddi=portable، على التوالي.

    أُضيف في الإصدار 255.

--append-fstab=
    يأخذ واحدًا من "no" أو "auto" أو "replace". يتحكم في كيفية تصرف ملف fstab(5) المُولّد بواسطة --generate-fstab= في حالة وجود ملف سابق.

    إذا كان "no" فسيشتكي systemd-repart ويُجهض في حالة وجود ملف. هذا هو السلوك المبدئي. إذا كان "replace" فسيُستبدل الملف بصمت بالملف المُولّد الجديد.

    إذا كان "auto" فسيبحث systemd-repart في الملف الموجود مسبقًا عن القسم الذي ينتمي إلى المحتوى المُولّد آليًا وسيستبدله بالمحتوى المُولّد الأحدث، ويحتفظ بالقسم الذي قدمه المستخدم إن وجد. يُحدد القسم المُولّد بالبحث عن المحتوى الآلي المحاط بـ "# Start section ↓ of automatically generated fstab by systemd-repart" و"# End section ↑ of automatically generated fstab by systemd-repart". المحتوى الذي قبل وبعد هذه التعليقات يُعتبر مقدمًا من المستخدم، ويُحتفظ به في الملف الجديد.

    أُضيف في الإصدار 258.

--generate-fstab=PATH
    يحدد مسارًا لكتابة إدخالات fstab(5) لنقاط التحميل المُهيأة بـ MountPoint= في الدليل الجذر المُحدد بـ --copy-source= أو --root= أو في الدليل الجذر للمضيف إذا لم يُحدد أي منهما. معطل مبدئيًا.

    أُضيف في الإصدار 256.

--generate-crypttab=PATH
    تحدد مسارًا لكتابة إدخالات crypttab لوحدات التخزين المشفرة التي مُكونة باستخدام EncryptedVolume= في الدليل الجذر المحدد باستخدام --copy-source= أو --root= أو في الدليل الجذر للمضيف إذا لم يُحدد أي منهما. معطل مبدئيًا.

    أُضيف في الإصدار 256.

--list-devices
    يعرض قائمة بأجهزة الكتل المرشحة التي يمكن لهذا الأمر العمل عليها. على وجه التحديد، يعدد أجهزة الكتل الموجودة حاليًا التي تدعم جداول الأقسام، ويعرض مسارات عُقد أجهزتها مع أي من روابطها الرمزية.

    أُضيف في الإصدار 257.

--el-torito=منطقي
    يكتب رأس ISO9660 أدنى مع كتالوج إقلاع El Torito. سيُقلع هذا ESP على البرامج الثابتة EFI.

    سيكون نظام الملفات ISO9660 الذي يُنشئه فارغًا. يُتوقع من initramfs إنشاء جهاز حلقة قابل للتقسيم فوق الجهاز لتغيير حجم الكتلة وتمكين أقسام GPT.

    يتطلب القرص قسمًا واحدًا على الأقل مع Type=esp. سيكون أول قسم هو المُشار إليه في كتالوج الإقلاع.

    أُضيف في الإصدار 261.

--el-torito-system=سلسلة محارف
    عند إنشاء رأس ISO9660، تُستخدم هذه القيمة كمعرّف النظام. هذا مفيد لمطابقة الوسائط مع قاعدة بيانات osinfo.

    القيمة محدودة بـ 32 حرفًا.

    أُضيف في الإصدار 261.

--el-torito-volume=سلسلة محارف
    عند إنشاء رأس ISO9660، تُستخدم هذه القيمة كمعرّف وحدة تخزين. هذا مفيد لمطابقة الوسائط مع قاعدة بيانات osinfo.

    القيمة محدودة بـ 32 حرفًا.

    أُضيف في الإصدار 261.

--el-torito-publisher=سلسلة محارف
    عند إنشاء رأس ISO9660، تُستخدم هذه القيمة كمعرّف الناشر. هذا مفيد لمطابقة الوسائط مع قاعدة بيانات osinfo.

    القيمة محدودة بـ 128 حرفًا.

    أُضيف في الإصدار 261.

-h، --help
    اطبع نص مساعدة قصير واخرج.

--version
    اطبع سلسلة إصدار قصيرة واخرج.

--no-pager
    لا تمرر المخرجات إلى برنامج عرض (pager).

--no-legend
    لا تطبع مفتاح الرموز، أي ترويسات الأعمدة والتذييل المزود بالتلميحات.

--json=وضع
    يظهر المخرجات منسقة بصيغة JSON. يتوقع أحد الخيارات: "short" (لأقصر مخرج ممكن دون أي مسافات زائدة أو فواصل أسطر)، أو "pretty" (لنسخة جميلة من المخرج نفسه، مع إزاحة وفواصل أسطر) أو "off" (لإيقاف مخرجات JSON، وهو الخيار المبدئي).

حالة الخروج

عند النجاح، يُعاد 0، وبخلاف ذلك يُعاد رمز فشل غير صفري.

مثال

مثال 1. توليد صورة امتداد تكوين

ينشئ التالي DDI لامتداد التكوين (confext) لتحديث /etc/motd:

    mkdir -p tree/etc/extension-release.d
    echo "Hello World" >tree/etc/motd
    cat >tree/etc/extension-release.d/extension-release.my-motd <<EOF
    ID=fedora
    VERSION_ID=38
    IMAGE_ID=my-motd
    IMAGE_VERSION=7
    EOF
    systemd-repart -C \
      --private-key=verity-private-key.pem \
      --certificate=verity-certificate.pem \
      -s tree/ \
      /var/lib/confexts/my-motd.confext.raw
    systemd-confext refresh

يمكن تطبيق DDI المُولّد بهذه الطريقة على النظام باستخدام systemd-confext(1).

مثال 2. توليد صورة امتداد نظام وتوقيعها عبر PKCS11

ينشئ التالي DDI لامتداد النظام (sysext) لتحديث /usr/foo ويوقعه باستخدام رمز جهاز عبر PKCS11:

    mkdir -p tree/usr/lib/extension-release.d
    echo "Hello World" >tree/usr/foo
    cat >tree/usr/lib/extension-release.d/extension-release.my-foo <<EOF
    ID=fedora
    VERSION_ID=38
    IMAGE_ID=my-foo
    IMAGE_VERSION=7
    EOF
    systemd-repart --make-ddi=sysext \
      --private-key-source=engine:pkcs11 \
      --private-key="pkcs11:model=PKCS%2315%20emulated;manufacturer=piv_II;serial=0123456789abcdef;token=Some%20Cert" \
      --certificate=verity-certificate.pem \
      -s tree/ \
      /var/lib/extensions/my-foo.sysext.raw
    systemd-sysext refresh

يمكن تطبيق DDI المُولّد بهذه الطريقة على النظام باستخدام systemd-sysext(8).

مثال 3. توليد توقيع dm-verity دون اتصال وإلحاقه بصورة مبنية مسبقًا

ينشئ التالي صورة ببيانات تعريف dm-verity، ويوقعها بشكل منفصل لمحاكاة نظام توقيع دون اتصال، ثم يلحق التوقيع بالصورة:

    mkdir -p repart.d/ /tmp/tree/usr/lib/

    cat >/tmp/tree/usr/lib/os-release <<EOF
    ID=debian
    VERSION_ID=13
    EOF

    cat >repart.d/10-root.conf <<EOF
    [Partition]
    Type=root
    Format=erofs
    SizeMinBytes=100M
    SizeMaxBytes=100M
    Verity=data
    VerityMatchKey=root
    EOF

    cat >repart.d/11-root-verity.conf <<EOF
    [Partition]
    Type=root-verity
    Label=%o_%w_verity
    Verity=hash
    VerityMatchKey=root
    SizeMinBytes=400M
    SizeMaxBytes=400M
    EOF

    cat >repart.d/12-root-verity-sig.conf <<EOF
    [Partition]
    Type=root-verity-sig
    Label=%o_%w_verity_sig
    Verity=signature
    VerityMatchKey=root
    EOF

    systemd-repart --definitions repart.d \
      --defer-partitions=root-verity-sig \
      --copy-source=/tmp/tree/ \
      --empty=create --size=600M \
      --json=short \
      /tmp/img.raw | jq --raw-output0 ".[-1].roothash" > /tmp/img.roothash

    openssl smime -sign -in /tmp/img.roothash \
      -inkey verity-private-key.pem \
      -signer verity-certificate.pem \
      -noattr -binary -outform der \
      -out /tmp/img.roothash.p7s

    systemd-repart --definitions repart.d \
      --dry-run=no --root=/tmp/tree/ \
      --join-signature="$(cat /tmp/img.roothash):/tmp/img.roothash.p7s" \
      --certificate=verity-certificate.pem \
      /tmp/img.raw

انظر أيضًا

systemd(1), repart.d(5), machine-id(5), systemd-cryptenroll(1), portablectl(1), systemd-sysext(8)

ملاحظات

1.  الخدمات المحمولة
    https://systemd.io/PORTABLE_SERVICES

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.