| REPART.D(5) | repart.d | REPART.D(5) |
نام (NAME)
repart.d - دایرکتوریهای پیکربندی بازپارتیشنبندی دیسک برای systemd-repart
خلاصه دستور (SYNOPSIS)
توضیحات (DESCRIPTION)
فایلهای repart.d/*.conf ویژگیهای اساسی پارتیشنهای دستگاههای بلوکی سیستم محلی را توصیف میکنند. از آنها میتوان برای اعلان نوعها، نامها و اندازههای پارتیشنهایی که باید وجود داشته باشند استفاده کرد. سرویس systemd-repart(8) این فایلها را میخواند و تلاش میکند پارتیشنهای جدیدی را که در حال حاضر موجود نیستند اضافه کند و پارتیشنهای موجود را طبق این تعاریف بزرگتر نماید. این عملیات عموماً افزایشی است، یعنی هنگام اعمال، آنچه از قبل وجود دارد دستنخورده باقی میماند و پارتیشنها هرگز کوچک، جابهجا یا حذف نمیشوند.
این فایلهای تعریف برای پیادهسازی ایمیجهای سیستمعاملی مفید هستند که با حداقل اندازه ممکن آماده و تحویل داده میشوند (به عنوان مثال فاقد هرگونه پارتیشن وضعیت یا سواپ)، و در نخستین بوت به طور خودکار بر اساس چند قانون اساسی، باقیمانده فضای دیسک را در اختیار میگیرند.
در حال حاضر، پشتیبانی از فایلهای تعریف پارتیشن فقط برای جدولهای پارتیشن GPT پیادهسازی شده است.
فایلهای پارتیشن به طور کلی با پارتیشنهای موجود روی دیسک بر اساس یک الگوریتم ساده تطبیق داده میشوند: فایلهای پارتیشن بر اساس نام فایل خود مرتب میشوند (با صرفنظر از پیشوند دایرکتوری)، و سپس به ترتیب با پارتیشنهای موجود که دارای همان UUID نوع پارتیشن هستند مقایسه میگردند. به طور مشخص، نخستین پارتیشن موجود با یک UUID نوع پارتیشن خاص به نخستین فایل تعریف با همان UUID نوع پارتیشن اختصاص مییابد، و دومین پارتیشن موجود با یک UUID نوع خاص به دومین فایل پارتیشن با همان UUID نوع اختصاص مییابد، و به همین ترتیب. فرض میشود هر فایل پارتیشن باقیماندهای که هیچ پارتیشن منطبق موجودی ندارد، پارتیشن جدیدی را تعریف میکند که باید ایجاد شود. چنین پارتیشنهایی به انتهای جدول پارتیشن افزوده میشوند، به ترتیبی که نام آنها مشخص میکند و با استفاده از نخستین اسلات پارتیشن بزرگتر از بالاترین شماره اسلات در حال استفاده فعلی. هر پارتیشن موجودی که فایل پارتیشن منطبقی نداشته باشد، همانطور که هست رها میشود.
توجه داشته باشید که این تعاریف فقط برای ایجاد و مقداردهی اولیه پارتیشنهای جدید یا گسترش پارتیشنهای موجود قابل استفاده هستند. در حالت دوم، با این حال سیستمهای فایل درون آنها گسترش داده نمیشوند؛ سازوکارهای جداگانهای مانند systemd-growfs(8) میتوانند برای گسترش سیستمهای فایل درون این پارتیشنها استفاده شوند. پارتیشنها همچنین میتوانند از طریق تنظیم GrowFileSystem= برای گسترش خودکار نشانهگذاری شوند، که در این حالت سیستم فایل در نخستین بارگیری (mount) توسط ابزارهایی که این فلگ را رعایت میکنند گسترش مییابد. برای جزئیات بیشتر به ادامه متن مراجعه کنید.
گزینههای بخش [PARTITION] ([PARTITION] SECTION OPTIONS)
Type=
شناسههای پشتیبانیشده عبارتند از:
جدول 1. شناسههای نوع پارتیشن GPT
| شناسه | توضیح |
| esp | پارتیشن سیستم EFI |
| xbootldr | پارتیشن بوتلودر گسترشیافته (Extended Boot Loader Partition) |
| 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 | پارتیشن سیستمفایل ریشه معماری ثانویه معماری محلی (معمولاً معماری ۳۲ بیتی منطبق برای معماری ۶۴ بیتی محلی) |
| 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/ معماری ثانویه معماری محلی (معمولاً معماری ۳۲ بیتی منطبق برای معماری ۶۴ بیتی محلی) |
| 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 (۳۲
بیتی)، arm64 (۶۴
بیتی،
همچنین
شناختهشده
با aarch64)، ia64،
loongarch64، mips-le، mips64-le،
parisc، ppc، ppc64،
ppc64-le، riscv32، riscv64،
s390، s390x، tilegx، x86
(۳۲ بیتی،
همچنین
شناختهشده
با i386) و x86-64 (۶۴
بیتی،
همچنین
شناختهشده
با amd64).
بیشتر UUIDهای نوع پارتیشن فهرستشده در بالا در UAPI.2 Discoverable Partitions Specification[1] تعریف شدهاند.
افزوده شده در نگارش 245.
Label=
افزوده شده در نگارش 245.
VolumeLabel=
افزوده شده در نگارش 259.
UUID=
افزوده شده در نگارش 246.
Priority=
افزوده شده در نگارش 245.
Weight=
تنظیم Weight= برای توزیع فضای دیسک موجود به صورت «کشسان»، بر اساس اندازه دیسک و پارتیشنهای موجود استفاده میشود. اگر پارتیشنی باید اندازه ثابتی داشته باشد، از هر دو تنظیم SizeMinBytes= و SizeMaxBytes= با مقداری یکسان استفاده کنید تا اندازه روی یک مقدار تثبیت شود، که در این صورت وزن هیچ تاثیری نخواهد داشت.
افزوده شده در نگارش 245.
PaddingWeight=
فاصلهگذاری در صورتی مفید است که بخواهید فضای خالی برای افزودنهای بعدی یا یک حاشیه امن در انتهای دستگاه یا میان پارتیشنها باقی بماند.
افزوده شده در نگارش 245.
SizeMinBytes=، SizeMaxBytes=
اگر Format= تنظیم شده باشد، کمینه اندازه به طور خودکار به حداقل اندازه سیستمفایل برای نوع سیستمفایل انتخابشده (در صورت معلوم بودن) افزایش مییابد. علاوه بر این، برای پارتیشنهای ESP/XBOOTLDR اگر کمتر مشخص شده باشد، به طور خودکار به 100M (برای ایمیجهای با سکتورهای 512 بایتی) یا 260M (برای ایمیجهای با سکتورهای 4K) افزایش مییابد.
افزوده شده در نگارش 245.
PaddingMinBytes=، PaddingMaxBytes=
افزوده شده در نگارش 245.
CopyBlocks=
اگر مقدار ویژه "auto" مشخص شود، مبدا برای کپی به طور خودکار از سیستم در حال اجرا (یا ایمیج مشخصشده با --image= — در صورت استفاده) برداشته میشود. پارتیشنی که هم با نوع پارتیشن پیکربندیشده (همانطور که با Type= در بالا توصیف شد) و هم با دایرکتوری بارگیریشده فعلی مناسب برای آن نوع پارتیشن مطابقت داشته باشد تعیین میگردد. برای مثال، اگر نوع پارتیشن روی "root" تنظیم شده باشد، پارتیشن پشتیبان دایرکتوری ریشه (/) به عنوان مبدا برای کپی استفاده میشود — در صورتی که نوع پارتیشن آن نیز روی "root" تنظیم شده باشد. اگر نوع اعلامشده "usr" باشد، پارتیشن پشتیبان /usr/ به عنوان مبدا برای کپی بلوکها استفاده میشود — اگر نوع پارتیشن آن نیز "usr" باشد. این منطق قادر است به طور خودکار پارتیشنهای پشتیبان را برای حجمهای رمزنگاریشده و دارای قابلیت Verity ردیابی کند. "CopyBlocks=auto" برای پیادهسازی سیستمهای «خود-تکثیرشونده»، یعنی سیستمهایی که خودشان نصبکننده خود هستند مفید است.
فایل مشخصشده در اینجا باید اندازهای داشته باشد که مضربی از اندازه بلوک پایه 512 باشد و نباید خالی باشد. اگر از این گزینه استفاده شود، الگوریتم تخصیص فضا کمی تغییر میکند: پارتیشن حداقل به اندازهای ایجاد میشود که برای جا دادن دادهها لازم است، یعنی اندازه دادهها یک مقدار اندازه کمینه اضافی است که در الگوریتم تخصیص فضا در نظر گرفته میشود، مشابه و علاوه بر مقدار SizeMinBytes= که در بالا پیکربندی شد.
این گزینه در صورتی که پارتیشن اعلامشده از قبل وجود داشته باشد هیچ تاثیری ندارد، یعنی دادههای موجود هرگز رونویسی نمیشوند. توجه داشته باشید که دادهها قبل از بهروزرسانی جدول پارتیشن کپی میشوند، یعنی قبل از اینکه پارتیشن واقعاً به طور ماندگار ایجاد شود. این امر پایداری و اطمینان را فراهم میسازد: تضمین میشود که پارتیشن یا وجود ندارد یا به طور کامل پر شده است؛ ممکن نیست که پارتیشن وجود داشته باشد اما پر نشده یا فقط تا حدی پر شده باشد.
این گزینه نمیتواند با Format= یا CopyFiles= ترکیب شود.
افزوده شده در نگارش 246.
Format=
این گزینه همچنین یک فرامقدار (meta value) ویژه "empty" را میپذیرد. در صورت مشخص شدن، معادل با تعیین "Label=_empty" و "NoAuto=1" است.
این گزینه در صورتی که پارتیشن از قبل وجود داشته باشد هیچ تاثیری ندارد.
مشابه با رفتار CopyBlocks=، سیستمفایل قبل از ایجاد پارتیشن فرمت میشود، که تضمین میکند پارتیشن فقط با یک سیستمفایل کاملاً مقداردهیشده وجود خواهد داشت.
این گزینه نمیتواند با CopyBlocks= ترکیب شود.
افزوده شده در نگارش 247.
CopyFiles=
این تنظیم ممکن است برای کپی کردن فایلها یا دایرکتوریها از میزبان به درون سیستمفایلی که به دلیل گزینه Format= ایجاد شده است استفاده شود. اگر CopyFiles= بدون تعیین صریح Format= استفاده شود، مقدار "Format=" با یک پیشفرض مناسب در نظر گرفته میشود (در حال حاضر "vfat" برای پارتیشنهای "ESP" و "XBOOTLDR"، و در غیر این صورت "ext4"، اما این موضوع ممکن است در آینده تغییر کند). این گزینه ممکن است چندین بار برای کپی کردن چندین فایل یا دایرکتوری از میزبان به سیستمفایل تازه فرمتشده استفاده شود.
مسیر target میتواند حذف شود که در این صورت مسیر source به عنوان مسیر مقصد نیز استفاده میشود (نسبت به ریشه سیستمفایل تازه ایجادشده). اگر مسیر مبدا به یک دایرکتوری اشاره کند، به صورت بازگشتی کپی میشود.
گزینههای options ممکن است حاوی مقادیر زیر باشند:
fsverity=
افزوده شده در نگارش 258.
این گزینه در صورتی که پارتیشن از قبل وجود داشته باشد هیچ تاثیری ندارد: نمیتوان از آن برای کپی کردن فایلهای اضافی به درون یک پارتیشن موجود استفاده کرد، و فقط میتواند برای پر کردن سیستمفایلی که به تازگی ایجاد شده است استفاده شود.
عملیات کپی قبل از ثبت پارتیشن در جدول پارتیشن اجرا میشود، و بدین ترتیب تضمین میکند که سیستمفایل پرشده از این طریق فقط به صورت کاملاً مقداردهیشده وجود داشته باشد.
توجه داشته باشید که CopyFiles= از کپی کردن فایلهایی که توسط سیستمفایل مقصد پشتیبانی نمیشوند (مثلاً symlinkها، fifoها، سوکتها و دستگاهها روی vfat) صرفنظر میکند. هنگامی که یک نوع فایل پشتیبانینشده مشاهده شود، systemd-repart از کپی کردن این فایل صرفنظر کرده و پیامی در لاگ درباره آن مینویسد.
توجه داشته باشید که systemd-repart شناسههای UID/GID هیچیک از فایلها و دایرکتوریهای کپیشده را تغییر نمیدهد. هنگام اجرای systemd-repart به عنوان یک کاربر غیرممتاز برای ساخت یک ایمیج از فایلها و دایرکتوریهای متعلق به همان کاربر، میتوانید systemd-repart را در یک فضای نام کاربر (user namespace) اجرا کنید که در آن کاربر فعلی به کاربر root نگاشت شده باشد تا اطمینان حاصل شود که فایلها و دایرکتوریهای موجود در ایمیج متعلق به کاربر root هستند.
این گزینه نمیتواند با CopyBlocks= ترکیب شود.
هنگامی که systemd-repart(8) با سوییچ خط فرمان --copy-source= فراخوانی شود، مسیرهای فایل به صورت نسبی نسبت به دایرکتوری مشخصشده در نظر گرفته میشوند. اگر --copy-source= استفاده نشود، اما سوییچهای --image= یا --root= استفاده شوند، مسیرهای مبدا به صورت نسبی نسبت به دایرکتوری ریشه یا ریشه ایمیج دیسک مشخصشده در نظر گرفته میشوند.
توجه داشته باشید که هنگام استفاده از CopyFiles= با Format=xfs، نسخه xfsprogs 6.17 یا جدیدتر مورد نیاز است.
افزوده شده در نگارش 247.
ExcludeFiles=، ExcludeFilesTarget=
اگر مسیر یک دایرکتوری باشد و به "/" ختم شود، فقط محتویات دایرکتوری مستثنی میشوند اما خود دایرکتوری مستثنی نمیشود. اگر مسیر یک دایرکتوری باشد و به "/" ختم نشود، هم دایرکتوری و هم محتویات آن مستثنی میشوند.
گزینه ExcludeFilesTarget= مشابه با ExcludeFiles= است، با این تفاوت که به جای مستثنی کردن مسیر روی میزبان از کپی شدن در پارتیشن، هرگونه فایل و دایرکتوری را از کپی شدن به مسیر ارائهشده در پارتیشن مستثنی میکند.
هنگامی که systemd-repart(8) با سوییچهای خط فرمان --image= یا --root= فراخوانی شود، مسیرهای مشخصشده به صورت نسبی نسبت به دایرکتوری ریشه یا ریشه ایمیج دیسک مشخصشده در نظر گرفته میشوند.
افزوده شده در نگارش 254.
MakeDirectories=
مورد کاربرد اصلی این گزینه ایجاد حداقل مجموعهای از دایرکتوریها است که ممکن است توسط سایر پارتیشنهای موجود در همان ایمیج دیسک روی آنها سوار (mount) شوند. به عنوان مثال، یک ایمیج دیسک که در آن سیستمفایل ریشه در اولین بوت فرمت میشود ممکن است بخواهد به طور خودکار /usr/ را از این طریق در آن از پیش ایجاد کند، تا پارتیشن "usr" بتواند روی آن سوار شود.
استفاده از systemd-tmpfiles(8) با گزینه --image= آن را برای از پیش ایجاد کردن سایر سلسلهمراتبهای دایرکتوری پیچیدهتر (و همچنین سایر inodeها) با کنترل دقیق بر مالکیت، حالتهای دسترسی و سایر مشخصههای فایل در نظر بگیرید.
افزوده شده در نگارش 249.
MakeSymlinks=
مورد کاربرد اصلی این گزینه ایجاد پیوندهای نمادینی است که باید قبل از اجرای systemd-tmpfiles(8) وجود داشته باشند. به عنوان مثال، هنگام استفاده از systemd-confext(8)، از این تنظیم میتوان برای ایجاد پیوندهای نمادین در /var/lib/extensions.mutable جهت هدایت نوشتنها روی confextهای تغییرپذیر به یک مکان سفارشی استفاده کرد.
استفاده از systemd-tmpfiles(8) با گزینه --image= آن را برای از پیش ایجاد کردن سایر پیوندهای نمادین (و همچنین سایر inodeها) با کنترل دقیق بر مالکیت، حالتهای دسترسی و سایر مشخصههای فایل در نظر بگیرید.
افزوده شده در نگارش 257.
Subvolumes=
جدول 2. فلگهای زیرحجم
| فلگ | هدف |
| "ro" | این زیرحجم را فقطخواندنی میکند. |
| "nodatacow" | قابلیت داده CoW را برای این زیرحجم غیرفعال میکند. |
توجه
داشته
باشید که
این گزینه
خود
دایرکتوریها
را ایجاد
نمیکند،
این کار را
میتوان با
MakeDirectories= و CopyFiles=
پیکربندی
کرد.
توجه داشته باشید که این گزینه تنها در صورتی اثرگذار است که سیستمفایل مقصد از زیرحجمها پشتیبانی کند، مانند btrfs(8).
توجه داشته باشید که این گزینه فقط در ترکیب با --offline=yes از زمان btrfs-progs 6.12 یا جدیدتر پشتیبانی میشود.
افزوده شده در نگارش 255.
DefaultSubvolume=
توجه داشته باشید که این گزینه تنها در صورتی اثرگذار است که سیستمفایل هدف از زیرحجمها پشتیبانی کند، مانند btrfs(8).
توجه داشته باشید که این گزینه فقط در ترکیب با --offline=yes از نسخه btrfs-progs 6.12 یا جدیدتر پشتیبانی میشود.
در نسخه 256 اضافه شد.
BlockDeviceReplace=
اگر پس از انتقال سیستمفایل، خطایی پیش از پایان نوشتن جدول پارتیشن رخ دهد، تلاشی برای بازگرداندن سیستمفایل به دستگاه اصلیاش صورت خواهد گرفت. اما اگر آن تلاش نیز با شکست مواجه شود، سیستمفایل ممکن است روی پارتیشنی قرار داشته باشد که در جدول پارتیشن وجود ندارد و در راهاندازی مجدد از دست برود. این ویژگی برای ذخیره کردن سیستمهای فایل متصل موقتی (فرار) اولیه روی دیسک جدید بدون دادههای حیاتی، مانند سیستمهای بوت زنده (live boot)، طراحی شده است. ممکن است پس از شکست در نوشتن جدول پارتیشن، نیاز به بازسازی مجدد آنها باشد.
این گزینه با --offline=yes سازگار نیست.
در نسخه 261 اضافه شد.
VolumeName=
مقدار باید یک نام فایل معتبر باشد. اگر مشخص نشود، در صورت معتبر بودن، به مقدار پیشفرض VolumeLabel= (که میتواند از Label= مشتق شده باشد) بازمیگردد.
در نسخه 261 اضافه شد.
Encrypt=
شناسه یکتای LUKS2 UUID بهطور پایدار و خودکار از UUID پارتیشن مشتق میشود. اگر از "key-file" یا "key-file+tpm2" استفاده شود، کلیدی به سوپربلوک LUKS2 اضافه میشود که با گزینه --key-file= در systemd-repart قابل پیکربندی است. اگر از "tpm2" یا "key-file+tpm2" استفاده شود، کلیدی به سوپربلوک LUKS2 اضافه میشود که در تراشه محلی TPM2 ثبت (enroll) میشود، همانطور که با گزینههای --tpm2-device= و --tpm2-pcrs= در systemd-repart پیکربندی شده است.
استفاده از این گزینه منطق تخصیص اندازه را اندکی تغییر میدهد، زیرا محدودیتهای اندازه ضمنی و حداقلی در Format= و CopyBlocks= به میزان فضای لازم برای سوپربلوک LUKS2 افزایش مییابد (به بالا مراجعه کنید).
این گزینه در صورتی که پارتیشن از قبل وجود داشته باشد هیچ اثری ندارد.
در نسخه 247 اضافه شد.
Discard=
اگر روی "yes" تنظیم شود، هنگام ایجاد سوپربلوک LUKS2 برای پارتیشن، پرچم فعالسازی "allow-discards" تنظیم میشود تا فعالسازیهای بعدی بهطور پیشفرض دور انداختن (discard) را مجاز بدانند.
این گزینه اگر پارتیشن از قبل وجود داشته باشد یا اگر از Encrypt=off استفاده شده باشد، تاثیری ندارد.
در نسخه 261 اضافه شد.
EncryptKDF=
هنگامی که روی "argon2id" یا "pbkdf2" تنظیم شود، KDF مشخصشده با پارامترهایی که توسط کتابخانه cryptsetup محک زده شدهاند (benchmarked) استفاده میشود. هنگامی که روی "minimal" تنظیم شود، PBKDF2 همراه با SHA-512 با ۱۰۰۰ تکرار و بدون محکزنی استفاده میشود — این حالت برای کلیدهای با آنتروپی بالا مناسب است (به عنوان مثال تولیدشده توسط یک مدیر کلید سختافزاری یا مهرومومشده در TPM) که در آنها KDF تنها باید الزام قالب LUKS2 را برآورده کند، نه اینکه یک عبارت عبور ضعیف را تقویت نماید.
توجه داشته باشید که KDFهای مبتنی بر Argon2 ممکن است در طول مشتقگیری کلید به حافظه قابل توجهی (تا ۱ گیگابایت) نیاز داشته باشند. در محیطهای با محدودیت حافظه مانند kdump با حافظه محدود crashkernel، گزینههای "minimal" یا "pbkdf2" ممکن است مناسبتر باشند. زمانی که Encrypt= شامل "tpm2" باشد، اسلات کلید TPM2 بدون در نظر گرفتن این تنظیم، همیشه از پیکربندی حداقلی PBKDF2 استفاده میکند.
در نسخه 261 اضافه شد.
Verity=
یک پارتیشن verity منطبق، پارتیشنی با همان کلید تطابق verity است (که با VerityMatchKey= پیکربندی میشود).
اگر صریحاً پیکربندی نشده باشد، UUID پارتیشن داده روی ۱۲۸ بیت اول هش ریشه verity تنظیم میشود. به همین ترتیب، در صورت عدم پیکربندی، UUID پارتیشن هش روی ۱۲۸ بیت پایانی هش ریشه verity تنظیم خواهد شد. خود هش ریشه verity در خروجی systemd-repart گنجانده خواهد شد.
این گزینه در صورتی که پارتیشن از قبل وجود داشته باشد هیچ اثری ندارد.
استفاده از این گزینه در ترکیب با Encrypt= پشتیبانی نمیشود.
به ازای هر مقدار یکتای VerityMatchKey= ، باید دقیقاً یک پارتیشن داده verity به صورت ("Verity=data") و یک پارتیشن هش verity به صورت ("Verity=hash") تعریف شود.
در نسخه 252 اضافه شد.
VerityMatchKey=
در نسخه 252 اضافه شد.
VerityDataBlockSizeBytes=
در نسخه 255 اضافه شد.
VerityHashBlockSizeBytes=
در نسخه 255 اضافه شد.
FactoryReset=
در نسخه 245 اضافه شد.
Flags=
در نسخه 249 اضافه شد.
NoAuto=, ReadOnly=, GrowFileSystem=
اگر Flags= در ترکیب با یک یا چند مورد از NoAuto=/ReadOnly=/GrowFileSystem= استفاده شود، موارد اخیر مقدار پرچمهای مربوطه را کنترل میکنند؛ یعنی تنظیمات سطح بالای NoAuto=/ReadOnly=/GrowFileSystem= بر بیتهای مربوطه در تنظیم سطح پایین Flags= اولویت دارند و آن را بازنویسی میکنند.
توجه داشته باشید که این سه پرچم فقط بر اتصال (mount) خودکار پارتیشن اثر میگذارند، همانطور که توسط systemd-gpt-auto-generator(8) یا گزینه --image= دستورات مختلف (مانند systemd-nspawn(1)) پیادهسازی شده است. این پرچمها هیچ تاثیری بر اتصالهای صریح، مانند اتصالهایی که از طریق mount(8) یا fstab(5) انجام میشوند، ندارند.
اگر هر دو بیت ۶۰ و ۵۹ برای یک پارتیشن تنظیم شده باشند (یعنی پارتیشن هم به عنوان فقطخواندنی و هم برای گسترش سیستمفایل علامتگذاری شده باشد)، مورد دوم معمولاً بدون اثر خواهد بود: پرچم فقطخواندنی در بیشتر ابزارهایی که این پرچمها را میخوانند اولویت دارد، و از آنجا که گسترش سیستمفایل نیازمند نوشتن روی پارتیشن است، در نتیجه نادیده گرفته میشود.
NoAuto= بهطور پیشفرض off است. ReadOnly= برای انواع پارتیشنهای Verity بهطور پیشفرض on و برای بقیه موارد off است. GrowFileSystem= برای تمامی انواع پارتیشنهایی که از آن پشتیبانی میکنند بهطور پیشفرض on است، مگر اینکه پارتیشن فقطخواندنی علامتگذاری شده باشد (و بنابراین در عمل، برای پارتیشنهای Verity به off پیشفرض میشود).
در نسخه 249 اضافه شد.
SplitName=
در نسخه 252 اضافه شد.
Minimize=
در نسخه 253 اضافه شد.
MountPoint=
MountPoint="/path/with:colon":"zstd:1,noatime,lazytime"
این تنظیم را میتوان چندین بار مشخص کرد تا پارتیشن چندین بار متصل شود. این کار میتواند برای افزودن اتصالات برای زیرحجمهای مختلف btrfs(8) واقع در همان پارتیشن btrfs استفاده شود.
توجه داشته باشید که این تنظیم تنها زمانی در نظر گرفته میشود که --generate-fstab= در خط فرمان systemd-repart مشخص شده باشد.
در نسخه 256 اضافه شد.
EncryptedVolume=
توجه داشته باشید که این تنظیم تنها زمانی در نظر گرفته میشود که --generate-crypttab= در خط فرمان systemd-repart مشخص شده باشد. از آنجا که crypttab همراه با هشهای مورد انتظار تنها پس از قالببندی حجمهای LUKS قابل تولید است، خود crypttab نمیتواند در حجم تولیدشده قرار گیرد.
در نسخه 256 اضافه شد.
TPM2PCRs=
در نسخه 259 اضافه شد.
KeyFile=
در نسخه 259 اضافه شد.
Integrity=
نکته: رمزنگاری دیسک احرازاصالتشده توسط cryptsetup به عنوان آزمایشی (EXPERIMENTAL) در نظر گرفته میشود.
در نسخه 260 اضافه شد.
IntegrityAlgorithm=
در نسخه 260 اضافه شد.
Compression=
توجه داشته باشید که این تنظیم تنها زمانی در نظر گرفته میشود که سیستمفایل پیکربندیشده با 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= از فشردهسازی پشتیبانی کند و تنظیم Compression= صریحاً پیکربندی شده باشد.
در نسخه 257 اضافه شد.
SupplementFor=
فیلدهای زیر به شیوههای مشخصشده در تعریف هدف ادغام میشوند: Weight= و PaddingWeight= بهسادگی بازنویسی میشوند؛ SizeMinBytes= و PaddingMinBytes= از مقدار بزرگتر بین دو مقدار استفاده میکنند؛ SizeMaxBytes= و PaddingMaxBytes= از مقدار کوچکتر استفاده میکنند؛ و CopyFiles= ، ExcludeFiles= ، ExcludeFilesTarget= ، MakeDirectories= و Subvolumes= به هم متصل (الحاق) میشوند.
استفاده از این گزینه در ترکیب با CopyBlocks= ، Encrypt= یا Verity= پشتیبانی نمیشود. تعریف هدف نیز نمیتواند این تنظیمات را داشته باشد. یک تعریف نمیتواند همزمان مکمل باشد و به عنوان هدف برای تعریف مکمل دیگری عمل کند. یک هدف نمیتواند بیش از یک پارتیشن مکمل مرتبط با خود داشته باشد.
به عنوان مثال، توزیعها میتوانند از این گزینه برای پیادهسازی $BOOT همانطور که در UAPI.1 Boot Loader Specification[2] تعریف شده استفاده کنند. توزیعها ممکن است ترجیح دهند در صورت امکان از ESP به عنوان $BOOT استفاده کنند، اما برای پایبندی به مشخصات گاهی باید از XBOOTLDR در عوض استفاده شود. بنابراین، آنها باید دو تعریف ایجاد کنند: اولی تعریفی از ESP به اندازه کافی بزرگ تنها برای نگهداری بوتلودر، و دومی برای XBOOTLDR که برای نگهداری هستهها به اندازه کافی بزرگ باشد و به عنوان مکمل برای ESP پیکربندی شده باشد. در صورت امکان، systemd-repart(8) تلاش خواهد کرد دو تعریف را ادغام کرده تا یک ESP بزرگ ایجاد کند، اما اگر به دلیل شرایط موجود روی دیسک این کار مجاز نباشد، در عوض یک ESP کوچک و یک XBOOTLDR بزرگ ایجاد خواهد شد.
به عنوان مثالی دیگر، توزیعها میتوانند از این برای به اشتراکگذاری یکپارچه یک پارتیشن /home منفرد در سناریوی چندبوتی (multi-boot) استفاده کنند، در حالی که به طور پیشفرض ترجیح میدهند /home را روی پارتیشن ریشه نگه دارند. داشتن یک پارتیشن /home جدا از پارتیشن ریشه مستلزم پیچیدگیهای بیشتری است: شخصی باید تصمیم بگیرد فضا چگونه بین این دو پارتیشن تقسیم شود. از طرف دیگر، به کاربر اجازه میدهد بخش خانگی خود را بین چندین سیستمعامل نصبشده به اشتراک بگذارد (مثلاً از طریق systemd-homed.service(8)). توزیعها باید دو تعریف ایجاد کنند: اولی برای پارتیشن ریشه که درصد نسبتاً کمی از دیسک را اشغال میکند، و دومی به عنوان مکمل اولی برای ایجاد یک پارتیشن /home که تمام فضای خالی باقیمانده را به خود اختصاص دهد. در اولین بوت، اگر systemd-repart یک پارتیشن /home موجود روی دیسک پیدا کند، ادغام تعاریف را لغو کرده و تنها یک پارتیشن ریشه کوچک ایجاد میکند. در غیر این صورت، تعاریف ادغام شده و یک پارتیشن ریشه بزرگ منفرد ایجاد خواهد شد.
در نسخه 257 اضافه شد.
AddValidateFS=
این ویژگیهای توسعهیافته توسط systemd-validatefs@.service(8) خوانده میشوند و ممکن است محدودیتهایی را روی سیستمهای فایل متصلشده کدگذاری کنند که برای بوت موفقیتآمیز سیستم باید برآورده شوند. این امر بهویژه در سناریوهای systemd-gpt-auto-generator(8) که سلسلهمراتب اتصال را از دادههای غیرقابل اعتماد جدول پارتیشن GPT گردآوری میکند حائز اهمیت است. از آنجا که این ویژگیهای توسعهیافته درون سیستمفایل ذخیره میشوند، معمولاً به عنوان بخشی از سیستمفایل احراز اصالت میشوند (با فرض اینکه درون یک حجم محافظتشده قرار دارد؛ یعنی LUKS یا dm-verity) و از این رو میتوانند برای اعتبارسنجی امن فیلدهای منطبق در جدول پارتیشن مورد استفاده قرار گیرند.
در نسخه 258 اضافه شد.
FileSystemSectorSize=
اگر مشخص نشود و روی یک دستگاه بلوکی کار کند، به اندازه سکتور بومی دستگاه پیشفرض میشود. اگر مشخص نشود و روی یک فایل تصویر دیسک کار کند، به ۴۰۹۶ پیشفرض میشود.
صرفنظر از آنچه در اینجا پیکربندی شده است یا کدام پیشفرض انتخاب شده باشد، اندازه سکتور سیستمفایل همواره افزایش مییابد تا برابر یا بزرگتر از اندازه سکتور دیسک باشد.
در نسخه 258 اضافه شد.
شناسهها و مشخصکنندهها (SPECIFIERS)
مشخصکنندهها ممکن است در تنظیمات 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" | شناسه بوت (Boot ID) | شناسه بوت سیستم در حال اجرا، در قالب رشته. برای اطلاعات بیشتر به random(4) مراجعه کنید. |
| "%B" | شناسه ساخت (Build ID) سیستمعامل | شناسه ساخت سیستمعامل سیستم در حال اجرا، خواندهشده از فیلد BUILD_ID= در /etc/os-release. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل میشود. برای اطلاعات بیشتر به os-release(5) مراجعه کنید. |
| "%H" | نام میزبان (Host name) | نام میزبان سیستم در حال اجرا. |
| "%l" | نام کوتاه میزبان | نام میزبان سیستم در حال اجرا، کوتاه شده در اولین نقطه برای حذف هر بخش دامنه. |
| "%m" | شناسه ماشین (Machine ID) | شناسه ماشین سیستم در حال اجرا، در قالب رشته. برای اطلاعات بیشتر به machine-id(5) مراجعه کنید. |
| "%M" | شناسه تصویر سیستمعامل | شناسه تصویر سیستمعامل سیستم در حال اجرا، خواندهشده از فیلد IMAGE_ID= در /etc/os-release. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل میشود. برای اطلاعات بیشتر به os-release(5) مراجعه کنید. |
| "%o" | شناسه سیستمعامل | شناسه سیستمعامل سیستم در حال اجرا، خواندهشده از فیلد ID= در /etc/os-release. برای اطلاعات بیشتر به os-release(5) مراجعه کنید. |
| "%q" | نام زیبای میزبان (Pretty host name) | نام زیبای میزبان سیستم در حال اجرا، خواندهشده از فیلد PRETTY_HOSTNAME= در /etc/machine-info. اگر تنظیم نشده باشد، به نام کوتاه میزبان تبدیل میشود. برای اطلاعات بیشتر به machine-info(5) مراجعه کنید. |
| "%v" | انتشار هسته (Kernel release) | همانند خروجی uname -r. |
| "%w" | شناسه نسخه سیستمعامل | شناسه نسخه سیستمعامل سیستم در حال اجرا، خواندهشده از فیلد VERSION_ID= در /etc/os-release. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل میشود. برای اطلاعات بیشتر به os-release(5) مراجعه کنید. |
| "%W" | شناسه گونه (Variant ID) سیستمعامل | شناسه گونه سیستمعامل سیستم در حال اجرا، خواندهشده از فیلد VARIANT_ID= در /etc/os-release. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل میشود. برای اطلاعات بیشتر به os-release(5) مراجعه کنید. |
| "%T" | دایرکتوری فایلهای موقت | یا /tmp است یا مسیری که "$TMPDIR" ،"$TEMP" یا "$TMP" روی آن تنظیم شدهاند. (توجه داشته باشید که دایرکتوری ممکن است بدون اسلش پایانی مشخص شود.) |
| "%V" | دایرکتوری فایلهای موقت بزرگتر و ماندگار | یا /var/tmp است یا مسیری که "$TMPDIR" ،"$TEMP" یا "$TMP" روی آن تنظیم شدهاند. (توجه داشته باشید که دایرکتوری ممکن است بدون اسلش پایانی مشخص شود.) |
| "%%" | علامت درصد منفرد | برای تعیین یک علامت درصد منفرد، از "%%" بهجای "%" استفاده کنید. |
علاوه بر
این، برای
تنظیم
SplitName=
مشخصکنندههای
زیر نیز
شناختهشده
هستند:
جدول 5. مشخصکنندههای موجود
| مشخصکننده | مفهوم | جزئیات |
| "%T" | UUID نوع پارتیشن | شناسه یکتای نوع پارتیشن (UUID)، همانطور که با Type= پیکربندی شده است |
| "%t" | شناسه نوع پارتیشن | شناسه نوع پارتیشن متناظر با UUID نوع پارتیشن |
| "%U" | UUID پارتیشن | شناسه یکتای پارتیشن (UUID)، همانطور که با UUID= پیکربندی شده است |
| "%n" | شماره پارتیشن | شماره پارتیشن اختصاصیافته به پارتیشن |
محیط (ENVIRONMENT)
گزینههای
قالببندی
اضافی
سیستمفایل
را میتوان
با استفاده
از
متغیرهای
محیطی ویژه
سیستمفایل
ارائه کرد:
$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 را
میپذیرد.
محتوای این
متغیرها
همانگونه
که هست،
بدون
هیچگونه
اعتبارسنجی
به دستور
منتقل
میشود.
مثالها (EXAMPLES)
مثال 1. گسترش پارتیشن ریشه به کل اندازه دیسک در اولین بوت
با فایل زیر، پارتیشن ریشه در صورت امکان در طول بوت بهطور خودکار به کل اندازه دیسک گسترش مییابد.
# /usr/lib/repart.d/50-root.conf [Partition] Type=root
مثال 2. ایجاد خودکار پارتیشنهای swap و home در بوت در صورت نبود آنها
پارتیشن home تمام فضای دیسک موجود را دریافت میکند، در حالی که پارتیشن swap حداکثر 1G و حداقل 64M فضا میگیرد. ما اولویت > 0 را روی پارتیشن swap تنظیم میکنیم تا مطمئن شویم در صورت نبود فضای کافی از پارتیشن swap استفاده نمیشود. به ازای هر سه بایت اختصاصیافته به پارتیشن home، پارتیشن swap یک بایت دریافت میکند.
# /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" شامل پارتیشن ریشه (با اندازه ثابت 512M) و پارتیشن Verity برای پارتیشن ریشه (با اندازه ثابت 64M) را پوشش میدهند. از پیوندهای نمادین (symlinks) برای ایجاد مجموعه پارتیشنهای "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
همچنین ببینید (SEE ALSO)
systemd(1), systemd-repart(8), sfdisk(8), systemd-cryptenroll(1)
یادداشتها (NOTES)
- 1.
- UAPI.2 Discoverable Partitions Specification
- 2.
- UAPI.1 Boot Loader Specification
| systemd 261.2 |