systemd-repart بر
اساس
فایلهای
پیکربندی
شرح داده
شده در repart.d(5)،
جدولهای
پارتیشن را
ایجاد
میکند و
پارتیشنها
را اضافه
مینماید
یا گسترش
میدهد. این
ابزار بر
روی دستگاه
بلوکی یا
فایل ایمیج
مشخصشده
در خط فرمان
عمل
میکند.
systemd-repart هنگام
ساخت
ایمیجهای
سیستمعامل
و همچنین
هنگام
استقرار
ایمیجها
برای تطبیق
خودکار
آنها در
حین بوت با
سیستمی که
روی آن اجرا
میشوند،
به کار
میرود. از
این طریق
ایمیج
میتواند
از نظر
اندازه
کمینه باشد
و در حین بوت
بهطور
خودکار
افزایش
یافته و
فضای دیسک
در دسترس را
در اختیار
بگیرد.
اگر بدون
هیچ
آرگومانی
فراخوانی
شود، systemd-repart
روی دستگاه
بلوکی
پشتیبان
پارتیشن
فایلسیستم
ریشه
سیستمعامل
در حال اجرا
عمل میکند
و بدین
ترتیب
پارتیشنهای
خود
سیستمعامل
بوتشده را
اضافه کرده
و گسترش
میدهد.
هنگامی که
در initrd
فراخوانی
شود، در عوض
روی دستگاه
بلوکی
پشتیبان /sysroot/
عمل
میکند،
یعنی روی
دستگاه
بلوکی که
سیستم به
زودی به آن
منتقل
خواهد شد.
اگر --image=
استفاده
شود، روی
دستگاه یا
فایل ایمیج
مشخصشده
عمل خواهد
کرد. سرویس
systemd-repart.service
معمولاً در
حین بوت در initrd
اجرا
میشود تا
جدول
پارتیشن
سیستمعامل
را پیش از
سوار شدن (mount)
پارتیشنهای
آن گسترش
دهد.
اگر
دستگاه
بلوکی به
صورت "-" (یا
به عنوان یک
رشته خالی)
مشخص شود،
systemd-repart روی هیچ
دستگاه
بلوکی یا
فایل
ایمیجی عمل
نخواهد کرد
و در عوض با
در نظر
گرفتن تمام
محدودیتهای
اندازه
پیکربندیشده،
حداقل
اندازه
دیسک/ایمیج
را برای
پیکربندی
پارتیشن
مشخصشده
تعیین کرده
و خروجی
میدهد.
عملیاتهای
systemd-repart عمدتاً
افزایشی
هستند: این
ابزار
پارتیشنهای
موجود را
گسترش
میدهد یا
پارتیشنهای
جدید اضافه
میکند،
اما
پارتیشنهای
موجود را
کوچک، حذف
یا جابهجا
نمیکند.
این سرویس
برای اجرا
در هر بار
بوت در نظر
گرفته شده
است، اما
هنگامی که
تشخیص دهد
جدول
پارتیشن از
قبل با
فایلهای
پیکربندی
نصبشده repart.d/*.conf
مطابقت
دارد، هیچ
عملیاتی
انجام
نمیدهد.
موارد
کاربرد زیر
از جمله
مواردی
هستند که
پوشش داده
شدهاند:
•پارتیشن
ریشه ممکن
است رشد
داده شود تا
کل فضای
دیسک موجود
را پوشش
دهد.
•یک
پارتیشن /home/، swap
یا /srv/
میتواند
اضافه شود.
•یک
پارتیشن
ریشه دوم (یا
سوم و ...) ممکن
است اضافه
شود تا
ساختارهای
به سبک A/B را
پوشش دهد که
در آنها
نسخه دوم
فایلسیستم
ریشه به طور
متناوب
برای
پیادهسازی
طرحهای
بهروزرسانی
استفاده
میشود.
ایمیج
مستقر شده
تنها حامل
یک پارتیشن
("A") خواهد
بود، اما در
اولین بوت،
پارتیشن
دوم ("B") برای
این منظور
بهطور
خودکار
ایجاد
میشود.
الگوریتم
اجرا شده
توسط systemd-repart
تقریباً به
شرح زیر
است:
1.فایلهای
پیکربندی
repart.d/*.conf بارگیری
و تجزیه شده
و بر اساس
نام فایل
(بدون
پیشوند
پوشه) مرتب
میشوند.
برای هر
فایل
پیکربندی،
فایلهای
قطرهای (drop-in)
از
پوشههایی
با همان نام
فایل
پیکربندی
به همراه
پسوند ".d"
بارگیری
میشوند.
2.جدول
پارتیشن
روی دستگاه
بلوکی، در
صورت وجود،
بارگیری و
تجزیه
میشود.
3.پارتیشنهای
موجود در
جدول
پارتیشن بر
اساس UUID نوع
پارتیشن GPT با
فایلهای
repart.d/*.conf مطابقت
داده
میشوند. به
نخستین
پارتیشن
موجود از یک
نوع خاص،
نخستین
فایل
پیکربندی
که همان نوع
را اعلان
کرده
اختصاص
داده
میشود. سپس
به دومین
پارتیشن
موجود از یک
نوع خاص،
دومین فایل
پیکربندی
اعلانکننده
همان نوع
اختصاص
مییابد و
به همین
ترتیب. پس از
تکمیل این
انتساب
تکرارشونده،
هر پارتیشن
موجودی که
هیچ فایل
پیکربندی
منطبقی
نداشته
باشد
"بیگانه" (foreign)
در نظر
گرفته شده و
به همان
صورت رها
میشود. و هر
فایل
پیکربندی
که هیچ
پارتیشنی
با آن
مطابقت
داده نشده
باشد، به
عنوان
درخواستی
برای ایجاد
یک پارتیشن
در نظر
گرفته
میشود.
4.اکنون
پارتیشنهایی
که باید
ایجاد شوند
با در نظر
گرفتن
محدودیتهای
اندازه و
وزنهای
اعلانشده
در
فایلهای
پیکربندی،
روی دیسک
تخصیص
مییابند.
فضای خالی
در محدوده
تعیینشده
توسط
درخواستهای
اندازه و
لایهگذاری
(padding) استفاده
میشود.
علاوه بر
این،
پارتیشنهای
موجودی که
باید رشد
کنند،
گسترش
مییابند.
پارتیشنهای
جدید همیشه
به انتهای
جدول
پارتیشن
الحاق
میشوند و
نخستین
شیار (slot) جدول
پارتیشن را
که نمایه (index)
آن از
نمایههای
تمام
پارتیشنهای
موجود
بزرگتر
است به خود
اختصاص
میدهند.
پارتیشنها
هرگز
بازآرایی
نمیشوند و
بنابراین
شمارههای
پارتیشن
پایدار
میمانند.
هنگامی که
پارتیشنها
ایجاد
میشوند،
در
کوچکترین
بخش از فضای
خالی که
برای
برآوردن
محدودیتهای
اندازه و
لایهگذاری
به اندازه
کافی بزرگ
باشد، قرار
میگیرند.
این بدان
معناست که
ترتیب
پارتیشنها
روی دیسک
ممکن است با
جدول
پارتیشن
متفاوت
باشد. توجه
داشته
باشید که
این تخصیص
تنها در
حافظه رخ
میدهد و
جدول
پارتیشن
روی دیسک
هنوز
بهروزرسانی
نشده است.
5.به تمام
پارتیشنهای
موجودی که
فایلهای
پیکربندی
برای آنها
وجود دارد و
در حال حاضر
برچسب
پارتیشن GPT
ندارند، یک
برچسب
اختصاص
داده
میشود؛ یا
بهطور
صریح در
پیکربندی
تنظیم شده
است یا – در
صورت عدم
وجود –
بهطور
خودکار از
نوع
پارتیشن
مشتق
میشود.
همین کار
برای تمام
پارتیشنهایی
که تازه
ایجاد
شدهاند
نیز انجام
میپذیرد.
این
انتسابها
نیز تنها در
حافظه
انجام
میشوند و
دیسک هنوز
بهروزرسانی
نشده است.
6.به طور
مشابه، به
تمام
پارتیشنهای
موجودی که
فایلهای
پیکربندی
برای آنها
وجود دارد و
در حال حاضر
UUID شناسایی
کاملاً صفر
دارند، یک UUID
جدید
اختصاص
داده
میشود. این
UUID به روش
رمزنگاری
از یک مقدار
بذر (seed) مشترک
به همراه UUID
نوع
پارتیشن (و
یک شمارنده
در صورتی که
چندین
پارتیشن از
یک نوع
تعریف شده
باشند) هش
میشود، به
بخش زیر
مراجعه
کنید. همین
کار برای
تمام
پارتیشنهایی
که از نو
ایجاد
میشوند
نیز انجام
میپذیرد.
این
انتسابها
نیز فقط در
حافظه
انجام
میشوند و
دیسک هنوز
بهروزرسانی
نشده است.
7.به طور
مشابه، اگر UUID
حجم (volume UUID) دیسک
کاملاً صفر
باشد،
مقداردهی
اولیه
میشود که
آن نیز از
همان مقدار
بذر مشترک
به روش
رمزنگاری
هش میگردد.
این کار نیز
صرفاً در
حافظه
انجام
میشود.
8.فضای
دیسک
اختصاصیافته
به
پارتیشنهای
جدید (یعنی
آنچه قبلاً
فضای خالی
بود) اکنون
پاک میشود.
بهطور
مشخص، تمام
امضاهای
فایلسیستم
حذف
میشوند و
در صورتی که
دستگاه از
آن
پشتیبانی
کند، دستور
کنترل
ورودی/خروجی
BLKDISCARD صادر
میشود تا
به
سختافزار
اطلاع دهد
که فضا
اکنون خالی
است. علاوه
بر این،
هرگونه
"لایهگذاری"
بین
پارتیشنها
و در انتهای
دستگاه نیز
به طور
مشابه پاک
میشود.
9.در
نهایت،
جدول
پارتیشن
جدید روی
دیسک نوشته
میشود. از
کرنل
خواسته
میشود تا
جدول
پارتیشن را
بازخوانی
کند.
به عنوان
یک استثنا
در عملکرد
افزایشی
معمول،
هنگامی که
systemd-repart در حالت
ویژه
"بازنشانی
به تنظیمات
کارخانه" (factory
reset) فراخوانی
شود، ممکن
است برای
پاک کردن
پارتیشنهای
موجود جهت
بازنشانی
یک نصب به
پیشفرضهای
سازنده
استفاده
شود. این
حالت
عملکرد
زمانی
استفاده
میشود که
سوئیچ --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.
شناسههای
UUID
مشخصکننده
پارتیشنهای
جدید ایجاد
شده (یا
اختصاصیافته
به
پارتیشنهای
موجود که
هنوز UUID
ندارند)، و
همچنین کل
دیسک به
عنوان یک
کل، به روش
رمزنگاری
از یک مقدار
بذر (seed) مشترک
هش میشوند.
این مقدار
بذر
معمولاً
machine-id(5) سیستم
است، به
طوری که
شناسه
ماشین به
شکل
تکرارپذیر
UUIDهای
اختصاصیافته
به تمام
پارتیشنها
را تعیین
میکند. اگر
شناسه
ماشین قابل
خواندن
نباشد (یا
کاربر --seed=random
را ارسال
کند، به زیر
مراجعه
کنید) بذر در
عوض به طور
تصادفی
تولید
میشود تا
UUIDهای
پارتیشن
نیز در عمل
تصادفی
باشند.
مقدار بذر
همچنین
ممکن است
بهطور
صریح و در
قالب یک UUID از
طریق گزینه
--seed= تنظیم
شود. با هش
کردن این
UUIDها از یک
بذر مشترک،
ایمیجهای
آمادهشده
با این
ابزار
تکرارپذیر
شده و نتیجه
الگوریتم
فوق قطعی (deterministic)
خواهد بود.
آرگومان
مکانی باید
دستگاه
بلوکی یا یک
فایل
معمولی را
برای انجام
عملیات
مشخص کند.
اگر --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" باشد، یک
فایل
لوپبک (loopback)
جدید در
مسیری که از
طریق
پارامتر
گره دستگاه
ارسال شده
ایجاد
میشود، با
اندازهای
که با --size=
نشان داده
شده است، به
زیر مراجعه
کنید.
در نسخه 245
اضافه شد.
--discard=
یک مقدار
بولی
میگیرد.
اگر این
سوئیچ مشخص
نشود،
--discard=yes
پیشفرض
ضمنی است.
تعیین
میکند که
آیا دستور
کنترل
ورودی/خروجی
BLKDISCARD روی فضای
اشغالشده
توسط هر
پارتیشن
اضافهشده
یا روی فضای
بین آنها
صادر شود یا
خیر.
معمولاً
ارسال این
درخواست
ایده خوبی
است زیرا به
سختافزار
زیرین
اطلاع
میدهد که
بلوکهای
پوششدادهشده
باید خالی
تلقی شوند و
کارایی را
بهبود
میبخشد.
اگر به جای
یک گره
دستگاه
بلوکی روی
یک فایل
معمولی عمل
شود، یک
فایل
کمپشت (sparse file)
تولید
میشود.
در نسخه 245
اضافه شد.
--size=
اندازهای
را بر حسب
بایت
میگیرد و
از
پسوندهای
معمول K، M، G، T
یا مقدار
ویژه "auto"
استفاده
میکند. در
صورت
استفاده،
مسیر گره
دستگاه
مشخصشده
باید به یک
فایل
معمولی
ارجاع دهد،
که در این
صورت پیش از
اعمال
هرگونه
تغییر در
جدول
پارتیشن،
اگر فایل
کوچکتر
باشد به
اندازه
مشخصشده
رشد داده
میشود. اگر
به صورت "auto"
مشخص شود،
حداقل
اندازه
برای ایمیج
دیسک
بهطور
خودکار
تعیین
میشود
(یعنی حداقل
اندازههای
تمام
پارتیشنها
با در نظر
گرفتن فضا
برای
فرادادههای
اضافی جمع
میشوند).
اگر گره
مشخصشده
یک دستگاه
بلوکی
باشد، این
سوئیچ
پشتیبانی
نمیشود.
اگر فایل از
قبل به
اندازه
مشخصشده
یا بزرگتر
از آن باشد،
این سوئیچ
هیچ اثری
ندارد.
اندازه
مشخصشده
بهطور
ضمنی به
مضارب ۴۰۹۶
گرد میشود.
هنگامی که
با
--empty=create
استفاده
شود،
اندازه
اولیه فایل
لوپبکی که
باید ایجاد
شود را مشخص
میکند.
گزینه --size=auto
اندازه
پارتیشنهای
از قبل
موجود را در
نظر
میگیرد. با
این حال،
جداول
پارتیشنی
را که به طور
فشرده
بستهبندی
نشدهاند
پوشش
نمیدهد:
اگر فضای
خالی بین
پارتیشنهای
از قبل
موجود (یا
قبل از
نخستین
پارتیشن)
وجود داشته
باشد که
نتوان آن را
کاملاً با
پارتیشنهای
در حال رشد
یا ایجاد پر
کرد، ممکن
است
پارتیشنهای
پیکربندیشده
همچنان در
دستگاه
پشتیبان جا
نشوند.
همچنین
توجه داشته
باشید که
تعیین
خودکار
اندازه،
فایلها یا
پوشههای
مشخصشده
با CopyFiles= را در
نظر
نمیگیرد:
اگر
فایلها یا
پوشههای
مشخصشده
به فضای
دیسک
بیشتری
نسبت به
محدودیت
حداقل
اندازه
پیکربندیشده
برای هر
پارتیشن
نیاز داشته
باشند،
ممکن است
عملیات با
شکست مواجه
شود.
در نسخه 246
اضافه شد.
--factory-reset=
یک مقدار
بولی
میگیرد.
اگر این
سوئیچ مشخص
نشود،
--factory-reset=no
پیشفرض
ضمنی است.
کنترل
میکند که
آیا در حالت
"بازنشانی
به تنظیمات
کارخانه"
عمل شود یا
خیر، به
بالا
مراجعه
کنید. اگر
روی true تنظیم
شود، تمام
پارتیشنهای
موجود که با
FactoryReset= روی yes
تنظیم
شدهاند در
مراحل
اولیه
اجرای
الگوریتم
بازپارتیشنبندی
حذف خواهند
شد. با
احتیاط
استفاده
کنید، این
یک راه عالی
برای از دست
دادن تمام
دادههای
شماست. توجه
داشته
باشید که
فایلهای
پارتیشن
باید
بهطور
صریح
FactoryReset= را
فعال کنند،
زیرا این
گزینه
بهطور
پیشفرض
غیرفعال
است. اگر هیچ
پارتیشنی
برای
بازنشانی
کارخانهای
علامتگذاری
نشده باشد،
این سوئیچ
هیچ اثری
ندارد. توجه
داشته
باشید که دو
روش دیگر
نیز برای
درخواست
عملیات
بازنشانی
کارخانهای
وجود دارد:
از طریق خط
فرمان کرنل
و از طریق یک
متغیر EFI، به
بالا
مراجعه
کنید.
در نسخه 245
اضافه شد.
--can-factory-reset
اگر این
سوئیچ مشخص
شود، دیسک
بازپارتیشنبندی
نمیشود. در
عوض تعیین
میشود که
آیا هیچیک
از
پارتیشنهای
موجود با
FactoryReset=
علامتگذاری
شدهاند یا
خیر. اگر
وجود داشته
باشند،
ابزار با
وضعیت خروج
صفر و در غیر
این صورت با
وضعیت
غیرصفر
خارج
میشود. این
سوئیچ
میتواند
برای تعیین
سریع اینکه
آیا سیستم
در حال اجرا
از سازوکار
بازنشانی
کارخانهای
مبتنی بر
systemd-repart
پشتیبانی
میکند یا
خیر
استفاده
شود.
در نسخه 245
اضافه شد.
--root=
مسیری به
یک پوشه
میگیرد تا
به عنوان
فایلسیستم
ریشه هنگام
جستجو برای
فایلهای
repart.d/*.conf، برای
فایل شناسه
ماشین جهت
استفاده به
عنوان بذر و
برای
فایلها و
پوشههای
مبدأ
CopyFiles= و
CopyBlocks=
استفاده
شود. بهطور
پیشفرض
هنگام
فراخوانی
در سیستم
معمولی،
مقدار
پیشفرض آن
فایلسیستم
ریشه
میزبان /است.
اگر از initrd
فراخوانی
شود، مقدار
پیشفرض آن
/sysroot/ است، به
طوری که
ابزار روی
پیکربندی و
شناسه
ماشین
ذخیرهشده
در
فایلسیستم
ریشهای که
سیستم
بعداً به آن
منتقل
میشود عمل
کند.
برای
گزینهای
محدودتر که
تنها بر CopyFiles=
اثر
میگذارد،
به --copy-source=
مراجعه
کنید.
در نسخه 245
اضافه شد.
--image=
مسیری به
یک فایل
ایمیج دیسک
یا دستگاه
میگیرد تا
سوار شده و
به روشی
مشابه با
--root=
استفاده
شود، به
بالا
مراجعه
کنید.
در نسخه 249
اضافه شد.
--image-policy=policy
یک رشته
خطمشی
ایمیج را
مطابق با
systemd.image-policy(7) به
عنوان
آرگومان
میگیرد.
این خطمشی
هنگام کار
روی ایمیج
دیسک
مشخصشده
از طریق
--image=
اعمال
میشود، به
بالا
مراجعه
کنید. اگر
مشخص نشود،
به طور
پیشفرض
روی خطمشی
"*"، یعنی
استفاده از
تمام
فایلسیستمهای
شناساییشده
در ایمیج،
قرار
میگیرد.
--seed=
یک UUID یا
مقدار ویژه
random را به
عنوان
آرگومان
میگیرد.
اگر یک UUID
مشخص شود،
UUIDهای
اختصاصیافته
به
پارتیشنها
و خود جدول
پارتیشن از
طریق هش
رمزنگاری
از آن مشتق
میشوند.
اگر مشخص
نشود، تلاش
میشود تا
شناسه
ماشین از
میزبان (یا
به طور
دقیقتر،
پوشه ریشه
پیکربندیشده
از طریق
--root=)
خوانده شده
و به عنوان
بذر
استفاده
شود، و در
غیر این
صورت به یک
بذر تصادفی
بازمیگردد.
از
--seed=random برای
اجبار به
استفاده از
یک بذر
تصادفی
استفاده
کنید. مشخص
کردن صریح
بذر ممکن
است برای
تولید
جدولهای
پارتیشن
کاملاً
تکرارپذیر
استفاده
شود.
در نسخه 245
اضافه شد.
--pretty=
یک
آرگومان
بولی
میگیرد.
اگر این
سوئیچ مشخص
نشود،
هنگام
فراخوانی
از یک
ترمینال
تعاملی به
طور
پیشفرض
فعال و در
غیر این
صورت
غیرفعال
است. کنترل
میکند که
آیا یک جدول
کاربرپسند
و نمایه
گرافیکی که
تغییرات
اعمالشده
را نشان
میدهد
نمایش داده
شود یا خیر.
در نسخه 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=
یک مسیر
در
فایلسیستم
یا یک شناسه
خاص موتور (engine)
یا
ارائهدهنده
(provider) را
میگیرد.
کلید امضا
را برای
استفاده
هنگام
ایجاد
پارتیشنهای
امضای verity با
تنظیم
Verity=signature
در
فایلهای
پارتیشن
پیکربندی
میکند.
در نسخه 252
اضافه شد.
--private-key-source=
یکی از
مقادیر "file"،
"engine" یا "provider" را
میپذیرد.
در دو مورد
اخیر، پس از
آن نام یک
ارائهدهنده
یا موتور به
دنبال
دونقطه
میآید که
به منطق "engine"
یا "provider" در OpenSSL
ارسال
خواهد شد.
نحوه
بارگیری
کلید خصوصی
مورد
استفاده
هنگام
ایجاد
پارتیشنهای
امضای verity با
تنظیم
Verity=signature
در
فایلهای
پارتیشن را
پیکربندی
میکند.
در نسخه 256
اضافه شد.
--certificate=
یک مسیر
در
فایلسیستم
یا یک شناسه
خاص
ارائهدهنده
را میگیرد.
گواهی X.509 با
کدگذاری PEM را
برای
استفاده
هنگام
ایجاد
پارتیشنهای
امضای verity با
تنظیم
Verity=signature
در
فایلهای
پارتیشن
پیکربندی
میکند.
در نسخه 252
اضافه شد.
--certificate-source=
یکی از
مقادیر "file"
یا "provider" را
میپذیرد.
در مورد
اخیر، پس از
آن نام یک
ارائهدهنده
به دنبال
دونقطه
میآید که
به منطق "provider"
در OpenSSL ارسال
خواهد شد.
نحوه
بارگیری
گواهی X.509
مورد
استفاده
هنگام
ایجاد
پارتیشنهای
امضای verity با
تنظیم
Verity=signature
در
فایلهای
پارتیشن را
پیکربندی
میکند.
در نسخه 257
اضافه شد.
--join-signature=
یک تاپل
جداشده با
دونقطه را
مشخص
میکند که
عنصر اول آن
هش سطح
بالای Verity به
صورت
هگزادسیمال
برای یک
پارتیشن
Verity=hash
است، و عنصر
دوم آن
امضای PKCS7
برای roothash به
صورت مسیری
به یک فایل
امضای
کدگذاریشده
با DER، یا به
صورت یک
رشته ASCII base64 از
یک امضای
کدگذاریشده
با DER دارای
پیشوند "base64:"
است. برای
استفاده
روی یک
ایمیج از
قبل موجود
که با
پارامتری
مانند
--defer-partitions=root-verity-sig
ایجاد شده
است، به
منظور
امکانپذیر
ساختن
پیادهسازی
امضای
برونخط
(آفلاین)
برای
پارتیشن
امضای verity.
این یک
جایگزین
برای امضای
برخط
(آنلاین) با
استفاده از
پارامترهایی
مانند --private-key=
است، برای
سیستمهای
ساختی که
کلید خصوصی
برای امضای
نهایی
(تولید) در
همان
زمینهای
که محتوا
ایجاد
میشود در
دسترس
نیست.
در نسخه 258
اضافه شد.
--tpm2-device=، --tpm2-pcrs=
دستگاه TPM2
و فهرست PCRهای
مورد
استفاده
برای
حجمهای 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=PATH،
--tpm2-public-key-pcrs=PCR[+PCR...]
یک
خطمشی PCR
امضاشده TPM2 را
برای مقید
کردن
رمزگذاری
به آن
پیکربندی
میکند.
برای
جزئیات در
مورد این دو
گزینه به
systemd-cryptenroll(1) مراجعه
کنید.
در نسخه 252
اضافه شد.
--tpm2-pcrlock=PATH
یک
خطمشی pcrlock
مربوط به TPM2
را برای
مقید کردن
رمزگذاری
به آن
پیکربندی
میکند.
برای
جزئیات در
مورد این
گزینه به
systemd-cryptenroll(1) مراجعه
کنید.
در نسخه 255
اضافه شد.
--split=BOOL
تولید
مصنوعات
تفکیکشده
(split artifacts) را از
پارتیشنهای
پیکربندیشده
با
SplitName= فعال
میکند. در
صورت فعال
بودن، به
ازای هر
پارتیشن با
SplitName=
تنظیمشده،
یک فایل
خروجی مجزا
که تنها
حاوی
محتویات آن
پارتیشن
است تولید
میشود. نام
فایل خروجی
شامل نام
فایل
لوپبک به
همراه
پسوند نام
پیکربندیشده
با
SplitName= است.
اگر نام
فایل
لوپبک با
".raw" ختم شود،
پسوند به
جای آن قبل
از پسوند ".raw"
درج میشود.
توجه
داشته
باشید که --split
مستقل از --dry-run
است. حتی اگر
--dry-run فعال
باشد، در
صورت فعال
بودن --split
مصنوعات
تفکیکشده
همچنان از
یک ایمیج
موجود
تولید
خواهند شد.
در نسخه 252
اضافه شد.
--include-partitions=PARTITIONS،
--exclude-partitions=PARTITIONS
این
گزینهها
مشخص
میکنند که
systemd-repart باید
روی کدام
انواع
پارتیشن
عمل کند. اگر
--include-partitions=
استفاده
شود، تمام
پارتیشنهایی
که مشخص
نشدهاند
مستثنی
میشوند.
اگر
--exclude-partitions=
استفاده
شود، تمام
پارتیشنهایی
که مشخص
شدهاند
مستثنی
میشوند. هر
دو گزینه یک
فهرست
جداشده با
کاما از UUIDها
یا
شناسههای
نوع
پارتیشن 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=BYTES
این
گزینه
امکان
پیکربندی
اندازه
سکتور
ایمیج
تولیدشده
توسط
systemd-repart را
فراهم
میکند.
مقداری را
میگیرد که
توانی از "2"
بین "512" و "4096"
باشد. این
گزینه
هنگام ساخت
ایمیج برای
دیسکهایی
که از
اندازه
سکتور
متفاوتی
نسبت به
دیسکی که
ایمیج روی
آن تولید
میشود
استفاده
میکنند،
مفید است.
در نسخه 253
اضافه شد.
--grain-size=BYTES
این
گزینه
دانهبندی
همترازی (alignment
granularity) پارتیشن
را هنگام
قرار دادن
پارتیشنها
کنترل
میکند.
مقداری با
توان ۲
میگیرد که
حداقل
برابر با
اندازه
سکتور باشد.
تمام
آفستهای
شروع
پارتیشن به
مضربی از
این مقدار
به بالا گرد
میشوند.
مقدار
پیشفرض
MAX(4096,
sector_size) است که با
همترازی
متعارف ۴
کیبیبایت
مطابقت
دارد. تنظیم
این گزینه
روی "1M"
همترازی
مناسب برای
دستگاههای
ذخیرهسازی
مدرن را حتی
پس از
پارتیشنهای
کوچک با
اندازه
ثابت مانند
پارتیشن
امضای verity
تضمین
میکند.
در نسخه 261
اضافه شد.
--architecture=ARCH
این
گزینه
امکان
نادیدهگرفتن
و جایگزینی
معماری
مورد
استفاده
برای انواع
پارتیشن
مخصوص
معماری را
فراهم
میکند.
برای
نمونه، اگر
روی "arm64"
تنظیم شود،
نوع
پارتیشن
"root-x86-64"
ارجاعشده
در
فایلهای drop-in
پوشه 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=BOOL
به
systemd-repart
دستور
میدهد تا
ایمیج را به
صورت
آفلاین
(برونخط)
بسازد. یک
مقدار بولی
یا "auto"
میگیرد.
پیشفرض
روی "auto" است.
اگر فعال
باشد،
ایمیج بدون
استفاده از
دستگاههای
loop ساخته
میشود. این
قابلیت
برای ساخت
بدون
امتیاز
ویژه
ایمیجها
یا زمانی که
دستگاههای
loop در دسترس
نیستند
مفید است.
اگر
غیرفعال
باشد،
ایمیج
همیشه با
استفاده از
دستگاههای
loop ساخته
میشود. اگر
"auto" باشد،
systemd-repart در صورت
امکان
ایمیج را به
صورت
آنلاین
میسازد و
در صورتی که
دستگاههای
loop در دسترس
نباشند یا
به دلیل
نبود
مجوزهای
لازم نتوان
به آنها
دسترسی
پیدا کرد،
به ساخت
آفلاین
ایمیج
برمیگردد.
در نسخه 254
اضافه شد.
--copy-from=PATH
به
systemd-repart
دستور
میدهد تا
تعاریف
پارتیشن را
از جدول
پارتیشن در
ایمیج یا
دستگاه
ارائهشده
استخراج و
ترکیب (synthesize)
کند. این
گزینه
میتواند
چندین بار
مشخص شود تا
تعاریف از
هر یک از
ایمیجها
یا
دستگاههای
دادهشده
استخراج
شوند.
تعاریف
تولیدشده،
پارتیشنها
را در جدول
پارتیشن
مقصد کپی
میکنند.
پارتیشنهای
کپیشده
اندازه
یکسان یا
اندکی
بزرگتر
(پارتیشنها
ممکن است
برای
همترازی
با
دانهبندی
جدید یا
اندازه
سکتور
بزرگتر
شوند)،
فراداده و
محتویات
یکسانی
خواهند
داشت اما
ممکن است
شماره
پارتیشن
متفاوتی
داشته
باشند و در
آفست
متفاوتی در
جدول
پارتیشن
مقصد قرار
گیرند. این
تعاریف را
میتوان با
تعاریف
پارتیشن
خواندهشده
از
فایلهای
تعریف
پارتیشن
معمولی
ترکیب کرد.
تعاریف
استخراجشده
بر تعاریف
خواندهشده
از
فایلهای
تعریف
پارتیشن
اولویت
دارند.
در نسخه 255
اضافه شد.
--copy-source=PATH، -s
PATH
یک پوشه
مبدأ را
مشخص
میکند که
تمام
مسیرهای
مبدأ
CopyFiles=
باید نسبت
به آن در نظر
گرفته شوند.
این مشابه
--root= است، اما
منحصراً
برای تنظیم
CopyFiles= اعمال
میشود. اگر
--root= و
--copy-source= به
صورت
ترکیبی
استفاده
شوند، اولی
طبق معمول
اعمال
میشود، به
جز برای
CopyFiles=
که دومی
اولویت
دارد.
در نسخه 255
اضافه شد.
--make-ddi=TYPE
یکی از
مقادیر "sysext"،
"confext" یا "portable" را
میپذیرد.
یک ایمیج
دیسک قابل
کشف (DDI) برای
یک افزونه
سیستم (sysext،
برای
جزئیات به
systemd-sysext(8) مراجعه
کنید)،
افزونه
پیکربندی (confext)
یا
سرویسهای
پرتابل (Portable Services)[1]
تولید
میکند.
ایمیج
تولیدشده
شامل یک
فایلسیستم
امضاشده Verity
از نوع "erofs" به
عنوان
پارتیشن
ریشه خواهد
بود. در این
حالت
عملیاتی،
تعاریف
پارتیشن در
/usr/lib/repart.d/*.conf و
پوشههای
مرتبط
خوانده
نمیشوند و
--definitions=
پشتیبانی
نمیشود،
زیرا
تعاریف
مناسب برای
کلاس DDI
انتخابشده
بهطور
خودکار
انتخاب
خواهند شد.
باید در
ترکیب با
--copy-source=
استفاده
شود تا
سلسلهمراتب
فایلی که DDI
با آن پر
میشود
مشخص گردد.
در صورتی که
"confext" انتخاب
شده باشد،
پوشه
مشخصشده
باید حاوی
یک زیرپوشه
etc/ باشد. اگر
"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=BOOL
یک هدر
کمینه ISO9660 با
کاتالوگ
بوت El Torito
مینویسد.
این کار ESP را
روی
میانافزار
EFI بوت میکند.
فایلسیستم
ISO9660 ایجادشده
توسط آن
خالی خواهد
بود. انتظار
میرود initramfs یک
دستگاه loop
دارای
قابلیت
پارتیشنبندی
روی دستگاه
ایجاد کند
تا اندازه
بلوک را
تغییر داده
و
پارتیشنهای
GPT را فعال
نماید.
دیسک
حداقل به یک
پارتیشن با
Type=esp نیاز
دارد. اولین
پارتیشن
همان
پارتیشنی
خواهد بود
که در
کاتالوگ
بوت به آن
ارجاع داده
شده است.
در نسخه 261
اضافه شد.
--el-torito-system=STRING
هنگام
ایجاد هدر
ISO9660، این
مقدار به
عنوان
شناسه
سیستم
استفاده
خواهد شد.
این امر
برای تطبیق
رسانه با
پایگاهداده
osinfo مفید است.
این مقدار
به ۳۲ نویسه
محدود است.
در نسخه 261
اضافه شد.
--el-torito-volume=STRING
هنگام
ایجاد هدر
ISO9660، این
مقدار به
عنوان
شناسه حجم
استفاده
خواهد شد.
این امر
برای تطبیق
رسانه با
پایگاهداده
osinfo مفید است.
این مقدار
به ۳۲ نویسه
محدود است.
در نسخه 261
اضافه شد.
--el-torito-publisher=STRING
هنگام
ایجاد هدر
ISO9660، این
مقدار به
عنوان
شناسه ناشر
استفاده
خواهد شد.
این امر
برای تطبیق
رسانه با
پایگاهداده
osinfo مفید است.
این مقدار
به ۱۲۸
نویسه
محدود است.
در نسخه 261
اضافه شد.
-h، --help
یک متن
راهنمای
کوتاه چاپ
کرده و خارج
میشود.
--version
یک رشته
نسخه کوتاه
چاپ کرده و
خارج
میشود.
--no-pager
خروجی را
به یک
صفحهبند (pager)
هدایت
نمیکند.
--no-legend
راهنما
(legend)، یعنی
سرستونها
و پانویس
حاوی نکات
راهنما را
چاپ
نمیکند.
--json=MODE
خروجی
قالببندیشده
به صورت JSON را
نشان
میدهد. یکی
از مقادیر
"short" (برای
کوتاهترین
خروجی ممکن
بدون
هیچگونه
فضای خالی
اضافی یا
شکست خط)، "pretty"
(برای
نسخهای
خوانا از
همان،
همراه با
تورفتگی و
شکست خط) یا
"off" (برای
غیرفعال
کردن خروجی
JSON، که حالت
پیشفرض
است) را
میپذیرد.