| SYSUPDATE.D(5) | sysupdate.d | SYSUPDATE.D(5) |
نام (NAME)
sysupdate.d - تعاریف و قالبهای فایلهای پیکربندی بهروزرسانی سیستم
خلاصه دستور (SYNOPSIS)
توضیحات (DESCRIPTION)
این فایلها نحوه بهروزرسانی منابع خاص روی سیستم محلی را از یک منبع دوردست (ریموت) توصیف میکنند. هر فایل از این دست، یک انتقال را تعریف میکند: معمولاً یک منبع دوردست HTTP/HTTPS به عنوان مبدأ؛ و یک فایل، دایرکتوری یا پارتیشن محلی به عنوان مقصد. این سازوکار ممکن است به عنوان یک مکانیزم بهروزرسانی ساده، خودکار و اتمیک برای خود سیستمعامل، کانتینرها، سرویسهای پرتابل (قابلحمل) یا ایمیجهای افزونه سیستم (system extension) استفاده شود — اما در واقع میتوان از آن برای بهروزرسانی هر نوع فایلی از یک منبع دوردست بهره برد.
دستور systemd-sysupdate(8) این فایلها را میخواند و از آنها برای تعیین اینکه کدام منابع محلی باید بهروزرسانی شوند استفاده کرده و سپس بهروزرسانی را اجرا میکند.
هم منبع دوردست HTTP/HTTPS و هم مقصد محلی معمولاً در چندین نسخه همزمان وجود دارند تا طرحهای بهروزرسانی انعطافپذیری مانند بهروزرسانی A/B (یا مجموعهای گستردهتر از آن، مانند A/B/C، A/B/C/D و غیره) را پیادهسازی کنند.
هر فایل *.transfer یک انتقال را تعریف میکند، یعنی یک منبع را برای بهروزرسانی توصیف مینماید. به طور معمول، چندین مورد از این فایلها (یعنی چندین انتقال از این دست) با هم تعریف میشوند و با یک شناسه نسخه مشترک به یکدیگر پیوند میخورند تا چندین منبع را به طور همزمان در هر عملیات بهروزرسانی بهروز کنند؛ به عنوان مثال برای بهروزرسانی یک هسته (kernel)، یک سیستم فایل ریشه (root) و یک پارتیشن Verity در یک عملیات واحد، ترکیبی و همگامسازیشده، به طوری که تنها بهروزرسانی ترکیبی هر سه با هم یک بهروزرسانی کامل را تشکیل دهد. ما چنین مجموعهای از انتقالها را «هدف» (target) مینامیم. systemd-sysupdate(8) همیشه روی یک هدف واحد عمل میکند.
انتقالها میتوانند در مجموعههایی گروهبندی شوند که میتوانند توسط مدیر سیستم به صورت جداگانه فعال یا غیرفعال شوند، که «قابلیتهای اختیاری» (Optional Features) نامیده میشوند: sysupdate.features(5).
هر فایل *.transfer شامل سه بخش است: [Transfer]، [Source] و [Target].
حالت پایه عملکرد (BASIC MODE OF OPERATION)
بهروزرسانیهای سیستمعامل مبتنی بر ایمیج دیسک معمولاً شامل چندین منبع مختلف است که باید با هم بهروزرسانی شوند؛ برای مثال، یک بهروزرسانی امن سیستمعامل ممکن است شامل یک ایمیج سیستم فایل ریشه (root) برای قرار گرفتن در یک پارتیشن، یک ایمیج پارتیشن دادههای یکپارچگی Verity منطبق، و یک ایمیج هسته آمادهشده برای بوت شدن در ترکیب این دو پارتیشن باشد. دو منبع اول فایلهایی هستند که بارگیری شده و در یک پارتیشن دیسک قرار میگیرند، و مورد آخر فایلی است که بارگیری شده و در یک فایل معمولی در سیستم فایل بوت (مانند پارتیشن سیستم EFI) قرار میگیرد. از این رو، در طول بهروزرسانی یک سیستمعامل فرضی به نام "foobarOS" به یک نسخه فرضی ۴۷، عملیات زیر باید انجام شود:
تعمیم مستقل از نسخه این فرآیند به صورت زیر خواهد بود (با استفاده از نشانه ویژه "@v" به عنوان نویسه عام برای شناسه نسخه):
یک بهروزرسانی تنها در صورتی میتواند کامل شود که نشانیهای وب مربوطه، منابع خود را برای همان نسخه، یعنی برای همان مقدار "@v" ارائه دهند.
موارد فوق ممکن است به سه فایل *.transfer در sysupdate.d/ ترجمه شوند، یکی برای هر منبعی که باید انتقال یابد. فایلهای *.transfer نوع بارگیری و مکانی را که بارگیری باید در آن نوشته شود (یعنی در یک پارتیشن یا فایلی در سیستم فایل) پیکربندی میکنند. مهمتر از همه، این فایلها حاوی الگوهای نشانی وب، نام پارتیشن و نام فایلی هستند که در بالا نشان داده شد و نحوه نامگذاری این منابع در مبدأ و چگونگی نامگذاری آنها در مقصد را توصیف میکنند.
به منظور شمارش نسخههای موجود و یافتن گزینههای مناسب برای بهروزرسانی، سازوکاری برای فهرست کردن فایلهای مناسب لازم است:
انتقالها به ترتیب حروف الفبای نام فایلهای .transfer که در آنها تعریف شدهاند انجام میشوند. ابتدا، دادههای منبع مستقیماً در یک فایل/دایرکتوری/پارتیشن مقصد بارگیری میشوند. پس از اتمام این کار برای تمام انتقالهای تعریفشده، در مرحله دوم فایلها/دایرکتوریها/پارتیشنها به نامهای نهایی خود مطابق با MatchPattern= مقصد تغییر نام مییابند، باز هم به ترتیبی که نام فایلهای .transfer دیکته میکند. این مرحله اتمیک نیست، با این حال تضمین میشود که دقیقاً به ترتیب و با همگامسازی مناسب دیسک اجرا شود. به طور معمول، هنگام بهروزرسانی یک سیستمعامل، یکی از انتقالها نقطه ورود (entry point) را هنگام بوت تعریف میکند. بنابراین، به طور کلی ایده خوبی است که منابع را از طریق نام فایلهای پیکربندی انتقال مرتب کنید تا نقطه ورود در آخر نوشته شود و اطمینان حاصل شود که هرگونه خاتمه غیرعادی، نقطه ورودی را بر جای نگذارد که پشتیبان آن هنوز ایجاد نشده است. در مثال بالا، منطقی است که ایمیج هسته EFI در آخرین مرحله ایجاد شود و بنابراین نام فایل پیکربندی انتقال آن از نظر الفبایی در آخرین جایگاه قرار گیرد.
برای یک مثال گستردهتر و دقیقتر بر اساس موارد فوق، به ادامه متن مراجعه کنید.
انواع منابع (RESOURCE TYPES)
هر فایل انتقال یک منبع مبدأ را برای انتقال به یک منبع مقصد تعریف میکند. انواع منابع زیر پشتیبانی میشوند:
همانطور که پیشتر اشاره شد، تنها زیرمجموعهای از ترکیبهای انواع منابع مبدأ و مقصد پشتیبانی میشوند:
جدول 1. انواع منابع
| شناسه | توضیحات | قابل استفاده به عنوان مبدأ | هنگام استفاده به عنوان مبدأ: مقصدهای سازگار | هنگام استفاده به عنوان مبدأ: یکپارچگی + احراز اصالت | هنگام استفاده به عنوان مبدأ: فشردهزدایی | قابل استفاده به عنوان مقصد | هنگام استفاده به عنوان مقصد: مبداهای سازگار |
| url-file | فایلهای HTTP/HTTPS | بله | regular-file، partition | بله | بله | خیر | - |
| url-tar | آرشیوهای .tar تحت HTTP/HTTPS | بله | directory، subvolume | بله | بله | خیر | - |
| regular-file | فایلهای محلی | بله | regular-file، partition | خیر | بله | بله | url-file، regular-file |
| partition | پارتیشنهای GPT محلی | خیر | - | - | - | بله | url-file، regular-file |
| tar | آرشیوهای .tar محلی | بله | directory، subvolume | خیر | بله | خیر | - |
| directory | دایرکتوریهای محلی | بله | directory، subvolume | خیر | خیر | بله | url-tar، tar، directory، subvolume |
| subvolume | سابوالیومهای btrfs محلی | بله | directory، subvolume | خیر | خیر | بله | url-tar، tar، directory، subvolume |
فایلهای
مانیفست
SHA256SUMS مورد
استفاده
توسط انواع
منابع "url-file" و
"url-tar" از همان
قالب فایل
معمولی
تولیدشده
توسط ابزار
sha256sum(1) گنو
پیروی
میکنند.
توصیه
میشود از
حالت --binary
استفاده
شود، حتی
اگر این کار
اثر واقعی
روی
سیستمهای
لینوکس
نداشته
باشد. این
فهرست فقط
باید شامل
نویسههای
اسکی (ASCII) و فقط
نام
فایلهای
معمولی
باشد (یعنی
بدون
مسیرهای
مطلق یا
نسبی). اگر
فهرست SHA256SUMS
شامل فایل
ویژه "BEST-BEFORE-YYYY-MM-DD"
باشد (که با
سال، ماه و
روز پر شده
باشد)، در
این صورت
فهرست فایل
پس از تاریخ
مشخصشده
معتبر در
نظر گرفته
نمیشود و
انتقال در
چنین
شرایطی
ناموفق
خواهد بود.
این قابلیت
ممکن است
برای تشخیص
تازگی (freshness)
فایل
مانیفست
استفاده
شود.
الگوهای تطبیق (MATCH PATTERNS)
هم منابع مبدأ و هم منابع مقصد معمولاً در چندین نسخه به طور همزمان وجود دارند. عملیات بهروزرسانی هر زمان که جدیدترین نسخه از نسخههای مبدأ، جدیدتر از جدیدترین نسخه از نسخههای مقصد باشد انجام میشود. برای تعیین جدیدترین نسخه از منابع، از فهرستبندی دایرکتوری، فهرستبندی پارتیشن یا فهرستبندی مانیفست استفاده میشود، زیرمجموعهای از ورودیهای واجد شرایط از میان آنها انتخاب میگردد، و شناسه نسخه از نام فایلها یا برچسبهای پارتیشن این ورودیهای انتخابشده استخراج میشود. انتخاب زیرمجموعه و استخراج شناسه نسخه (به همراه فرادادههای احتمالی دیگر) از طریق الگوهای تطبیق انجام میشود که در MatchPattern= در بخشهای [Source] و [Target] پیکربندی میگردند. این الگوها رشتههایی هستند که نحوه نامگذاری فایلها یا پارتیشنها را توصیف میکنند، همراه با نویسههای عام نامگذاریشده برای فیلدهای خاص مانند شناسه نسخه. نویسههای عام زیر تعریف شدهاند:
جدول 2. نویسههای عام الگوی تطبیق
| نویسه عام | توضیحات | قالب | یادداشتها |
| "@v" | شناسه نسخه | رشته نسخه معتبر | اجباری |
| "@u" | شناسه UUID پارتیشن GPT | رشته UUID معتبر ۱۲۸ بیتی | فقط در صورتی مرتبط است که نوع منبع مقصد به عنوان partition انتخاب شده باشد |
| "@f" | فلگهای پارتیشن GPT | عدد صحیح هگزادسیمال قالببندیشده | فقط در صورتی مرتبط است که نوع منبع مقصد به عنوان partition انتخاب شده باشد |
| "@a" | فلگ NoAuto پارتیشن GPT | یا "0" یا "1" | بیت NoAuto از فلگهای پارتیشن GPT را مطابق با مشخصات پارتیشنهای قابلکشف UAPI.2[1] کنترل میکند؛ فقط در صورتی مرتبط است که نوع منبع مقصد به عنوان partition انتخاب شده باشد |
| "@g" | فلگ GrowFileSystem پارتیشن GPT | یا "0" یا "1" | بیت GrowFileSystem از فلگهای پارتیشن GPT را مطابق با مشخصات پارتیشنهای قابلکشف UAPI.2[1] کنترل میکند؛ فقط در صورتی مرتبط است که نوع منبع مقصد به عنوان partition انتخاب شده باشد |
| "@r" | فلگ فقطخواندنی | یا "0" یا "1" | بیت ReadOnly از فلگهای پارتیشن GPT را مطابق با مشخصات پارتیشنهای قابلکشف UAPI.2[1] و سایر فلگهای خروجی فقطخواندنی کنترل میکند، به ReadOnly= در زیر مراجعه کنید |
| "@t" | زمان تغییر فایل | عدد صحیح دهدهی قالببندیشده، میکروثانیه از مبدأ زمان یونیکس (۱ ژانویه ۱۹۷۰) | فقط در صورتی مرتبط است که نوع منبع مقصد به عنوان regular-file انتخاب شده باشد |
| "@m" | حالت دسترسی به فایل | عدد صحیح هشتهشتی (اکتال) قالببندیشده، به سبک یونیکس | فقط در صورتی مرتبط است که نوع منبع مقصد به عنوان regular-file انتخاب شده باشد |
| "@s" | اندازه فایل پس از فشردهزدایی | عدد صحیح دهدهی قالببندیشده | برای اندازهگیری پیشرفت و بهبود منطق تخصیص پارتیشن مفید است |
| "@d" | تلاشهای انجامشده | عدد صحیح دهدهی قالببندیشده | هنگام کار با فایلهای ایمیج هسته مفید است، مطابق با ارزیابی خودکار بوت[3] |
| "@l" | تلاشهای باقیمانده | عدد صحیح دهدهی قالببندیشده | هنگام کار با فایلهای ایمیج هسته مفید است، مطابق با ارزیابی خودکار بوت[3] |
| "@h" | هش SHA256 فایل فشرده | ۶۴ نویسه هگزادسیمال | هش SHA256 فایل فشرده؛ برای url-file یا url-tar که هش SHA256 از قبل در فایل مانیفست گنجانده شده است مفید نیست |
از میان
این
نویسههای
عام، تنها
"@v" باید در
یک الگوی
معتبر وجود
داشته
باشد، و
تمام
نویسههای
عام دیگر
اختیاری
هستند. هر
نویسه عام
ممکن است
حداکثر یک
بار در هر
الگو
استفاده
شود. یک
نویسه عام
معمول برای
تطبیق
ایمیج مبدأ
سیستم فایل
میتواند
"MatchPattern=foobar_@v.raw.xz"
باشد، یعنی
هر فایلی که
نام آن با
"foobar_" شروع
میشود، به
دنبال آن یک
شناسه نسخه
میآید و
پسوند آن
".raw.xz" است.
پیشوند نویسه عام الگوی تطبیق "@" را با پیشوند بسط مشخصکننده "%" اشتباه نگیرید. اولی بخش متغیری از یک رشته الگوی تطبیق را کپسولهسازی میکند، در حالی که دومی میانبرهای سادهای هستند که هنگام تجزیه فایلهای دراپاین بسط مییابند. برای جزئیات درباره مشخصکنندهها، به ادامه متن مراجعه کنید.
گزینههای بخش [TRANSFER] ([TRANSFER] SECTION OPTIONS)
این بخش ویژگیهای عمومی این انتقال را تعریف میکند.
MinVersion=
در نسخه ۲۵۱ اضافه شد.
ProtectVersion=
مانند بسیاری از تنظیمات در این فایلهای پیکربندی، این تنظیم نیز از بسط مشخصکنندهها پشتیبانی میکند. تنظیم این گزینه روی یکی از مشخصکنندههای "%A"، "%B" یا "%w" برای ارجاع خودکار به نسخه سیستمعامل فعلی سیستم در حال اجرا بسیار مفید است. برای جزئیات در مورد مشخصکنندههای پشتیبانیشده به ادامه متن مراجعه کنید.
در نسخه ۲۵۱ اضافه شد.
Verify=
این گزینه برای ارائه تضمینهای یکپارچگی برای منابع بارگیریشده ضروری است و بنابراین باید به جز در محیطهای آزمایشی، فعال بماند.
توجه داشته باشید که فایلهای بارگیریشده بدون قید و شرط در برابر هشهای SHA256 فهرستشده در مانیفست بررسی میشوند. این گزینه فقط کنترل میکند که آیا امضاهای این مانیفستها تأیید میشوند یا خیر.
این گزینه فقط در صورتی تأثیر دارد که نوع منبع مبدأ به عنوان url-file یا url-tar انتخاب شده باشد، زیرا بررسی یکپارچگی و احراز اصالت فقط برای انتقال از منابع دوردست در دسترس است.
در نسخه ۲۵۱ اضافه شد.
ChangeLog=
این گزینه ممکن است چندین بار در یک تعریف انتقال تنظیم شود. در صورت تنظیم چندباره، مقادیر در فهرستی از نشانیهای وب جمعآوری میشوند. افزودن یک مقدار رشته خالی، فهرست موجود را از تمام مقادیر پاک میکند.
این تنظیم از بسط مشخصکنندهها پشتیبانی میکند. برای جزئیات در مورد مشخصکنندههای پشتیبانیشده به ادامه متن مراجعه کنید. این تنظیم همچنین الگوی نویسه عام "@v" را بسط میدهد. برای جزئیات به بالا مراجعه کنید.
در نسخه ۲۵۷ اضافه شد.
AppStream=
این تنظیم از بسط مشخصکنندهها پشتیبانی میکند. برای جزئیات در مورد مشخصکنندههای پشتیبانیشده به ادامه متن مراجعه کنید.
در نسخه ۲۵۷ اضافه شد.
Features=
اگر فهرست قابلیتها خالی باشد، این انتقال همیشه استفاده میشود. اگر این انتقال به بیش از یک قابلیت تعلق داشته باشد، در صورتی استفاده خواهد شد که هر یک از قابلیتهای فهرستشده فعال باشد. نامی که با یک قابلیت تعریفشده مطابقت نداشته باشد، به یک قابلیت ضمنی تبدیل میشود که همیشه غیرفعال است.
در نسخه ۲۵۷ اضافه شد.
RequisiteFeatures=
در نسخه ۲۵۷ اضافه شد.
گزینههای بخش [SOURCE] ([SOURCE] SECTION OPTIONS)
این بخش ویژگیهای مبدأ انتقال را تعریف میکند.
Type=
توجه داشته باشید که تنها ترکیبهای خاصی از انواع منابع مبدأ و مقصد پشتیبانی میشوند؛ به بالا مراجعه کنید.
در نسخه ۲۵۱ اضافه شد.
Path=
اگر نوع مبدأ به عنوان url-file یا url-tar انتخاب شود، این مقدار باید یک نشانی وب HTTP/HTTPS باشد. برای دریافت فایل مانیفست، پسوند /SHA256SUMS به نشانی وب افزوده میشود، برای دریافت فایل امضای مجزای آن، پسوند /SHA256SUMS.gpg افزوده میشود، و در صورتی که بهروزرسانی اجرا شود و منبعی باید بارگیری گردد، نام فایلهای فهرستشده در فایل مانیفست افزوده خواهند شد.
برای تمام انواع دیگر منابع مبدأ، این مقدار باید یک مسیر محلی در سیستم فایل باشد که به یک دایرکتوری محلی برای یافتن نسخههای این منبع اشاره میکند.
در نسخه ۲۵۱ اضافه شد.
MatchPattern=
این گزینه اجباری است. هر الگوی فهرستشده باید حداقل شامل نویسه عام "@v" باشد تا بتوان شناسه نسخه را از نام فایل استخراج کرد. تمام نویسههای عام دیگر اختیاری هستند.
اگر نوع مبدأ regular-file یا directory باشد، الگو ممکن است حاوی نویسههای خط مورب (اسلش) باشد. در این صورت، با فایل یا دایرکتوری در زیردایرکتوری مربوطه مطابقت خواهد داشت. برای مثال "MatchPattern=foo_@v/bar.efi" با "bar.efi" در دایرکتوری "foo_1" مطابقت پیدا میکند.
در نسخه ۲۵۱ اضافه شد.
گزینههای بخش [TARGET] ([TARGET] SECTION OPTIONS)
این بخش ویژگیهای مقصد انتقال را تعریف میکند.
Type=
توجه داشته باشید که تنها ترکیبهای خاصی از انواع منابع مبدأ و مقصد پشتیبانی میشوند؛ به بالا مراجعه کنید.
در نسخه ۲۵۱ اضافه شد.
Path=
توجه داشته باشید که در صورتی که Type= روی partition تنظیم شده باشد، این سازوکار نمیتواند برای ایجاد یا حذف پارتیشنها استفاده شود. پارتیشنها باید از قبل وجود داشته باشند و از یک برچسب پارتیشن ویژه به نام "_empty" برای نشان دادن پارتیشنهای خالی استفاده میشود. برای تولید خودکار پارتیشنهای مناسب در نخستین بوت، از ابزاری مانند systemd-repart(8) استفاده کنید.
در نسخه ۲۵۱ اضافه شد.
PathRelativeTo=
اگر روی root، esp، xbootldr تنظیم شود، مقدار مشخصشده Path= نسبت به نقطه اتصال (mount point) پارتیشن مربوطه، همانطور که توسط مشخصات بوتلودر UAPI.1[2] تعریف شده است، حل و فصل خواهد شد.
اگر روی boot تنظیم شود، مقدار مشخصشده Path= نسبت به نقطه اتصال پارتیشن $BOOT (یعنی ESP یا XBOOTLDR)، همانطور که توسط مشخصات بوتلودر UAPI.1[2] تعریف شده است، حل و فصل خواهد شد.
اگر روی explicit تنظیم شود، مقدار مشخصشده Path= نسبت به دایرکتوری مشخصشده با --transfer-source= هنگام فراخوانی systemd-sysupdate(8) حل و فصل خواهد شد.
مقادیر esp، xbootldr و boot تنها زمانی پشتیبانی میشوند که Type= روی regular-file یا directory تنظیم شده باشد.
در نسخه ۲۵۴ اضافه شد.
MatchPattern=
این گزینه اجباری است. هر الگوی فهرستشده باید حداقل شامل نویسه عام "@v" باشد تا بتوان شناسه نسخه را از نام فایل استخراج کرد. تمام نویسههای عام دیگر اختیاری هستند.
این الگو هم برای تطبیق نسخههای نصبشده موجود و هم برای تعیین نام نسخههای جدید جهت نصب استفاده میشود. اگر چندین الگو مشخص شود، اولین الگوی مشخصشده برای نامگذاری نسخههای تازه نصبشده استفاده میشود.
اگر نوع مقصد regular-file یا directory باشد، الگو ممکن است حاوی نویسههای خط مورب باشد. در این صورت، با فایل یا دایرکتوری در زیردایرکتوری مربوطه مطابقت خواهد داشت. برای مثال "MatchPattern=foo_@v/bar.efi" با "bar.efi" در دایرکتوری "foo_1" مطابقت پیدا میکند. دایرکتوریهای موجود در مسیر هنگام نصب فایل ایجاد خواهند شد. دایرکتوریهای خالی هنگام حذف فایل پاک میشوند.
در نسخه ۲۵۱ اضافه شد.
MatchPartitionType=
در نسخه ۲۵۱ اضافه شد.
PartitionUUID=، PartitionFlags=، PartitionNoAuto=، PartitionGrowFileSystem=
توجه داشته باشید که این تنظیمات برای تطبیق استفاده نمیشوند، بلکه فقط در صورتی که انتقالی انجام شود، روی پارتیشنهای تازه نوشتهشده تأثیر میگذارند.
در نسخه ۲۵۱ اضافه شد.
ReadOnly=
در نسخه ۲۵۱ اضافه شد.
Mode=
توجه داشته باشید که این تنظیم برای تطبیق استفاده نمیشود، بلکه فقط در صورتی که انتقالی انجام شود، روی فایلهای تازه نوشتهشده تأثیر دارد.
در نسخه ۲۵۱ اضافه شد.
TriesDone=، TriesLeft=
در نسخه ۲۵۱ اضافه شد.
InstancesMax=
توجه داشته باشید که این تنظیم ممکن است برای هر انتقال به صورت متفاوت تنظیم شود. با این حال، به طور کلی توصیه میشود این تنظیم را برای تمام انتقالها یکسان نگه دارید، زیرا در غیر این صورت ترکیبهای ناقصی از فایلها یا پارتیشنها به صورت نصبشده باقی خواهند ماند.
اگر Type= مقصد به عنوان partition انتخاب شود، تعداد نسخههای همزمان برای نگهداری علاوه بر این توسط تعداد اسلاتهای پارتیشن از نوع صحیح در جدول پارتیشن محدود میشود. یعنی اگر تنها ۲ اسلات پارتیشن برای نوع پارتیشن انتخابشده وجود داشته باشد، تنظیم این مقدار بزرگتر از ۲ بیاثر است، زیرا در هر صورت بیش از ۲ نسخه همزمان نمیتوانند در ایمیج ذخیره شوند.
در نسخه ۲۵۱ اضافه شد.
RemoveTemporary=
در نسخه ۲۵۱ اضافه شد.
CurrentSymlink=
در نسخه ۲۵۱ اضافه شد.
مشخصکنندهها (SPECIFIERS)
مشخصکنندهها ممکن است در تنظیمات MinVersion=، ProtectVersion=، Path=، MatchPattern= و CurrentSymlink= استفاده شوند. بسطهای زیر پشتیبانی میشوند:
جدول 3. مشخصکنندههای موجود
| مشخصکننده | مفهوم | جزئیات |
| "%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) مراجعه کنید. |
| "%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" روی آن تنظیم شدهاند. (توجه داشته باشید که دایرکتوری ممکن است بدون خط مورب انتهایی مشخص شود.) |
| "%%" | علامت تکدرصد | از "%%" به جای "%" برای مشخص کردن یک علامت تکدرصد استفاده کنید. |
پیشوند
بسط
مشخصکننده
"%" را با
پیشوند
نویسه عام
الگوی
تطبیق "@"
اشتباه
نگیرید.
اولی
میانبرهای
سادهای
هستند که
هنگام
تجزیه
فایلهای
دراپاین
بسط
مییابند،
در حالی که
دومی بخش
متغیری از
یک رشته
الگوی
تطبیق را
کپسولهسازی
میکند.
برای
جزئیات
درباره
نویسههای
عام الگوی
تطبیق، به
بالا
مراجعه
کنید.
مثالها (EXAMPLES)
مثال 1. بهروزرسانیها برای یک سیستمعامل امن با Verity فعال
با سه فایل زیر، یک پارتیشن سیستم فایل ریشه، یک پارتیشن Verity منطبق، و یک ایمیج هسته یکپارچه را برای بهروزرسانی به عنوان یک مجموعه واحد تعریف میکنیم. این مثال گسترشی از مثال مورد بحث در ابتدای این صفحه راهنما است.
# /usr/lib/sysupdate.d/50-verity.transfer [Transfer] ProtectVersion=%A [Source] Type=url-file Path=https://download.example.com MatchPattern=foobarOS_@v_@u.verity.xz [Target] Type=partition Path=auto MatchPattern=foobarOS_@v_verity MatchPartitionType=root-verity PartitionFlags=0 ReadOnly=1
موارد بالا سازوکار بهروزرسانی را برای پارتیشن Verity سیستم فایل ریشه تعریف میکند. ایمیجهای پارتیشن Verity از "https://download.example.com/foobarOS_@v_@u.verity.xz" بارگیری شده و در یک پارتیشن محلی مناسب نوشته میشوند که به عنوان فقطخواندنی علامتگذاری شده است. با این فرض که این بهروزرسانی از خود ایمیج اجرا میشود، نسخه فعلی ایمیج (یعنی مشخصکننده "%A") به عنوان محافظتشده نشانهگذاری میشود تا اطمینان حاصل شود که در حین بوت بودن خراب نمیشود. توجه داشته باشید که شناسه UUID پارتیشن برای پارتیشن مقصد در نام فایل مبدأ کدگذاری شده است. تثبیت UUID پارتیشن میتواند برای اطمینان از اینکه عبارت "roothash=" در خط فرمان هسته برای مشخص کردن دقیق هر دو پارتیشن Verity و سیستم فایل ریشه و همچنین کدگذاری هش سطح ریشه Verity کافی است مفید باشد (با این فرض که UUID در نام فایلها با هش سطح بالای آنها مطابقت دارد، همانطور که systemd-gpt-auto-generator(8) پیشنهاد میکند).
# /usr/lib/sysupdate.d/60-root.transfer [Transfer] ProtectVersion=%A [Source] Type=url-file Path=https://download.example.com MatchPattern=foobarOS_@v_@u.root.xz [Target] Type=partition Path=auto MatchPattern=foobarOS_@v MatchPartitionType=root PartitionFlags=0 ReadOnly=1
موارد بالا یک تعریف انتقال منطبق برای سیستم فایل ریشه را تعریف میکند.
# /usr/lib/sysupdate.d/70-kernel.transfer
[Transfer]
ProtectVersion=%A
[Source]
Type=url-file
Path=https://download.example.com
MatchPattern=foobarOS_@v.efi
[Target]
Type=regular-file
Path=/EFI/Linux
PathRelativeTo=boot
MatchPattern=foobarOS_@v+@l-@d.efi \
foobarOS_@v+@l.efi \
foobarOS_@v.efi
Mode=0644
TriesLeft=3
TriesDone=0
InstancesMax=2
موارد بالا یک ایمیج هسته یکپارچه را مطابق با مشخصات بوتلودر UAPI.1[2] نوع #2 در پارتیشن $BOOT نصب میکند. این کار سه الگوی ممکن را برای نام ایمیجهای هسته مطابق با ارزیابی خودکار بوت[3] تعریف میکند، و اطمینان میدهد که هنگام نصب هستههای جدید، آنها با ۳ تلاش باقیمانده راهاندازی میشوند. حداکثر دو هسته موازی نگهداری میشوند.
با این پیکربندی، وبسرور فایلهای زیر را برای نسخه فرضی ۷ از سیستمعامل ارائه میدهد:
برای هر انتشار جدید سیستمعامل، یک مجموعه جدید از سه فایل اخیر اضافه میشود که هر بار دارای یک نسخه بهروزرسانیشده است. مانیفست SHA256SUMS سپس باید بر همین اساس بهروزرسانی شود و تمام فایلها را برای همه نسخههایی که باید برای بارگیری ارائه شوند، فهرست کند.
مثال 2. بهروزرسانیها برای ایمیج کانتینر دایرکتوری ساده
[Source] Type=url-tar Path=https://download.example.com MatchPattern=myContainer_@v.tar.gz [Target] Type=subvolume Path=/var/lib/machines MatchPattern=myContainer_@v CurrentSymlink=myContainer
در بهروزرسانیها، این کار "https://download.example.com/myContainer_@v.tar.gz" را بارگیری کرده و آن را در /var/lib/machines/myContainer_@v از حالت فشرده خارج و استخراج میکند. پس از هر بهروزرسانی، یک پیوند نمادین به نام /var/lib/machines/myContainer ایجاد/بهروزرسانی میشود که همیشه به جدیدترین بهروزرسانی اشاره دارد.
همچنین ببینید (SEE ALSO)
نکات (NOTES)
- 1.
- مشخصات پارتیشنهای قابلکشف UAPI.2
- 2.
- مشخصات بوتلودر UAPI.1
- 3.
- ارزیابی خودکار بوت
- 4.
- کاتالوگ AppStream
- 5.
- فرادادههای ویژه
| systemd 261.3 |