table of contents
- trixie-backports 4.31.0-1~bpo13+1
- testing 4.31.0-1
- unstable 4.31.0-1
| SYSTEMD-REPART(8) | systemd-repart | 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 المثبتة، لا ينفذ أي عملية.
حالات الاستخدام التالية من بين تلك المشمولة:
الخوارزمية التي ينفذها systemd-repart هي تقريبًا كما يلي:
كاستثناء من العملية التزايدية العادية، عند استدعائه في وضع "إعادة ضبط المصنع" خاص، يمكن استخدام 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=
أُضيف في الإصدار 245.
--empty=
إذا كان "refuse"، يتطلب systemd-repart أن جهاز الكتلة الذي سيعمل عليه يحمل بالفعل جدول أقسام ويرفض العملية إذا لم يُعثر على أي جدول. إذا كان "allow"، سيقوم الأمر بتوسيع جدول أقسام موجود أو إنشاء جدول جديد إذا لم يكن موجودًا. إذا كان "require"، سيقوم الأمر بإنشاء جدول أقسام جديد إذا لم يكن موجودًا حتى الآن، ويرفض العملية إذا كان موجودًا بالفعل. إذا كان "force"، سيقوم بإنشاء جدول أقسام جديد بشكل غير مشروط، مما يمحو القرص بالكامل فعليًا. إذا كان "force"، لن يُؤخذ أي أقسام موجودة في الاعتبار أو البقاء بعد العملية. وبالتالي: استخدم بحذر، فهذه طريقة رائعة لفقدان جميع بياناتك. إذا كان "create"، يُنشئ ملف حلقة جديد تحت المسار الذي تم تمريره عبر معلمة عقدة الجهاز، بالحجم المشار إليه بـ --size=، انظر أدناه.
أُضيف في الإصدار 245.
--discard=
أُضيف في الإصدار 245.
--size=
يأخذ الخيار --size=auto أحجام الأقسام الموجودة مسبقًا في الاعتبار. ومع ذلك، فإنه لا يستوعب جداول الأقسام غير المعبأة بإحكام: قد لا تتناسب الأقسام المهيأة مع الجهاز الداعم إذا كانت هناك مساحة فارغة بين الأقسام الموجودة مسبقًا (أو قبل القسم الأول) لا يمكن ملؤها بالكامل بواسطة الأقسام المراد تكبيرها أو إنشاؤها.
لاحظ أيضًا أن تحديد الحجم الآلي لا يأخذ في الاعتبار الملفات أو الدلائل المحددة مع CopyFiles=: قد تفشل العملية إذا كانت الملفات أو الدلائل المحددة تتطلب مساحة قرص أكبر من حد الحجم الأدنى لكل قسم مهيأ.
أُضيف في الإصدار 246.
--factory-reset=
أُضيف في الإصدار 245.
--can-factory-reset
أُضيف في الإصدار 245.
--root=
انظر --copy-source= للحصول على خيار أكثر تقييدًا يؤثر فقط على CopyFiles=.
أُضيف في الإصدار 245.
--image=
أُضيف في الإصدار 249.
--image-policy=السياسة
--seed=
أُضيف في الإصدار 245.
--pretty=
أُضيف في الإصدار 245.
--definitions=
يمكن تحديد هذا المعامل عدة مرات.
أُضيف في الإصدار 245.
--key-file=
أُضيف في الإصدار 247.
--private-key=
أُضيف في الإصدار 252.
--private-key-source=
أُضيف في الإصدار 256.
--certificate=
أُضيف في الإصدار 252.
--certificate-source=
أُضيف في الإصدار 257.
--join-signature=
هذا بديل للتوقيع المتصل باستخدام معاملات مثل --private-key=، لأنظمة البناء حيث المفتاح الخاص لتوقيع الإنتاج غير متوفر في نفس السياق الذي يُنشأ فيه المحتوى.
أُضيف في الإصدار 258.
--tpm2-device=, --tpm2-pcrs=
أُضيف في الإصدار 248.
--tpm2-device-key=PATH, --tpm2-seal-key-handle=HANDLE
أُضيف في الإصدار 255.
--tpm2-public-key=المسار، --tpm2-public-key-pcrs=PCR[+PCR...]
أُضيف في الإصدار 252.
--tpm2-pcrlock=المسار
أُضيف في الإصدار 255.
--split=BOOL
لاحظ أن --split مستقل عن --dry-run. حتى إذا كان --dry-run مفعّلاً، ستظل القطع المجزأة تُنشأ من صورة موجودة إذا كان --split مفعّلاً.
أُضيف في الإصدار 252.
--include-partitions=PARTITIONS, --exclude-partitions=PARTITIONS
أُضيف في الإصدار 253.
--defer-partitions=PARTITIONS
أُضيف في الإصدار 253.
--defer-partitions-empty=yes
أُضيف في الإصدار 259.
--defer-partitions-factory-reset=yes
أُضيف في الإصدار 259.
--sector-size=بايت
أُضيف في الإصدار 253.
--grain-size=بايت
أُضيف في الإصدار 261.
--architecture=بنية
أُضيف في الإصدار 254.
--offline=قيمة_منطقية
أُضيف في الإصدار 254.
--copy-from=مسار
أُضيف في الإصدار 255.
--copy-source=PATH, -s PATH
أُضيف في الإصدار 255.
--make-ddi=نوع
يجب استخدامه بالتزامن مع --copy-source= لتحديد التسلسل الهرمي للملفات لملء DDI به. يجب أن يحتوي الدليل المُحدد على دليل فرعي etc/ إذا اختير "confext". إذا اختير "sysext" فيجب أن يحتوي على دليل usr/ أو opt/، أو كليهما. إذا استُخدم "portable" فيمكن توفير تسلسل هرمي كامل لنظام التشغيل.
هذا الخيار يستلزم --empty=create و--size=auto و--seed=random (يمكن تجاوز الأخيرين).
يجب تحديد المفتاح الخاص والشهادة لتوقيع DDI عبر المفاتيح --private-key= و--certificate=.
أُضيف في الإصدار 255.
-S, -C, -P
أُضيف في الإصدار 255.
--append-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
أُضيف في الإصدار 256.
--generate-crypttab=PATH
أُضيف في الإصدار 256.
--list-devices
أُضيف في الإصدار 257.
--el-torito=منطقي
سيكون نظام الملفات ISO9660 الذي يُنشئه فارغًا. يُتوقع من initramfs إنشاء جهاز حلقة قابل للتقسيم فوق الجهاز لتغيير حجم الكتلة وتمكين أقسام GPT.
يتطلب القرص قسمًا واحدًا على الأقل مع Type=esp. سيكون أول قسم هو المُشار إليه في كتالوج الإقلاع.
أُضيف في الإصدار 261.
--el-torito-system=سلسلة محارف
القيمة محدودة بـ 32 حرفًا.
أُضيف في الإصدار 261.
--el-torito-volume=سلسلة محارف
القيمة محدودة بـ 32 حرفًا.
أُضيف في الإصدار 261.
--el-torito-publisher=سلسلة محارف
القيمة محدودة بـ 128 حرفًا.
أُضيف في الإصدار 261.
-h، --help
--version
--no-pager
--no-legend
--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.
- الخدمات المحمولة
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| systemd 261~rc3 |