SYSTEMD-IMPORT-GENERATOR(8) systemd-import-generator SYSTEMD-IMPORT-GENERATOR(8)

systemd-import-generator - تولیدکننده‌ای برای دانلود خودکار ایمیج‌های دیسک در زمان بوت

/usr/lib/systemd/system-generators/systemd-import-generator

systemd-import-generator ممکن است برای دانلود خودکار ایمیج‌های دیسک (tarballها یا DDIها) از طریق systemd-importd.service(8) در هنگام بوت، بر اساس پارامترهای خط فرمان هسته یا از طریق اعتبارنامه‌های سیستم استفاده شود. این برای استقرار خودکار یک ایمیج systemd-confext(8)، systemd-sysext(8)، systemd-nspawn(1)/ systemd-vmspawn(1) یا systemd-portabled.service(8) در زمان بوت مفید است. این قابلیت عملکردی معادل با importctl(1) را فراهم می‌آورد، اما از طریق خط فرمان هسته و اعتبارنامه‌های سیستم در دسترس است.

systemd-import-generator از systemd.generator(7) پیروی و آن را پیاده‌سازی می‌کند.

systemd-import-generator پارامترهای kernel-command-line(7) زیر را درک می‌کند:

systemd.pull=

این گزینه یک سه‌تایی جداشده با دو نقطه (:) شامل رشته گزینه‌ها، نام محلی ایمیج مقصد و نشانی اینترنتی (URL) راه دور را می‌پذیرد. نام محلی ایمیج مقصد می‌تواند به صورت یک رشته خالی مشخص شود، که در این حالت نام از URL راه دور مشخص‌شده مشتق می‌شود. URL راه دور باید از طرح‌واره‌های "http://"، "https://"، "file://" استفاده کند. رشته گزینه خود یک فهرست جداشده با ویرگول از گزینه‌ها است:

rw, ro

کنترل می‌کند که آیا ایمیج محلی به عنوان فقط‌خواندنی علامت‌گذاری شود یا خیر. در صورت مشخص نشدن، حالت فقط‌خواندنی به‌طور پیش‌فرض خاموش است.

در نسخه 257 اضافه شد.

verify=

کنترل می‌کند که آیا دانلود پیش از نصب در محل، از نظر رمزنگاری اعتبارسنجی شود یا خیر. یکی از مقادیر "no"، "checksum"، یا "signature" (مقدار پیش‌فرض در صورت مشخص نشدن) را می‌پذیرد. برای جزئیات، به --verify= در importctl(1) مراجعه کنید.

در نسخه 257 اضافه شد.

sysext, confext, machine, portable

رده (class) ایمیج برای دانلود و در نتیجه دایرکتوری مقصد نهایی برای ایمیج را کنترل می‌کند؛ بسته به این انتخاب دایرکتوری مقصد /var/lib/extensions/، /var/lib/confexts/، /var/lib/machines/ یا /var/lib/portables/ انتخاب می‌شود.

مشخص کردن دقیقاً یکی از این گزینه‌ها الزامی است.

در نسخه 257 اضافه شد.

tar, raw

نوع منبع برای دانلود را کنترل می‌کند، یعنی یک tarball (احتمالاً فشرده‌شده) که باید در یک درخت سیستم‌فایل باز شود، یا یک ایمیج خام دیسک (DDI - احتمالاً فشرده‌شده).

مشخص کردن دقیقاً یکی از این گزینه‌ها الزامی است.

در نسخه 257 اضافه شد.

blockdev

اگر این گزینه مشخص شود، ایمیج دانلودشده پس از اتمام به یک دستگاه بلوکی لوپ‌بک (از طریق systemd-loop@.service) متصل می‌شود. این امکان بوت شدن از ایمیج‌های دیسک دانلودشده را فراهم می‌سازد. این ویژگی فقط برای ایمیج‌های دیسک "raw" پشتیبانی می‌شود.

توجه داشته باشید هنگامی که این گزینه با هدف سوار کردن یک ایمیج دیسک منطبق با UAPI.3 Discoverable Disk Image Specification[1] به عنوان سیستم‌فایل ریشه استفاده می‌شود، و منطق کشف خودکار پارتیشن GPT که توسط systemd-gpt-auto-generator(8) پیاده‌سازی شده است باید آن را پردازش کند، ضروری است که "rootdisk" به عنوان نام محلی برای واردسازی مشخص شود. علاوه بر این، "root=gpt-auto" باید به‌طور صریح در خط فرمان هسته مشخص شود. همچنین، پیشوند "rd." را به گزینه خط فرمان "systemd.pull=" اضافه کنید تا اطمینان حاصل شود که از قبل در دیسک رم اولیه (initrd) اجرا می‌شود؛ همچنین به زیر مراجعه کنید.

در نسخه 258 اضافه شد.

bootorigin

اگر این گزینه مشخص شود، به جای URL می‌توان یک نام فایل ساده را مشخص کرد. اگر سیستم از طریق بوت شبکه UEFI HTTP بوت شود، آخرین جزء از URL مبدا بوت شبکه با این نام فایل جایگزین شده و به عنوان منبع دانلود استفاده می‌شود. بنابراین این ویژگی امکان مشتق‌گیری خودکار URLهای ایمیج‌های دیسک از URL بوت اصلی استفاده‌شده برای فراخوانی هسته یا بارگذار بوت را فراهم می‌کند.

اگر این گزینه استفاده شود و سیستم در واقع از طریق بوت شبکه UEFI HTTP بوت نشده باشد، از دانلود به آرامی صرف‌نظر می‌شود. یا به عبارت دیگر، بدون تغییرات دیگر می‌توان یک ایمیج initrd ایجاد کرد که در صورت موجود بودن از دیسک محلی بوت شود، یا در صورت استفاده از طریق بوت شبکه، از ایمیج دیسک دانلودشده بوت گردد.

در نسخه 258 اضافه شد.

runtime=

یک آرگومان دودویی (boolean) می‌پذیرد. اگر روی true تنظیم شود، ایمیج در زیر سلسله‌مراتب /run/ دانلود می‌شود؛ اگر روی false تنظیم شود، در زیر سلسله‌مراتب /var/lib/ دانلود خواهد شد. اگر مشخص نشود، مقدار پیش‌فرض در دیسک رم اولیه (initrd) برابر با true و در سیستم میزبان برابر با false است.

در نسخه 258 اضافه شد.

در نسخه 257 اضافه شد.

systemd.pull.success_action=, systemd.pull.failure_action=

کنترل می‌کند که آیا پس از اتمام موفقیت‌آمیز یا ناموفق دانلود، عملی مانند راه‌اندازی مجدد (reboot)، خاموش کردن (power-off) و موارد مشابه اجرا شود یا خیر. برای جزئیات درباره اقدامات موجود، به SuccessAction=/FailureAction= در systemd.unit(5) مراجعه کنید. در صورت مشخص نشدن، هیچ اقدامی صورت نمی‌گیرد و سیستم به بوت عادی خود ادامه می‌دهد.

در نسخه 257 اضافه شد.

این گزینه‌های خط فرمان هسته تنها توسط سیستم میزبان تفسیر می‌شوند. اگر این گزینه‌ها با پیشوند "rd." مشخص شوند، در عوض توسط دیسک رم اولیه (initrd) تفسیر خواهند شد.

systemd-import-generator از منطق اعتبارنامه‌های سیستم پشتیبانی می‌کند. هنگام ارسال، اعتبارنامه‌های زیر استفاده می‌شوند:

import.pull

این اعتبارنامه باید یک فایل متنی باشد که هر خط آن به یک عملیات دانلود اشاره می‌کند. هر خط باید از همان قالبی پیروی کند که برای مقدار گزینه خط فرمان هسته systemd.pull= در بالا توضیح داده شد.

در نسخه 257 اضافه شد.

مثال ۱. دانلود پسوند پیکربندی

systemd.pull=raw,confext::https://example.com/myconfext.raw.gz

با یک گزینه خط فرمان هسته مانند بالا، یک DDI پسوند پیکربندی به‌طور خودکار در هنگام بوت از URL مشخص‌شده دانلود شده، از نظر رمزنگاری اعتبارسنجی می‌شود، از حالت فشرده خارج شده و نصب می‌گردد.

مثال ۲. دانلود پسوند سیستم (بدون اعتبارسنجی)

systemd.pull=tar,sysext,verify=no::https://example.com/mysysext.tar.gz

با یک گزینه خط فرمان هسته مانند بالا، یک tarball پسوند سیستم به‌طور خودکار در هنگام بوت از URL مشخص‌شده دانلود شده، از حالت فشرده خارج و نصب می‌شود – بدون هیچ‌گونه اعتبارسنجی رمزنگاری‌شده. این برای اهداف توسعه در ماشین‌های مجازی و کانتینرها مفید است. هشدار: هرگز سیستمی را با اعتبارسنجی غیرفعال‌شده به این صورت مستقر نکنید!

مثال ۳. دانلود ایمیج دیسک ریشه (خام) در حافظه، جهت بوت شدن در آن

rd.systemd.pull=raw,machine,verify=no,blockdev:image:https://example.com/image.raw.xz root=/dev/disk/by-loop-ref/image.raw-part2

این دستور ایمیج دیسک مشخص‌شده را دانلود کرده، آن را به‌صورت محلی تحت نام "image" ذخیره می‌کند، و پس از اتمام آن را به یک دستگاه بلوکی لوپ‌بک متصل می‌سازد. سپس از پارتیشن دوم موجود در ایمیج بوت می‌شود.

مثال ۴. بوت شدن در ایمیج دیسک (خام)، با URL مشتق‌شده از بوت شبکه UEFI HTTP

rd.systemd.pull=raw,machine,verify=no,blockdev,bootorigin:rootdisk:image.raw.xz root=gpt-auto

این مثال شبیه به مثال قبلی است، اما این بار URL منبع به‌طور خودکار از URL بوت شبکه UEFI HTTP مشتق می‌شود. برای نمونه، اگر یک UKI از نشانی اینترنتی "http://example.com/image.efi" بوت شود، این امر منجر به دانلود یک دیسک ریشه از "http://example.com/image.raw.xz" می‌گردد. علاوه بر این، این حالت از منطق systemd-gpt-auto-generator(8) برای سوار کردن سیستم‌فایل ریشه از ایمیج دیسک استفاده می‌کند.

مثال ۵. بوت شدن در ایمیج دیسک (tar)، با URL مشتق‌شده از بوت شبکه UEFI HTTP

rd.systemd.pull=tar,machine,verify=no,bootorigin:root:image.tar.xz root=bind:/run/machines/root

این مثال شبیه به مثال قبلی است، اما به جای یک ایمیج دیسک خام (یعنی مبتنی بر دستگاه بلوکی)، سیستم به یک tarball بوت می‌شود که از سرور شبکه مبدا UEFI دانلود شده است.

systemd(1), systemd-importd.service(8), kernel-command-line(7), systemd.system-credentials(7), importctl(1), systemd-loop@.service(8), systemd-gpt-auto-generator(8)

1.
UAPI.3 Discoverable Disk Image Specification
systemd 261.2