| SYSUPDATE.FEATURES(5) | sysupdate.features | SYSUPDATE.FEATURES(5) |
نام (NAME)
sysupdate.features - قابلیتها و ویژگیهای ابزار بهروزرسانی خودکار سیستم
خلاصه دستور (SYNOPSIS)
توضیحات (DESCRIPTION)
«قابلیتهای اختیاری» (Optional Features) عملکردهایی هستند که توسط systemd-sysupdate(8) ارائه میشوند و به یک توزیع اجازه میدهند مجموعههایی از تعاریف انتقال sysupdate.d(5) را تعریف کند که قرار است توسط مدیر سیستم فعال یا غیرفعال شوند.
هنگامی که یک قابلیت فعال است، انتقالهای متعلق به آن هنگام بررسی و بارگیری بهروزرسانیها، پاکسازی (vacuuming) و در تمام موقعیتهای دیگر در نظر گرفته میشوند. در واقع، انتقالهای متعلق به یک قابلیت همیشه همگام با بقیه بخشهای هدف مربوطهشان بهروزرسانی خواهند شد. این تفاوت اصلی میان یک قابلیت اختیاری و یک مؤلفه (component) در systemd-sysupdate(8) است. هنگامی که یک قابلیت غیرفعال است، انتقالهای آن هنگام بررسی و بارگیری بهروزرسانیها در نظر گرفته نمیشوند، اما systemd-sysupdate همچنان در حین پاکسازی و سایر شرایطی که نیاز به تعیین مالکیت منابع سیستم قبلاً بارگیریشده دارد، آنها را در نظر میگیرد. systemd-sysupdate هر زمان که یک قابلیت غیرفعال شود، تمام نمونههای انتقالهای آن را پاکسازی میکند و در عمل آن را حذف نصب مینماید.
قابلیتهای اختیاری توسط فایلهای sysupdate.d/*.feature که در زیر تعریف شدهاند، شرح داده میشوند. انتقالها میتوانند از طریق تنظیم Features= اعلام کنند که متعلق به یک قابلیت هستند. تعاریف قابلیتها از فایلهای دراپاین (drop-in) پشتیبانی میکنند که بیش از همه برای بازنویسی تنظیم Enabled= استفاده میشوند. همچنین میتوان آنها را ماسک کرد تا در دسترس بودن قابلیت به طور کامل پنهان شود.
هر فایل *.feature شامل یک بخش است: [Feature].
گزینههای بخش [FEATURE] ([FEATURE] SECTION OPTIONS)
این بخش ویژگیهای عمومی این قابلیت را تعریف میکند.
Description=
در نسخه ۲۵۷ اضافه شد.
Documentation=
در نسخه ۲۵۷ اضافه شد.
AppStream=
در نسخه ۲۵۷ اضافه شد.
Enabled=
در نسخه ۲۵۷ اضافه شد.
مشخصکنندهها (SPECIFIERS)
مشخصکنندهها ممکن است در تنظیمات Documentation= و AppStream= استفاده شوند. بسطهای زیر پشتیبانی میشوند:
جدول 1. مشخصکنندههای موجود
| مشخصکننده | مفهوم | جزئیات |
| "%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. ابزارهای
توسعه برای
سیستمعامل
مبتنی بر
ایمیج (Image-Based OS)
ما از "foobarOS" فرضی شرح داده شده در sysupdate.d(5) به عنوان سیستمعامل پایه نمونه استفاده خواهیم کرد. اکثریت قریب به اتفاق کاربران foobarOS نیازی به کامپایلر، سیستم ساخت، دیباگر و سایر ابزارهای توسعه به عنوان بخشی از سیستمعامل خود ندارند. با این حال، توسعهدهندگان خود foobarOS نیاز دارند که این ابزارهای ساخت در دسترس باشند. بنابراین، foobarOS باید یک ایمیج افزونه سیستم (به systemd-sysext(8) مراجعه کنید) حاوی این ابزارهای توسعه ارائه دهد، و این ایمیج باید همگام با سیستمعامل پایه زیرین بهروزرسانی شود. این یک مورد کاربرد عالی برای یک قابلیت اختیاری سیستمعامل است، پس بیایید یکی تعریف کنیم:
# /usr/lib/sysupdate.d/devel.feature [Feature] Description=Development Tools Documentation=https://developer.example.com/foobarOS/getting-started Enabled=false
مورد بالا قابلیت "devel" را تعریف کرده و به طور پیشفرض آن را غیرفعال میکند. اکنون بیایید یک انتقال مرتبط با این قابلیت تعریف کنیم:
# /usr/lib/sysupdate.d/50-devel.transfer [Transfer] Features=devel ProtectVersion=%A [Source] Type=url-file Path=https://download.example.com MatchPattern=foobarOS_@v_devel.raw.xz [Target] Type=regular-file Path=/var/lib/extensions MatchPattern=foobarOS_@v_devel.raw Mode=0444 InstancesMax=2
با این دو فایل، ما قابلیتی به نام "devel" ایجاد کردهایم که در صورت فعال بودن، نسخه مناسب "https://download.example.com/foobarOS_@v_devel.raw.xz" را در حین هر بهروزرسانی سیستمعامل بارگیری و از حالت فشرده خارج کرده و در "/var/lib/extensions/foobarOS_@v_devel.raw" قرار میدهد.
توسعهدهندگان foobarOS میتوانند قابلیت "devel" را در ایستگاههای کاری خود با ایجاد دراپاین زیر فعال کنند:
# /etc/sysupdate.d/devel.feature.d/enable.conf [Feature] Enabled=true
مثال 2. راهاندازهای انحصاری (Proprietary Drivers)
فرض کنید که بسیاری از کاربران foobarOS دارای پردازنده گرافیکی ساخت شرکت MVISUAL هستند. به دلیل فقدان مستندات و دشواری در مهندسی معکوس سختافزار، راهاندازهای متنباز برای پردازندههای گرافیکی MVISUAL قادر به استفاده مناسب از عملکرد گرافیکی و محاسباتی موجود نیستند. شرکت MVISUAL یک راهانداز انحصاری قابلتوزیع مجدد برای کارتهای خود ارائه میدهد و توسعهدهندگان foobarOS برای پاسخگویی به نیازهای کاربرانشان آنها را توزیع میکنند.
راهانداز MVISUAL دارای چند بخش مختلف است که برای کارکرد آن باید نصب شوند: یک افزونه UKI برای پیکربندی خط فرمان هسته، یک ایمیج افزونه سیستم initrd برای افزودن ماژول هسته MVISUAL به initrd، و یک ایمیج افزونه سیستم معمولی برای افزودن راهاندازهای انحصاری فضای کاربری اوپنجیال (OpenGL) و ولکان (Vulkan). همه اینها باید با نسخه سیستمعامل اصلی قفل (همگام) شوند.
بیایید با تعریف یک قابلیت اختیاری به نام "mvisual-driver" شروع کنیم:
# /usr/lib/sysupdate.d/mvisual-driver.feature [Feature] Description=MVISUAL Proprietary GPU Driver Documentation=https://support.example.com/foobarOS/mvisual AppStream=https://metadata.example.com/mvisual-driver-%A.xml.gz
توجه داشته باشید که ما فراداده AppStream را برای این قابلیت تعریف میکنیم، زیرا میخواهیم مراکز نرمافزاری آن را به کاربران نهایی نمایش دهند. سپس، بیایید انتقالهای مربوطه را تعریف کنیم:
# /usr/lib/sysupdate.d/50-mvisual-userspace.transfer [Transfer] Features=mvisual-driver ProtectVersion=%A [Source] Type=url-file Path=https://download.example.com MatchPattern=foobarOS_@v_mvisual_userspace.raw.xz [Target] Type=regular-file Path=/var/lib/extensions MatchPattern=foobarOS_@v_mvisual.raw Mode=0444 InstancesMax=2
# /usr/lib/sysupdate.d/70-mvisual-initrd.transfer [Transfer] Features=mvisual-driver ProtectVersion=%A [Source] Type=url-file Path=https://download.example.com MatchPattern=foobarOS_@v_mvisual_initrd.raw.xz [Target] Type=regular-file Path=/EFI/Linux PathRelativeTo=boot MatchPattern=foobarOS_@v.efi.extra.d/foobarOS_mvisual.raw Mode=0444 InstancesMax=2
# /usr/lib/sysupdate.d/90-mvisual-addon.transfer [Transfer] Features=mvisual-driver ProtectVersion=%A [Source] Type=url-file Path=https://download.example.com MatchPattern=foobarOS_@v_mvisual_addon.efi.xz [Target] Type=regular-file Path=/EFI/Linux PathRelativeTo=boot MatchPattern=foobarOS_@v.efi.extra.d/foobarOS_mvisual.addon.efi Mode=0444 InstancesMax=2
مثال 3. قابلیتهای متقاطع (Intersecting Features)
فرض کنید که MVISUAL ابزارهای ویژهای را برای کمک به توسعهدهنده توزیع جهت عیبیابی خرابیها در راهانداز انحصاری خود منتشر میکند. بیایید یک انتقال تعریف کنیم:
# /usr/lib/sysupdate.d/50-mvisual-debugger.transfer [Transfer] RequisiteFeatures=devel mvisual-driver ProtectVersion=%A [Source] Type=url-file Path=https://download.example.com MatchPattern=foobarOS_@v_devel.raw.xz [Target] Type=regular-file Path=/var/lib/extensions MatchPattern=foobarOS_@v_devel.raw Mode=0444 InstancesMax=2
این انتقال تنها در صورتی استفاده خواهد شد که هر دو قابلیت "devel" و "mvisual-driver" فعال باشند.
همچنین ببینید (SEE ALSO)
نکات (NOTES)
- 1.
- کاتالوگ AppStream
| systemd 261.2 |