REPART.D(5)

الاسم
repart.d - ملفات تعريف الأقسام لإعادة تقسيم آلي عند وقت الإقلاع

موجز

    /etc/repart.d/*.conf
    /run/repart.d/*.conf
    /usr/local/lib/repart.d/*.conf
    /usr/lib/repart.d/*.conf

الوصف

تصف ملفات repart.d/*.conf الخصائص الأساسية لأقسام الأجهزة الكتلية في النظام المحلي. ويمكن استخدامها للتصريح عن أنواع الأقسام وأسمائها وأحجامها التي ينبغي أن توجد. تقرأ خدمة systemd-repart(8) هذه الملفات وتحاول إضافة أقسام جديدة مفقودة حاليًا وتوسيع الأقسام الموجودة وفقًا لهذه التعريفات. العملية تزايدية عمومًا، أي عند تطبيقها، يُترك ما هو موجود بالفعل سليمًا، ولا تُقَلّص الأقسام أو تُنقل أو تُحذف أبدًا.

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

حاليًا، الدعم لملفات تعريف الأقسام مُطبّق فقط لجداول أقسام GPT.

تُطابق ملفات الأقسام عمومًا مع أي أقسام موجودة بالفعل على القرص عبر خوارزمية بسيطة: تُفرز ملفات الأقسام حسب اسم الملف (مع تجاهل بادئة الدليل)، ثم تُقارن بالترتيب مع الأقسام الموجودة التي تطابق المعرّف الفريد العالمي (UUID) لنوع القسم نفسه. وتحديدًا، يُخصّص لأول قسم موجود يحمل معرّف UUID محدد لنوع القسم، أول ملف تعريف يحمل معرّف UUID لنوع القسم نفسه، ولثاني قسم موجود يحمل معرّف UUID محدد لنوع القسم، ملف القسم الثاني الذي يحمل معرّف UUID نفسه، وهكذا دواليك. وتُفترض أي ملفات أقسام متبقية ليس لها قسم موجود مطابق أنها تُعرّف قسمًا جديدًا ينبغي إنشاؤه. وتُلحق مثل هذه الأقسام بنهاية جدول الأقسام، بالترتيب المحدد بواسطة أسمائها، مستخدمةً أول فتحة قسم أكبر من أعلى رقم فتحة مستخدم حاليًا. وتُترك أي أقسام موجودة ليس لها ملف قسم مطابق كما هي دون تغيير.

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

خيارات قسم [PARTITION]

Type=
    المعرّف الفريد العالمي (UUID) لنوع قسم GPT للمطابقة. قد يكون هذا معرّف UUID لنوع قسم GPT مثل 4f68bce3-e8cd-4db1-96e7-fbcaf984b709، أو معرّفًا نصيًا.

    المعرّفات المدعومة هي:

    جدول 1. معرّفات أنواع أقسام GPT
    المعرف | الشرح
    esp | قسم نظام EFI
    xbootldr | قسم محمل الإقلاع الموسع
    swap | قسم الذاكرة البديلة (Swap)
    home | قسم المنزل (/home/)
    srv | قسم بيانات الخادوم (/srv/)
    var | قسم البيانات المتغيرة (/var/)
    tmp | قسم البيانات المؤقتة (/var/tmp/)
    linux-generic | قسم نظام ملفات لينكس عام
    root | نوع قسم نظام الملفات الجذري المناسب للبنية المعمارية المحلية (اسم مستعار لنوع قسم نظام الملفات الجذري لبنية معمارية مدرجة أدناه، مثلًا root-x86-64)
    root-verity | بيانات Verity لقسم نظام الملفات الجذري للبنية المعمارية المحلية
    root-verity-sig | بيانات توقيع Verity لقسم نظام الملفات الجذري للبنية المعمارية المحلية
    root-secondary | قسم نظام الملفات الجذري للبنية المعمارية الثانوية للبنية المعمارية المحلية (عادةً البنية المطابقة ذات 32 بت للبنية المحلية ذات 64 بت)
    root-secondary-verity | بيانات Verity لقسم نظام الملفات الجذري للبنية المعمارية الثانوية
    root-secondary-verity-sig | بيانات توقيع Verity لقسم نظام الملفات الجذري للبنية المعمارية الثانوية
    root-{arch} | قسم نظام الملفات الجذري للبنية المعمارية المعطاة (مثل root-x86-64 أو root-riscv64)
    root-{arch}-verity | بيانات Verity لقسم نظام الملفات الجذري للبنية المعمارية المعطاة
    root-{arch}-verity-sig | بيانات توقيع Verity لقسم نظام الملفات الجذري للبنية المعمارية المعطاة
    usr | نوع قسم نظام الملفات /usr/ المناسب للبنية المعمارية المحلية (اسم مستعار لنوع قسم نظام الملفات /usr/ لبنية معمارية مدرجة أدناه، مثلًا usr-x86-64)
    usr-verity | بيانات Verity لقسم نظام الملفات /usr/ للبنية المعمارية المحلية
    usr-verity-sig | بيانات توقيع Verity لقسم نظام الملفات /usr/ للبنية المعمارية المحلية
    usr-secondary | قسم نظام الملفات /usr/ للبنية المعمارية الثانوية للبنية المعمارية المحلية (عادةً البنية المطابقة ذات 32 بت للبنية المحلية ذات 64 بت)
    usr-secondary-verity | بيانات Verity لقسم نظام الملفات /usr/ للبنية المعمارية الثانوية
    usr-secondary-verity-sig | بيانات توقيع Verity لقسم نظام الملفات /usr/ للبنية المعمارية الثانوية
    usr-{arch} | قسم نظام الملفات /usr/ للبنية المعمارية المعطاة
    usr-{arch}-verity | بيانات Verity لقسم نظام الملفات /usr/ للبنية المعمارية المعطاة
    usr-{arch}-verity-sig | بيانات توقيع Verity لقسم نظام الملفات /usr/ للبنية المعمارية المعطاة

    يمكن أنواع الأقسام الخاصة ببنية معينة استخدام أحد معرّفات البنيات المعمارية هذه: alpha و arc و arm (32 بت) و arm64 (64 بت، المعروف أيضًا باسم aarch64) و ia64 و loongarch64 و mips-le و mips64-le و parisc و ppc و ppc64 و ppc64-le و riscv32 و riscv64 و s390 و s390x و tilegx و x86 (32 بت، المعروف أيضًا باسم i386) و x86-64 (64 بت، المعروف أيضًا باسم amd64).

    معظم معرّفات UUID لأنواع الأقسام المدرجة أعلاه معرّفة في مواصفة الأقسام القابلة للاكتشاف UAPI.2[1].

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

Label=
    اللاصقة النصية المراد تعيينها للقسم إذا لم تُعيّن واحدة بعد. لاحظ أن هذا الإعداد لا يُستخدم للمطابقة. كما أنه لا يُستخدم عندما تكون هناك لاصقة مُعيّنة بالفعل لقسم موجود. وبالتالي، يُستخدم فقط عند إنشاء قسم جديد أو عندما لا يكون للقسم الموجود لاصقة معيّنة (أي: لاصقة فارغة). إذا لم تُحدّد، تُستخدم آليًا لاصقة مشتقة من نوع القسم. توسيع المحددات البسيط مدعوم، انظر أدناه.

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

VolumeLabel=
    اللاصقة النصية المراد تعيينها لكتلة LUKS الفائقة (superblock) إذا كان ذلك قابلاً للتطبيق. إذا لم تُحدّد، تؤول مبدئيًا إلى السلسلة النصية نفسها الخاصة بلاصقة القسم (انظر Label= أعلاه)، ولكن مسبوقة بـ "luks-". ليس لهذا الإعداد أي تأثير إذا لم يكن التعمية مُمكّنًا لهذا القسم.

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

UUID=
    معرّف UUID المراد تعيينه للقسم إذا لم يُعيّن له واحد بعد. لاحظ أن هذا الإعداد لا يُستخدم للمطابقة. كما أنه لا يُستخدم عندما يكون معرّف UUID مُعيّنًا بالفعل لقسم موجود. وبذلك يُستخدم فقط عند إنشاء قسم جديد أو عندما يكون للقسم الموجود معرّف UUID مكوّن من أصفار بالكامل. إذا ضُبط على "null"، يُضبط معرّف UUID على أصفار بالكامل. وإذا لم يُحدّد، يُستخدم آليًا معرّف UUID مشتق من نوع القسم.

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

Priority=
    أولوية رقمية لإسنادها إلى هذا القسم، في النطاق من -2147483648...2147483647، حيث تشير القيم الأصغر إلى أولوية أعلى، والقيم الأكبر تشير إلى أولوية أدنى. تُستخدم هذه الأولوية في حالة لم تسمح قيود الحجم المضبوطة على الأقسام المعرّفة بملاءمة جميع الأقسام على مساحة القرص المتاحة. إذا لم تتسع الأقسام، تُحدّد أعلى أولوية قسم رقمية لجميع الأقسام المعرّفة، وتُحذف جميع الأقسام المعرّفة بهذه الأولوية من قائمة الأقسام الجديدة المراد إنشاؤها (وقد تكون متعددة، إذا استُخدمت الأولوية نفسها لأقسام متعددة). ثم تُجرّب خوارزمية الملاءمة مجددًا. وإذا لم تتسع الأقسام بعد ذلك، تُحدّد أعلى أولوية قسم رقمية حالية، وتُحذف الأقسام المطابقة لها أيضًا، وهكذا دواليك. لا تُحذف أبدًا الأقسام ذات الأولوية 0 أو أقل. وإذا حُذفت جميع الأقسام ذات الأولوية الأعلى من 0 وظلت الأقسام لا تتسع على الجهاز، تفشل العملية. لاحظ أن هذه الأولوية ليس لها أي تأثير على ترتيب الأقسام، ولأجل ذلك استخدم الترتيب الأبجدي لأسماء ملفات تعريف الأقسام. القيمة المبدئية هي 0.

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

Weight=
    وزن رقمي لإسناده إلى هذا القسم في النطاق 0...1000000. تُخصّص مساحة القرص المتاحة للأقسام المعرّفة وفقًا لأوزانها النسبية (مع مراعاة قيود الحجم المضبوطة عبر SizeMinBytes= و SizeMaxBytes=)، بحيث يحصل القسم ذو الوزن 2000 على ضعف المساحة التي يحصل عليها القسم ذو الوزن 1000، ويحصل القسم ذو الوزن 333 على ثلث ذلك. القيمة المبدئية هي 1000.

    يُستخدم إعداد Weight= لتوزيع مساحة القرص المتاحة بأسلوب "مرن"، بناءً على حجم القرص والأقسام الموجودة. إذا أُريد للقسم أن يكون بحجم ثابت، استخدم كلاً من SizeMinBytes= و SizeMaxBytes= بالقيمة نفسها لتثبيت الحجم على قيمة واحدة، وفي هذه الحالة لن يكون للوزن أي تأثير.

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

PaddingWeight=
    مشابه لـ Weight=، ولكنه يضبط وزنًا للمساحة الفارغة بعد القسم (الـ "حشوة"). عند توزيع المساحة المتاحة، يُجمع أوزان جميع الأقسام وجميع الحشوات المعرّفة، ثم يحصل كل قسم وحشوة على الكسر المحدد بواسطة وزنه. يؤول مبدئيًا إلى 0، أي لا تُطبّق أي حشوة مبدئيًا.

    تفيد الحشوة إذا أُريد ترك مساحة فارغة لإضافات لاحقة أو كهامش أمان عند نهاية الجهاز أو بين الأقسام.

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

SizeMinBytes=, SizeMaxBytes=
    يحدد قيود الحجم الدنيا والقصوى بالبايت. يقبل اللاحقات المعتادة K و M و G و T و ... (على أساس 1024). إذا حُدّد SizeMinBytes= فإن القسم يُنشأ أو يُوسّع ليكون على الأقل بالحجم المحدد. وإذا حُدّد SizeMaxBytes= فإن القسم يُنشأ أو يُوسّع ليكون على الأكثر بالحجم المحدد. يُحدّد الحجم الدقيق عبر قيمة الوزن المضبوطة بواسطة Weight=، انظر أعلاه. عند ضبط SizeMinBytes= مساويًا لـ SizeMaxBytes=، لا يكون للوزن المضبوط أي تأثير حيث يُحدّد حجم القسم صراحةً بالقيمة الثابتة المحددة. لاحظ أن الأقسام لا تُنشأ أبدًا بأقل من 4096 بايت، وبما أن الأقسام لا تُقَلّص أبدًا، فإن الحجم السابق للقسم (في حال كان القسم موجودًا بالفعل) يُفرض أيضًا كحد أدنى للحجم الجديد. ينبغي تحديد القيم كمضاعفات لـ 4096 بايت، وتُقرّب لأعلى (في حال SizeMinBytes=) أو لأسفل (في حال SizeMaxBytes=) خلاف ذلك. إذا لم يوفر الجهاز الخلفي مساحة كافية لتلبية القيود، ستفشل عملية وضع القسم. بالنسبة للأقسام المراد إنشاؤها، وبناءً على إعداد Priority= (انظر أعلاه)، قد يُسقط القسم وتُعاد خوارزمية الوضع من جديد. مبدئيًا، يُضبط قيد الحجم الأدنى على 10M ولا يُضبط قيد للحجم الأقصى.

    إذا ضُبط Format=، يُرفع الحد الأدنى للحجم آليًا إلى الحد الأدنى لحجم نظام الملفات الخاص بنوع نظام الملفات المحدد، إن كان معروفًا. علاوة على ذلك، بالنسبة لأقسام ESP/XBOOTLDR، يُرفع الحد الأدنى إلى 100M (لصور القطاعات بحجم 512 بايت) أو 260M (لصور القطاعات بحجم 4 كيلوبايت) آليًا، إذا حُدّد بقيمة أصغر.

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

PaddingMinBytes=, PaddingMaxBytes=
    يحدد قيود الحجم الدنيا والقصوى بالبايت للمساحة الفارغة بعد القسم (الـ "حشوة"). الدلالات مشابهة لـ SizeMinBytes= و SizeMaxBytes=، باستثناء أنه على عكس أحجام الأقسام، يمكن تقليص المساحة الفارغة ويمكن أن تصل إلى الصفر. مبدئيًا، لا تُضبط أي قيود حجم على الحشوة، بحيث يحدد PaddingWeight= وحده حجم الحشوة المطبقة.

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

CopyBlocks=
    يقبل مسارًا لملف عادي، أو عقدة جهاز كتلي، أو عقدة جهاز محرفي، أو دليل، أو القيمة الخاصة "auto". إذا حُدّد وكان القسم منشأً حديثًا، تُكتب البيانات من المسار المحدد إلى القسم المنشأ حديثًا، على مستوى الكتل. وإذا حُدّد دليل، يُحدّد الجهاز الكتلي الخلفي لنظام الملفات الذي يقع عليه الدليل، وتُقرأ البيانات منه مباشرة. هذا الخيار مفيد لنسخ أنظمة الملفات الموجودة بكفاءة إلى أقسام جديدة على مستوى الكتل — على سبيل المثال لبناء مثبت نظام تشغيل بسيط أو منشئ صور أنظمة تشغيل. حدد /dev/urandom كقيمة لتهيئة قسم ببيانات عشوائية.

    إذا حُدّدت القيمة الخاصة "auto"، يُلتقط المصدر المراد النسخ منه آليًا من النظام المشغل (أو الصورة المحددة عبر --image= — إن استُخدمت). ويُحدّد القسم الذي يطابق نوع القسم المضبوط (كما هو مُصرّح في Type= الموصوف أعلاه)، والدليل الموصول حاليًا والمناسب لنوع القسم ذاك. على سبيل المثال، إذا ضُبط نوع القسم على "root"، يُستخدم القسم الخلفي للدليل الجذري (/) كمصدر للنسخ منه — إن كان نوع قسمه مضبوطًا على "root" أيضًا. وإذا كان النوع المصرّح عنه هو "usr"، يُستخدم القسم الخلفي لـ /usr/ كمصدر لنسخ الكتل منه — إن كان نوع قسمه مضبوطًا على "usr" كذلك. هذا المنطق قادر على تتبع الأقسام الخلفية آليًا للمجلدات المعماة والمُمكّنة فيها تقنية Verity. يفيد خيار "CopyBlocks=auto" في تطبيق الأنظمة "ذاتية التكرار"، أي الأنظمة التي تكون هي المثبت لنفسها.

    يجب أن يكون للمملف المحدد هنا حجم من مضاعفات حجم الكتلة الأساسي 512 وألا يكون فارغًا. إذا استُخدم هذا الخيار، تُعدّل خوارزمية تخصيص الحجم قليلاً: يُنشأ القسم بحجم يكفي على الأقل ليتسع للبيانات، أي أن حجم البيانات يُعدّ قيمة حجم أدنى إضافية تُؤخذ في الحسبان ضمن خوارزمية التخصيص، على غرار قيمة SizeMinBytes= المضبوطة أعلاه وبالإضافة إليها.

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

    لا يمكن دمج هذا الخيار مع Format= أو CopyFiles=.

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

Format=
    يقبل اسم نظام ملفات، مثل "ext4" أو "btrfs" أو "xfs" أو "vfat" أو "erofs" أو "squashfs" أو القيمة الخاصة "swap". إذا حُدّد وكان القسم منشأً حديثًا، فإنه يُهَيّأ بنظام الملفات المحدد (أو كجهاز ذاكرة بديلة). يُشتق معرّف UUID ولاصقة نظام الملفات آليًا من معرّف UUID ولاصقة القسم. إذا استُخدم هذا الخيار، تُعدّل خوارزمية تخصيص الحجم قليلاً: يُنشأ القسم بحجم يكفي على الأقل لنظام الملفات الأدنى من النوع المحدد (أو 4KiB إذا لم يكن الحجم الأدنى معروفًا).

    يقبل هذا أيضًا قيمة وصفية (meta) خاصة وهي "empty". تحديدها يكافئ تحديد "Label=_empty" و "NoAuto=1".

    ليس لهذا الخيار أي تأثير إذا كان القسم موجودًا بالفعل.

    على غرار سلوك CopyBlocks=، يُهَيّأ نظام الملفات قبل إنشاء القسم، مما يضمن أن القسم لا يوجد أبدًا إلا بنظام ملفات مَهيّأ بالكامل.

    لا يمكن دمج هذا الخيار مع CopyBlocks=.

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

CopyFiles=
    يقبل ثلاثية مفصولة بنقطتين رأسيتين على الشاكلة "source[:target[:options]]". حيث يكون source مسارًا مطلقًا يشير إلى ملف مصدر أو دليل على المضيف. ويكون target مسارًا مطلقًا في نظام ملفات القسم المنشأ حديثًا ونظام الملفات المَهيّأ. وتكون options قائمة خيارات مفصولة بفاصلة حيث يأتي كل خيار على الشاكلة "key[=value]".

    يمكن استخدام هذا الإعداد لنسخ الملفات أو الأدلة من المضيف إلى نظام الملفات الذي أُنشئ بسبب خيار Format=. إذا استخدم خيار CopyFiles= دون تحديد Format= صراحةً، فسيُفترض الخيار "Format=" مع قيمة مبدئية مناسبة (حاليًا "vfat" للأقسام "ESP" و "XBOOTLDR"، و "ext4" في الحالات الأخرى، ولكن قد يتغير هذا في المستقبل). يمكن استخدام هذا الخيار عدة مرات لنسخ ملفات أو أدلة متعددة من المضيف إلى نظام الملفات المهيأ حديثًا.

    يمكن حذف مسار target وفي هذه الحالة يُستخدم مسار source أيضًا كمسار للهدف (نسبةً إلى جذر نظام الملفات المنشأ حديثًا). إذا كان مسار المصدر يشير إلى دليل، فإنه يُنسخ تكراريًا.

    يمكن أن تحتوي options على القيم التالية:

    fsverity=
        يمكن ضبطه على القيمة "off" (المبدئية في حال غياب الخيار) أو "copy". إذا ضُبط على "off" فلن تُفعل ميزة fs-verity لأي ملفات نُسخت إلى نظام الملفات من هذا المصدر. وإذا ضُبط على "copy" فستُنسخ معلومات fs-verity لكل ملف من ملف المصدر المقابل له.

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

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

    تُنفذ عملية النسخ قبل تسجيل نظام الملفات في جدول الأقسام، مما يضمن أن نظام الملفات الذي مُلئ بهذه الطريقة لا يوجد إلا وهو مجهّز بالكامل.

    لاحظ أن خيار CopyFiles= سيتخطى نسخ الملفات غير المدعومة من نظام الملفات الهدف (مثل الوصلات الرمزية، وأنابيب fifo، والمقابس، والأجهزة على vfat). وعند مواجهة نوع ملف غير مدعوم، سيتخطى systemd-repart نسخ هذا الملف ويكتب رسالة سجل حول ذلك.

    لاحظ أن systemd-repart لا يغير معرفات المستخدمين/المجموعات (UIDs/GIDs) لأي ملفات أو أدلة منسوخة. عند تشغيل systemd-repart كمستخدم غير ممتص الصلاحيات لبناء صورة من ملفات وأدلة يملكها المستخدم نفسه، يمكنك تشغيل systemd-repart في مساحة أسماء مستخدم مع ربط المستخدم الحالي بالمستخدم الجذر (root) للتأكد من أن الملفات والأدلة في الصورة مملوكة للمستخدم الجذر.

    لا يمكن دمج هذا الخيار مع CopyBlocks=.

    عند استدعاء systemd-repart(8) مع مفتاح سطر الأوامر --copy-source=، تؤخذ مسارات الملفات نسبةً إلى الدليل المحدد. إذا لم يُستخدم --copy-source=، ولكن استُخدمت المفاتيح --image= أو --root=، فتؤخذ مسارات المصدر نسبةً إلى دليل الجذر المحدد أو جذر صورة القرص.

    لاحظ أنه عند استخدام CopyFiles= مع Format=xfs، فإن حزمة xfsprogs بإصدار 6.17 أو أحدث تكون مطلوبة.

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

ExcludeFiles=, ExcludeFilesTarget=
    يأخذ مسارًا مطلقًا واحدًا أو أكثر، تفصل بينها مسافات بيضاء، ويشير كل منها إلى ملف مصدر أو دليل على المضيف. يمكن استخدام هذا الإعداد لاستبعاد ملفات أو أدلة من المضيف من النسخ إلى نظام الملفات عند استخدام CopyFiles=. يمكن استخدام هذا الخيار عدة مرات لاستبعاد ملفات أو أدلة متعددة من المضيف من النسخ إلى نظام الملفات المهيأ حديثًا.

    إذا كان المسار دليلًا وينتهي بـ "/"، فتُستثنى محتويات الدليل فقط وليس الدليل نفسه. وإذا كان المسار دليلًا ولا ينتهي بـ "/"، فيُستثنى الدليل ومحتوياته معًا.

    خيار ExcludeFilesTarget= يشبه ExcludeFiles= تمامًا باستثناء أنه بدلاً من استبعاد المسار على المضيف من النسخ إلى القسم، فإنه يستبعد أي ملفات وأدلة من النسخ إلى المسار المحدد داخل القسم.

    عند استدعاء systemd-repart(8) مع مفاتيح سطر الأوامر --image= أو --root=، تؤخذ المسارات المحددة نسبةً إلى دليل الجذر المحدد أو جذر صورة القرص.

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

MakeDirectories=
    يأخذ مسارًا مطلقًا واحدًا أو أكثر، تفصل بينها مسافات بيضاء، ويعلن كل منها عن دليل لإنشائه داخل نظام الملفات الجديد. السلوك مشابه لـ CopyFiles=، ولكن بدلاً من نسخ مجموعة من الملفات، يقوم هذا فقط بإنشاء الأدلة المحددة بالوضع المبدئي 0755 مملوكة للمستخدم والمجموعة الجذر (root)، بالإضافة إلى جميع أدلتها الأصلية (بنفس الملكية ووضع الوصول). لضبط أدلة بملكية أو وضع وصول مختلف، استخدم CopyFiles= وحدد شجرة مصدر لنسخها تحتوي على أدلة مملوكة/مضبوطة بشكل مناسب. يمكن استخدام هذا الخيار أكثر من مرة لإنشاء أدلة متعددة. وعند استخدام CopyFiles= و MakeDirectories= معًا، يُطبق الأول أولاً. إذا كان الدليل المدرج موجودًا بالفعل، فلا تُنفذ أي عملية (وعلى وجه الخصوص، تُترك ملكية/وضع وصول الأدلة كما هي).

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

    ضع في الحسبان استخدام systemd-tmpfiles(8) مع خيار --image= الخاص به لإنشاء تدرجات أدلة أخرى أكثر تعقيدًا مسبقًا (بالإضافة إلى العقد الفهرسية inodes الأخرى) مع تحكم دقيق في الملكية، وأوضاع الوصول، وسمات الملفات الأخرى.

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

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

    حالة الاستخدام الرئيسة لهذا الخيار هي إنشاء وصلات رمزية يجب أن تكون موجودة قبل تنفيذ systemd-tmpfiles(8). على سبيل المثال، عند استخدام systemd-confext(8)، يمكن استخدام هذا الإعداد لإنشاء وصلات رمزية في /var/lib/extensions.mutable لإعادة توجيه عمليات الكتابة إلى ملحقات ضبط confexts قابلة للتعديل إلى موقع مخصص.

    ضع في الحسبان استخدام systemd-tmpfiles(8) مع خيار --image= الخاص به لإنشاء وصلات رمزية أخرى مسبقًا (بالإضافة إلى العقد الفهرسية inodes الأخرى) مع تحكم دقيق في الملكية، وأوضاع الوصول، وسمات الملفات الأخرى.

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

Subvolumes=
    يأخذ مسارًا مطلقًا واحدًا أو أكثر، تفصل بينها مسافات بيضاء، ويعلن كل منها عن دليل يجب أن يكون حجمًا فرعيًا (subvolume) داخل نظام الملفات الجديد. يمكن اختياريًا أن يتبع كل مسار نقطتان رئيستان وقائمة من أعلام الحجوم الفرعية المفصولة بفاصلات. الأعلام التالية مفهومة:

    الجدول 2. أعلام الحجوم الفرعية
    علم | الغرض
    "ro" | اجعل هذا الحجم الفرعي للقراءة فقط.
    "nodatacow" | عطّل نسخ البيانات عند الكتابة (CoW) لهذا الحجم الفرعي.

    لاحظ أن هذا الخيار لا ينشئ الأدلة نفسها، بل يمكن ضبط ذلك باستخدام MakeDirectories= و CopyFiles=.

    لاحظ أن هذا الخيار لا يسري مفعوله إلا إذا كان نظام الملفات الهدف يدعم الحجوم الفرعية، مثل btrfs(8).

    لاحظ أن هذا الخيار مدعوم فقط بالاقتران مع --offline=yes منذ حزمة btrfs-progs بإصدار 6.12 أو أحدث.

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

DefaultSubvolume=
    يأخذ مسارًا مطلقًا يحدد الحجم الفرعي المبدئي داخل نظام الملفات الجديد. لاحظ أن هذا الإعداد لا ينشئ الحجم الفرعي نفسه، بل يمكن ضبط ذلك باستخدام Subvolumes=.

    لاحظ أن هذا الخيار لا يسري مفعوله إلا إذا كان نظام الملفات الهدف يدعم الحجوم الفرعية، مثل btrfs(8).

    لاحظ أن هذا الخيار مدعوم فقط بالاقتران مع --offline=yes منذ حزمة btrfs-progs بإصدار 6.12 أو أحدث.

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

BlockDeviceReplace=
    يأخذ مسارًا إلى نقطة وصل. سيُستبدل جهاز الدعم الخاص بنظام الملفات الخاص به بالقسم المُنشأ حديثًا. يعمل هذا فقط مع أنظمة ملفات btrfs. يُتجاهل هذا الخيار للأقسام الموجودة مسبقًا.

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

    هذا الخيار غير متوافق مع --offline=yes.

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

VolumeName=
    إذا أُنشئ قسم مُعمّى عبر Encrypt=، وبقي مُفعّلاً بعد انتهاء systemd-repart (باستخدام BlockDeviceReplace=)، فسيستخدم اسم وحدة تخزين مخطط الأجهزة المُنشأة الاسم المُحدد بواسطة VolumeName=.

    يجب أن تكون القيمة اسم ملف صالحًا. إذا لم تُحدد، فستكون مبدئيًا قيمة VolumeLabel= (التي قد تُشتق من Label=) إذا كانت صالحة.

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

Encrypt=
    يأخذ أحد القيم التالية: "off" و "key-file" و "tpm2" و "key-file+tpm2" (بدلاً من ذلك، يقبل أيضًا قيمة منطقية، والتي تُربط بـ "off" عندما تكون خطأ، و "key-file" عندما تكون صوابًا). قيمته المبدئية هي "off". إذا لم يكن "off"، فسيُهيأ القسم بكتلة عليا من نوع LUKS2، قبل نسخ الكتل المضبوطة باستخدام CopyBlocks= أو إنشاء نظام الملفات المضبوط باستخدام Format=.

    يُشتق معرف LUKS2 UUID آليًا من معرف القسم UUID بطريقة مستقرة. إذا استخدم "key-file" أو "key-file+tpm2"، فيُضاف مفتاح إلى الكتلة العليا لـ LUKS2، ويمكن ضبطه باستخدام خيار --key-file= الممرر إلى systemd-repart. وإذا استخدم "tpm2" أو "key-file+tpm2"، فيُضاف مفتاح إلى الكتلة العليا لـ LUKS2 ويُسجل في شريحة TPM2 المحلية، وفقًا لما هو مضبوط في خياري --tpm2-device= و --tpm2-pcrs= الممررين إلى systemd-repart.

    عند استخدامه، يغير هذا منطق تخصيص الحجم قليلاً حيث تزداد حدود الحجم الأدنى الضمنية لكل من Format= و CopyBlocks= بالمساحة اللازمة للكتلة العليا لـ LUKS2 (انظر أعلاه).

    ليس لهذا الخيار أي تأثير إذا كان القسم موجودًا بالفعل.

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

Discard=
    يأخذ وسيطًا منطقيًا. المبدئي هو "no" إذا استُخدم --discard=no لاستدعاء systemd-repart أو إذا ضُبط Integrity=inline. وإلا فهو "yes".

    إذا ضُبط على "yes"، عند إنشاء الكتلة الفائقة LUKS2 للقسم، فسيُضبط علم التفعيل "allow-discards" بحيث تسمح التفعيلات المستقبلية بالتجاهل مبدئيًا.

    ليس لهذا الخيار أي تأثير إذا كان القسم موجودًا مسبقًا أو إذا استُخدم Encrypt=off.

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

EncryptKDF=
    يُحدد دالة اشتقاق المفتاح (KDF) لاستخدامها في فتحات مفاتيح التعمية LUKS2. يأخذ واحدة من "argon2id" أو "pbkdf2" أو "minimal". إذا لم يُحدد، فالمبدئي يُحدد بواسطة مكتبة cryptsetup (عادةً "argon2id"). ليس لهذا الخيار أي تأثير إذا كان Encrypt= هو "off".

    عند الضبط على "argon2id" أو "pbkdf2"، يُستخدم KDF المُحدد مع معاملات مُقاسة بواسطة مكتبة cryptsetup. عند الضبط على "minimal"، يُستخدم PBKDF2 مع SHA-512 و 1000 تكرار وبدون قياس — هذا مناسب للمفاتيح عالية الإنتروبيا (مثلًا المُنشأة بواسطة مدير مفاتيح عتادي أو المُختومة في TPM) حيث يحتاج KDF فقط إلى تلبية متطلبات تنسيق LUKS2، وليس تقوية عبارة سرية ضعيفة.

    لاحظ أن دوال KDF القائمة على Argon2 قد تتطلب ذاكرة كبيرة (حتى 1 جيجابايت) أثناء اشتقاق المفتاح. في البيئات محدودة الذاكرة مثل kdump مع ذاكرة نواة تحطم محدودة، قد يكون "minimal" أو "pbkdf2" أكثر ملاءمة. عندما يتضمن Encrypt= "tpm2"، يستخدم فتحة مفتاح TPM2 دائمًا تهيئة PBKDF2 ضئيلة بغض النظر عن هذا الإعداد.

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

Verity=
    يأخذ أحد القيم التالية: "off" أو "data" أو "hash" أو "signature". قيمته المبدئية هي "off". إذا ضُبط على "off" أو "data"، فسيُملأ القسم بالمحتوى المحدد بواسطة CopyBlocks= أو CopyFiles=. وإذا ضُبط على "hash"، فسيُملأ القسم برموز تجزئة verity من قسم بيانات verity المطابق. وإذا ضُبط على "signature"، فسيُملأ القسم بكائن JSON يحتوي على توقيع لتجزئة الجذر لـ verity الخاصة بقسم تجزئة verity المطابق.

    قسم verity المطابق هو قسم له نفس مفتاح مطابقة verity (كما هو مضبوط باستخدام VerityMatchKey=).

    ما لم يُضبط صراحةً، فسيُضبط معرف UUID لقسم البيانات على أول 128 بت من تجزئة جذر verity. وبالمثل، إذا لم يُضبط، فسيُضبط معرف UUID لقسم التجزئة على آخر 128 بت من تجزئة جذر verity. ستُضمن تجزئة جذر verity نفسها في مخرجات systemd-repart.

    ليس لهذا الخيار أي تأثير إذا كان القسم موجودًا بالفعل.

    استخدام هذا الخيار بالاقتران مع Encrypt= غير مدعوم.

    لكل قيمة فريدة لـ VerityMatchKey=، يجب تعريف قسم بيانات verity واحد ("Verity=data") وقسم تجزئة verity واحد ("Verity=hash").

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

VerityMatchKey=
    يأخذ سلسلة معرف قصيرة يختارها المستخدم. يُستخدم هذا الإعداد للعثور على أقسام verity الشقيقة لقسم verity الحالي. انظر وصف Verity=.

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

VerityDataBlockSizeBytes=
    يضبط حجم كتلة البيانات لقسم تجزئة verity المُنشأ. يجب أن يكون بين 512 و 4096 بايت ويجب أن يكون من مضاعفات القوة 2. القيمة المبدئية هي حجم القطاع إذا ضُبط صراحةً، أو حجم قطاع الجهاز الكتلي الأساسي، أو 4K إذا كان systemd-repart لا يعمل على جهاز كتلي.

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

VerityHashBlockSizeBytes=
    يضبط حجم كتلة التجزئة لقسم تجزئة verity المُنشأ. يجب أن يكون بين 512 و 4096 بايت ويجب أن يكون من مضاعفات القوة 2. القيمة المبدئية هي حجم القطاع إذا ضُبط صراحةً، أو حجم قطاع الجهاز الكتلي الأساسي، أو 4K إذا كان systemd-repart لا يعمل على جهاز كتلي.

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

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

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

Flags=
    يضبط حقل أعلام قسم GPT عيار 64-بت لتعيينه للقسم عند إنشائه. ليس لهذا الخيار أي تأثير إذا كان القسم موجودًا بالفعل. وإذا لم يُحدد، فستُضبط قيمة الأعلام على أصفار بالكامل، باستثناء البتات الثلاثة التي يمكن ضبطها أيضًا عبر NoAuto= و ReadOnly= و GrowFileSystem=؛ انظر أدناه للحصول على تفاصيل حول القيم المبدئية لهذه الأعلام الثلاثة. حدد قيمة الأعلام بالنظام السداسي عشر (عن طريق بادئة "0x")، أو الثنائي (بادئة "0b") أو العشري (بدون بادئة).

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

NoAuto=, ReadOnly=, GrowFileSystem=
    يضبط أعلام القسم لا-تلقائي (No-Auto) والقراءة فقط (Read-Only) وتوسيع نظام الملفات (Grow-File-System) (البتات 63 و 60 و 59) لمدخل جدول الأقسام، كما هو محدد في مواصفة الأقسام القابلة للاكتشاف UAPI.2[1]. متاح فقط لأنواع الأقسام المدعومة بالمواصفة. هذا الخيار هو طريقة سهلة لضبط البتات 63 و 60 و 59 من قيمة أعلام القسم دون تعيين أي من البتات الأخرى، ويمكن ضبطه عبر خيار Flags= أيضًا، انظر أعلاه.

    إذا استخدم خيار Flags= بالتزامن مع واحد أو أكثر من خيارات NoAuto=/ReadOnly=/GrowFileSystem=، فإن الأخيرة تتحكم في قيمة الأعلام ذات الصلة، أي أن الإعدادات عالية المستوى NoAuto=/ReadOnly=/GrowFileSystem= تتجاوز البتات ذات الصلة في الإعداد منخفض المستوى Flags=.

    لاحظ أن الأعلام الثلاثة تؤثر فقط على وصل الأقسام الآلي، كما هو مطبق بواسطة systemd-gpt-auto-generator(8) أو خيار --image= لأوامر مختلفة (مثل systemd-nspawn(1)). وليس لها أي تأثير على عمليات الوصل الصريحة، مثل تلك التي تتم عبر mount(8) أو fstab(5).

    إذا ضُبط كل من البت 60 و 59 لقسم ما (أي أن القسم علم عليه كقراءة فقط وللتوسيع لنظام الملفات معًا)، فإن الأخير عادةً ما يكون بلا تأثير: فلعلم القراءة فقط الأولوية في معظم الأدوات التي تقرأ هذه الأعلام، وبما أن توسيع نظام الملفات يتطلب الكتابة إلى القسم، فإنه يُتجاهل تبعًا لذلك.

    القيمة المبدئية لـ NoAuto= هي الإيقاف (off). والقيمة المبدئية لـ ReadOnly= هي التشغيل (on) لأنواع أقسام Verity، والإيقاف (off) لجميع الأنواع الأخرى. والقيمة المبدئية لـ GrowFileSystem= هي التشغيل (on) لجميع أنواع الأقسام التي تدعمه، إلا إذا علم على القسم كقراءة فقط (وبالتالي فعليًا، تكون قيمته المبدئية هي الإيقاف لأقسام Verity).

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

SplitName=
    يضبط اللاحقة المراد إلحاقها بالقطع الفنية المقسمة (split artifacts) عند استخدام خيار --split لـ systemd-repart(8). توسيع المحددات البسيط مدعوم، انظر أدناه. قيمته المبدئية هي "%t". لتعطيل توليد القطع الفنية المقسمة لقسم ما، اضبط SplitName= على "-".

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

Minimize=
    يأخذ أحد القيم التالية: "off" و "best" و "guess" (بدلاً من ذلك، يقبل أيضًا قيمة منطقية، والتي تُربط بـ "off" عندما تكون خطأ، و "best" عندما تكون صوابًا). قيمته المبدئية هي "off". إذا ضُبط على "best"، فسيحصل القسم على الحد الأدنى من الحجم المطلوب لتخزين المصادر المضبوطة باستخدام CopyFiles=. خيار "best" مدعوم حاليًا فقط لأنظمة الملفات التي للقراءة فقط ولنظام btrfs. وإذا ضُبط على "guess"، فيُنشأ القسم بحجم كبير على الأقل بقدر ما هو مطلوب لتخزين المصادر المضبوطة باستخدام CopyFiles=. لاحظ أنه ما لم يكن نظام الملفات للقراءة فقط أو btrfs، فسيتعين على systemd-repart ملء نظام الملفات مرتين لتخمين الحد الأدنى للحجم المطلوب، لذا قد يؤدي تفعيل هذا الخيار إلى إبطاء عملية repart عند ملء أقسام كبيرة.

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

MountPoint=
    يحدد مكان وكيفية وصل القسم. يأخذ حقلاً واحدًا على الأقل وحقلين كحد أقصى يفصل بينهما نقطتان رئيستان (":"). يحدد الحقل الأول مكان وصل القسم. ويحدد الحقل الثاني خيارات وصل إضافية لإلحاقها بخيارات الوصل المبدئية. تقابل هذه الحقول العمودين الثاني والرابع من تنسيق fstab(5). نظرًا لاستخدام النقطتين الرئيستين للفصل بين الحقول، يجب وضع كل حقل بين علامتي اقتباس عندما يحتوي على نقاط رئيسة. على سبيل المثال:

        MountPoint="/path/with:colon":"zstd:1,noatime,lazytime"

    يمكن تحديد هذا الإعداد عدة مرات لوصل القسم عدة مرات. يمكن استخدام هذا لإضافة نقاط وصل لحجوم فرعية مختلفة من btrfs(8) تقع على قسم btrfs نفسه.

    لاحظ أن هذا الإعداد لا يؤخذ في الحسبان إلا عند تحديد --generate-fstab= في سطر أوامر systemd-repart.

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

EncryptedVolume=
    يحدد كيفية إعداد القسم المعمى. يأخذ حقلاً واحدًا على الأقل وأربعة حقول كحد أقصى تفصل بينها نقطتان رئيستان (":"). يحدد الحقل الأول اسم الجزء المعمى تحت /dev/mapper/. إذا لم يُحدد، فسيُصطلح على استخدام "luks-UUID" حيث "UUID" هو معرف LUKS UUID. ويحدد الحقل الثاني ملف المفتاح (keyfile) المراد استخدامه متبعًا التنسيق نفسه المحدد في crypttab. ويحدد الحقل الثالث قائمة مفصولة بفاصلات لخيارات crypttab. تقابل هذه الحقول الثلاثة الأعمدة الأول والثالث والرابع من تنسيق crypttab(5). ويحتوي الحقل الرابع على خيارات إضافية لا تنعكس مباشرة على خيارات crypttab. حاليًا، الخيار الإضافي الوحيد المدعوم هو fixate-volume-key. عند تحديده، ستؤخذ تجزئة مفتاح الجزء عند تهيئة جزء LUKS وتُضاف النتيجة إلى قائمة خيارات crypttab، أي ستُضاف fixate-volume-key=expected-hash إلى العمود الرابع من ملف crypttab المُنشأ.

    لاحظ أن هذا الإعداد لا يؤخذ في الحسبان إلا عند تحديد --generate-crypttab= في سطر أوامر systemd-repart. وبما أنه لا يمكن توليد ملف crypttab مع التجزئات المتوقعة إلا بعد تهيئة أجزاء LUKS، فلا يمكن وضع ملف crypttab نفسه في الجزء المُنشأ.

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

TPM2PCRs=
    يضبط قائمة سجلات PCR المراد استخدامها لأجزاء LUKS2 المضبوطة بإعداد Encrypt=tpm2 في ملفات الأقسام. يأخذ هذا الخيار المعلمات نفسها التي تأخذها الخيارات ذات الأسماء المشابهة في systemd-cryptenroll(1) وله التأثير نفسه على الأقسام التي يُطلب فيها تسجيل TPM2. سيتجاوز خيار --tpm2-pcrs= الشامل هذا الخيار.

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

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

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

Integrity=
    يفعل التحقق من السلامة للقسم. حاليًا، الخيار الوحيد المدعوم هو Integrity=inline الذي يفعل تعمية القرص المستوثقة لأجهزة LUKS2. يتطلب هذا الخيار إعداد Encrypt= ولا يمكن استخدامه إلا في بناء الصور المتصل بالشبكة (online). قيمته المبدئية هي "off"، أي أن حماية السلامة معطلة.

    ملاحظة: تُعد تعمية القرص المستوثقة تجريبية (EXPERIMENTAL) بواسطة cryptsetup.

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

IntegrityAlgorithm=
    يحدد خوارزمية السلامة المراد استخدامها للتحقق من السلامة. بالنسبة لخيار Integrity=inline، القيم المدعومة هي: "hmac-sha1"، و "hmac-sha256" (المبدئية)، و "hmac-sha512".

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

Compression=
    يحدد خوارزمية الضغط المراد استخدامها لنظام الملفات المضبوط باستخدام Format=. يأخذ وسيطًا واحدًا يحدد خوارزمية الضغط.

    لاحظ أن هذا الإعداد لا يُؤخذ في الحسبان إلا عندما يدعم نظام الملفات المضبوط بـ Format= الضغط ( btrfs(8)، و squashfs، و erofs(5)). إليك قائمة غير كاملة بخوارزميات الضغط التي تدعمها نظم الملفات المعروفة لـ systemd-repart:

    جدول 3. خوارزميات ضغط نظام الملفات
    نظام الملفات | خوارزميات الضغط | التوثيق
    squashfs | gzip, lzo, lz4, xz, zstd, lzma | mksquashfs(1)
    erofs | lz4, lz4hc, lzma, deflate, libdeflate, zstd | mkfs.erofs(1)
    btrfs | zlib, lzo, zstd | mkfs.btrfs(8)

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

CompressionLevel=
    يحدد مستوى الضغط المراد استخدامه لنظام الملفات المضبوط بـ Format=. يأخذ وسيطًا واحدًا يحدد مستوى الضغط المراد استخدامه لخوارزمية الضغط المضبوطة. مستويات الضغط الممكنة ومعناها خاصة بنظام الملفات (يرجى الرجوع إلى توثيق نظام الملفات لمعرفة المعنى الدقيق لمستوى ضغط معين).

    لاحظ أن هذا الإعداد لا يُؤخذ في الحسبان إلا عندما يدعم نظام الملفات المضبوط بـ Format= الضغط ويكون إعداد Compression= مضبوطًا صراحةً.

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

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

    تُدمج الحقول التالية في التعريف المستهدف بالطرق المحددة: يُعاد كتابة Weight= و PaddingWeight= ببساطة؛ ويستخدم SizeMinBytes= و PaddingMinBytes= القيمة الأكبر بين القيمتين؛ ويستخدم SizeMaxBytes= و PaddingMaxBytes= القيمة الأصغر؛ وتُقرن حقول CopyFiles=، و ExcludeFiles=، و ExcludeFilesTarget=، و MakeDirectories=، و Subvolumes= معًا.

    استخدام هذا الخيار بالاقتران مع CopyBlocks=، أو Encrypt=، أو Verity= غير مدعوم. لا يمكن للتعريف المستهدف ضبط هذه الإعدادات أيضًا. ولا يمكن للتعريف أن يكون تكميليًا ويعمل كمستهدف لتعريف تكميلي آخر في نفس الوقت. ولا يمكن للمستهدف أن يرتبط به أكثر من قسم تكميلي واحد.

    على سبيل المثال، يمكن للتوزيعات استخدام هذا لتطبيق $BOOT كما هو معرّف في مواصفة محمل الإقلاع UAPI.1[2]. قد تفضل التوزيعات استخدام ESP كـ $BOOT كلما أمكن ذلك، ولكن للالتزام بالمواصفة يجب استخدام XBOOTLDR أحيانًا بدلًا من ذلك. لذا، ينبغي لها إنشاء تعريفين: الأول يعرّف ESP كبيرًا بما يكفي لاحتواء محمل الإقلاع فقط، والثاني لـ XBOOTLDR يكون كبيرًا بما يكفي لاحتواء النوى ومضبوطًا كملحق لـ ESP. يحاول systemd-repart(8) دمج التعريفين لإنشاء ESP واحد كبير كلما أمكن ذلك، ولكن إذا لم يكن ذلك مسموحًا به بسبب الظروف الحالية على القرص، فسيُنشأ ESP صغير و XBOOTLDR كبير بدلًا من ذلك.

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

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

AddValidateFS=
    يأخذ وسيطًا منطقيًا. في حال تفعيله، سيضبط السمات الممتدة user.validatefs.gpt_label و user.validatefs.gpt_type_uuid و user.validatefs.mount_point على العقدة الفهرسية الرئيسة لنظام الملفات المهيأ لتطابق لصائق القسم، ومعرّفات UUID لنوع القسم، ونقطة الوصل المقصودة لنظام الملفات. يُفعل مبدئيًا إذا استخدم Format= ولم يكن الوسيط المحدد "swap" ولا "vfat".

    تُقرأ هذه السمات الممتدة بواسطة systemd-validatefs@.service(8) و قد تُرمّز قيودًا على نظم الملفات الموصولة والتي يجب الوفاء بها لكي يقلع النظام بنجاح. هذا مهم بشكل خاص في سيناريوهات systemd-gpt-auto-generator(8)، والتي تجمع هرمية الوصل من بيانات غير موثوقة من جدول أقسام GPT. بما أن هذه السمات الممتدة تُخزن داخل نظام الملفات، فإنه يجري الاستيثاق منها عادةً كجزء من نظام الملفات (بافتراض احتوائه في حجم محمي؛ أي LUKS أو dm-verity)، وبالتالي يمكن استخدامها للتحقق بأمان من حقول جدول الأقسام المطابقة.

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

FileSystemSectorSize=
    يتحكم في حجم القطاع لأي نظام ملفات أو حجم LUKS أو حجم Verity يُهيأ على هذا القسم. يتوقع قيمة من مضاعفات القوة 2، ويجب أن تكون مساوية لـ 512 أو أكبر منها. يُوصى عادةً بضبط حجم قطاع نظام الملفات على 4096، حتى على الأقراص ذات القطاع 512 (وخاصةً للصور التي يُعتزم تخزينها كملف على الأقراص فقط)، وذلك لتحسين الأداء. ومع ذلك، من أجل التوافق مع أنظمة التشغيل الخارجية أو البرمجيات المثبتة، قد يكون من المستحسن استخدام حجم القطاع الأصلي للقرص المساعد.

    إذا لم يُحدد وكان العمل يجري على جهاز كتلي، فإنه يعود مبدئيًا إلى حجم القطاع الأصلي للجهاز. وإذا لم يُحدد وكان العمل يجري على ملف صورة قرص، فإنه يعود مبدئيًا إلى 4096.

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

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

المحددات

يمكن استخدام المحددات في إعدادات Label= و CopyBlocks= و CopyFiles= و MakeDirectories= و SplitName=. تُفهم التوسيعات التالية:

جدول 4. المحددات المتاحة
المحدد | المعنى | التفاصيل
"%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) لمزيد من المعلومات.
"%q" | اسم المضيف الجميل | اسم المضيف الجميل للنظام المشغل، كما يُقرأ من حقل PRETTY_HOSTNAME= في /etc/machine-info. إذا لم يُضبط، يُحل إلى اسم المضيف القصير. انظر machine-info(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". (لاحظ أن الدليل قد يُحدد بدون شرطة مائلة لاحقة.)
"%%" | علامة مئوية مفردة | استخدم "%%" بدلاً من "%" لتحديد علامة مئوية مفردة.

بالإضافة إلى ذلك، بالنسبة لإعداد SplitName=، تُفهم أيضًا المحددات التالية:

جدول 5. المحددات المتاحة
المحدد | المعنى | التفاصيل
"%T" | Partition Type UUID | معرّف UUID لنوع القسم، كما هو مضبوط بـ Type=
"%t" | معرّف نوع القسم | معرّف نوع القسم المقابل لمعرّف UUID لنوع القسم
"%U" | Partition UUID | معرّف UUID للقسم، كما هو مضبوط بـ UUID=
"%n" | Partition Number | رقم القسم المعين للقسم

البيئة

يمكن توفير خيارات تهيئة إضافية لنظام الملفات باستخدام متغيرات البيئة الخاصة بنظام الملفات: $SYSTEMD_REPART_MKFS_OPTIONS_BTRFS، و $SYSTEMD_REPART_MKFS_OPTIONS_XFS، و $SYSTEMD_REPART_MKFS_OPTIONS_VFAT، و $SYSTEMD_REPART_MKFS_OPTIONS_EROFS، و $SYSTEMD_REPART_MKFS_OPTIONS_SQUASHFS. يقبل كل متغير وسائط سطر أوامر صالحة لـ mkfs.filesystem. تُمرر محتويات تلك المتغيرات كما هي إلى الأمر، دون أي تحقق.

أمثلة

مثال 1. توسيع القسم الرئيس ليَشغل كامل حجم القرص عند الإقلاع الأول

باستخدام الملف التالي، يُوسع القسم الرئيس آليًا ليَشغل كامل القرص إذا أمكن ذلك أثناء الإقلاع.

    # /usr/lib/repart.d/50-root.conf
    [Partition]
    Type=root

مثال 2. إنشاء قسمي الذاكرة البديلة (swap) والمنزل (home) آليًا عند الإقلاع، في حال فقدهما

يأخذ قسم المنزل كل مساحة القرص المتاحة بينما يأخذ قسم الذاكرة البديلة 1 جيجابايت على الأكثر و 64 ميجابايت على الأقل. اضُبطت أولوية > 0 على قسم الذاكرة البديلة لضمان عدم استخدام قسم الذاكرة البديلة إذا لم تتوفر مساحة كافية. لكل ثلاثة بايتات تُعين لقسم المنزل، يُعين بايت واحد لقسم الذاكرة البديلة.

    # /usr/lib/repart.d/60-home.conf
    [Partition]
    Type=home

    # /usr/lib/repart.d/70-swap.conf
    [Partition]
    Type=swap
    SizeMinBytes=64M
    SizeMaxBytes=1G
    Priority=1
    Weight=333

مثال 3. إنشاء أقسام B في إعداد A/B Verity، في حال فقدها

لنفترض أن المورد ينوي تحديث صور نظام التشغيل في إعداد A/B، أي بقسمين رئيسين (وقسمي Verity مطابقين لهما) تُستخدم بالتناوب أثناء الترقيات. لتقليل أحجام الصور، تُشحن الصورة الأصلية بقسم رئيس واحد وقسم Verity واحد فقط (المجموعة "A")، ويُنشأ القسم الرئيس الثاني وقسم Verity الثاني (المجموعة "B") عند الإقلاع الأول في المساحة الحرة على الوسيط.

    # /usr/lib/repart.d/50-root.conf
    [Partition]
    Type=root
    SizeMinBytes=512M
    SizeMaxBytes=512M

    # /usr/lib/repart.d/60-root-verity.conf
    [Partition]
    Type=root-verity
    SizeMinBytes=64M
    SizeMaxBytes=64M

تغطي التعريفات المذكورة أعلاه المجموعة "A" من القسم الرئيس (بحجم ثابت 512 ميجابايت) وقسم Verity للقسم الرئيس (بحجم ثابت 64 ميجابايت). لنستخدم الوصلات الرمزية لإنشاء المجموعة "B" من الأقسام، ففي النهاية يجب أن تمتلك نفس الخصائص والأحجام مثل المجموعة "A".

    # ln -s 50-root.conf /usr/lib/repart.d/70-root-b.conf
    # ln -s 60-root-verity.conf /usr/lib/repart.d/80-root-verity-b.conf

مثال 4. إنشاء قسم بيانات وأقسام verity مطابقة له من شجرة نظام تشغيل

بافتراض أن لدينا شجرة نظام تشغيل في /var/tmp/os-tree نريد حزمها في قسم رئيس مع أقسام verity مطابقة لها، يمكننا القيام بذلك كما يلي:

    # 50-root.conf
    [Partition]
    Type=root
    CopyFiles=/var/tmp/os-tree
    Verity=data
    VerityMatchKey=root
    Minimize=guess

    # 60-root-verity.conf
    [Partition]
    Type=root-verity
    Verity=hash
    VerityMatchKey=root
    # Explicitly set the hash and data block size to 4K
    VerityDataBlockSizeBytes=4096
    VerityHashBlockSizeBytes=4096
    Minimize=best

    # 70-root-verity-sig.conf
    [Partition]
    Type=root-verity-sig
    Verity=signature
    VerityMatchKey=root

انظر أيضًا

systemd(1), systemd-repart(8), sfdisk(8), systemd-cryptenroll(1)

ملاحظات

1.  UAPI.2 مواصفات الأقسام القابلة للاكتشاف
    https://uapi-group.org/specifications/specs/discoverable_partitions_specification

2.  مواصفات محمل الإقلاع UAPI.1
    https://uapi-group.org/specifications/specs/boot_loader_specification/

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

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

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