KERNEL-INSTALL(8) kernel-install KERNEL-INSTALL(8)

kernel-install - افزودن و حذف ایمیج‌های هسته و initramfs در پارتیشن بوت

kernel-install [OPTIONS...] add KERNEL-VERSION KERNEL-IMAGE [INITRD-FILE...]

kernel-install [OPTIONS...] add-all

kernel-install [OPTIONS...] remove KERNEL-VERSION

kernel-install [OPTIONS...] inspect [KERNEL-VERSION] [KERNEL-IMAGE] [INITRD-FILE...]

kernel-install [OPTIONS...] list

دستور kernel-install برای نصب و حذف ایمیج‌های هسته و initrd [1] در و از پارتیشن بوت استفاده می‌شود که در اینجا با عنوان $BOOT به آن اشاره شده است. این پارتیشن معمولاً یکی از مسیرهای /boot/، /efi/ یا /boot/efi/ خواهد بود، به ادامه مراجعه کنید.

دستور kernel-install فایل‌های اجرایی (با عنوان «پلاگین») موجود در دایرکتوری /usr/lib/kernel/install.d/ و دایرکتوری محلی مدیریتی /etc/kernel/install.d/ را اجرا می‌کند. تمام فایل‌ها بدون در نظر گرفتن دایرکتوری که در آن قرار دارند، به صورت سراسری مرتب شده و به ترتیب لغوی (lexicographic) اجرا می‌شوند. با این حال، فایل‌های با نام یکسان جایگزین یکدیگر می‌شوند. فایل‌های موجود در /etc/kernel/install.d/ نسبت به فایل‌های با نام یکسان در /usr/lib/kernel/install.d/ اولویت دارند. از این سازوکار می‌توان در صورت نیاز برای بازنویسی و جایگزینی فایل‌های اجرایی ارائه‌شده توسط سیستم با یک فایل محلی استفاده کرد؛ ایجاد یک پیوند نمادین در /etc/kernel/install.d/ هم‌نام با یک فایل اجرایی در /usr/lib/kernel/install.d/ که به /dev/null اشاره کند، آن فایل اجرایی را به طور کامل غیرفعال می‌کند. فایل‌های اجرایی باید دارای پسوند ".install" باشند؛ از سایر پسوندها صرف‌نظر می‌شود.

یک فایل اجرایی قرار داده شده در این دایرکتوری‌ها باید در صورت موفقیت مقدار 0 را برگرداند. همچنین ممکن است مقدار 77 را بازگرداند تا کل عملیات خاتمه یابد (فایل‌های اجرایی که بعداً در ترتیب لغوی قرار دارند نادیده گرفته خواهند شد).

دستورات زیر پشتیبانی می‌شوند:

add [[[KERNEL-VERSION] KERNEL-IMAGE] [INITRD-FILE ...]]

این دستور یک رشته نسخه هسته و یک مسیر به فایل ایمیج هسته را به عنوان آرگومان دریافت می‌کند. اگر آرگومان اول حذف شود، به عنوان یک رشته خالی یا به عنوان "-" مشخص گردد، به طور پیش‌فرض نسخه فعلی هسته در نظر گرفته می‌شود، یعنی همان رشته‌ای که دستور uname -r برمی‌گرداند. اگر آرگومان دوم حذف شود، به عنوان یک رشته خالی یا به عنوان "-" مشخص گردد، مقدار پیش‌فرض آن /usr/lib/modules/KERNEL_VERSION/vmlinuz خواهد بود. به صورت اختیاری، یک یا چند ایمیج initrd نیز ممکن است مشخص شود (توجه داشته باشید که پلاگین‌ها ممکن است ایمیج‌های اضافی نیز تولید کنند).

فایل‌های اجرایی از /usr/lib/kernel/install.d/*.install و /etc/kernel/install.d/*.install (یعنی همان پلاگین‌ها) با آرگومان‌های زیر فراخوانی می‌شوند:

add KERNEL-VERSION $BOOT/ENTRY-TOKEN/KERNEL-VERSION/ KERNEL-IMAGE [INITRD-FILE ...]

آرگومان سوم مستقیماً به مسیری اشاره دارد که ایمیج‌های هسته، ایمیج‌های initrd و سایر منابع برای ورودی‌های نوع اول (#1) UAPI.1 Boot Loader Specification[2] در آن قرار می‌گیرند («دایرکتوری ورودی» یا entry directory). اگر از سایر طرح‌های بارگذار بوت (boot loader) استفاده شود، این پارامتر ممکن است نادیده گرفته شود.

رشته ENTRY-TOKEN معمولاً همان شناسه ماشین (machine ID) است و قرار است نصب محلی روی سیستم را شناسایی کند. برای جزئیات به بخش‌های زیر مراجعه کنید.

دستور kernel-install در صورت فعال بودن، مسیر $BOOT/ENTRY-TOKEN/KERNEL-VERSION را ایجاد می‌کند (متغیر $KERNEL_INSTALL_LAYOUT را ببینید).

سه پلاگین پیش‌فرض در این حالت عملیات زیر را اجرا می‌کنند:

50-depmod.install

این پلاگین دستور depmod(8) را برای KERNEL-VERSION اجرا می‌کند.

90-loaderentry.install

این پلاگین KERNEL-IMAGE را در مسیر $BOOT/ENTRY-TOKEN/KERNEL-VERSION/linux کپی می‌کند. اگر INITRD-FILEها ارائه شده باشند، آن‌ها را نیز در مسیر $BOOT/ENTRY-TOKEN/KERNEL_VERSION/INITRD-FILE کپی می‌کند. همچنین می‌توان از این سازوکار برای قرار دادن میکروکد (microcode) قبل از initrd اصلی استفاده کرد. این پلاگین علاوه بر این، یک ورودی بارگذار بوت بر اساس UAPI.1 Boot Loader Specification[2] (نوع ۱) در $BOOT/loader/entries/ENTRY-TOKEN-KERNEL-VERSION.conf ایجاد می‌کند. عنوان این ورودی پارامتر PRETTY_NAME مشخص‌شده در /etc/os-release یا /usr/lib/os-release (در صورت نبود اولی) است، یا در صورت تنظیم نشدن، "Linux KERNEL-VERSION" خواهد بود.

اگر مقدار $KERNEL_INSTALL_LAYOUT برابر با "bls" نباشد، این پلاگین هیچ کاری انجام نمی‌دهد.

90-uki-copy.install

اگر فایل $KERNEL_INSTALL_STAGING_AREA/uki.efi وجود داشته باشد، این پلاگین آن را در مسیر $BOOT/EFI/Linux/ENTRY-TOKEN-KERNEL-VERSION.efi کپی می‌کند. همچنین، فایل‌های موجود در $KERNEL_INSTALL_STAGING_AREA/uki.efi.extra.d"/ در مسیر $BOOT/EFI/Linux/ENTRY-TOKEN-KERNEL-VERSION.efi.extra.d/ کپی می‌شوند.

اگر فایل $KERNEL_INSTALL_STAGING_AREA/uki.efi وجود نداشته باشد و آرگومان KERNEL-IMAGE دارای پسوند ".efi" باشد، پلاگین ایمیج را در مسیر $BOOT/EFI/Linux/ENTRY-TOKEN-KERNEL-VERSION.efi کپی می‌کند. همچنین، فایل‌های موجود در KERNEL-IMAGE.extra.d/ و $KERNEL_INSTALL_STAGING_AREA/uki.efi.extra.d"/ در مسیر $BOOT/EFI/Linux/ENTRY-TOKEN-KERNEL-VERSION.efi.extra.d/ کپی می‌شوند.

اگر مقدار $KERNEL_INSTALL_LAYOUT برابر با "uki" نباشد، این پلاگین هیچ کاری انجام نمی‌دهد.

افزوده‌شده در نسخه 198.

add-all

این دستور همانند add است (به بالا مراجعه کنید)، اما عملیات را به صورت تکرارشونده برای هر هسته نصب‌شده در /usr/lib/modules/ فراخوانی می‌کند. این عملیات فقط در سیستم‌هایی پشتیبانی می‌شود که ایمیج هسته در مسیر /usr/lib/modules/KERNEL-VERSION/vmlinuz نصب شده باشد.

افزوده‌شده در نسخه 255.

remove KERNEL-VERSION

این دستور رشته نسخه هسته را به عنوان تنها آرگومان خود انتظار دارد.

فایل‌های اجرایی از /usr/lib/kernel/install.d/*.install و /etc/kernel/install.d/*.install (یعنی همان پلاگین‌ها) با آرگومان‌های زیر فراخوانی می‌شوند:

remove KERNEL-VERSION $BOOT/ENTRY-TOKEN/KERNEL-VERSION/

سپس، kernel-install دایرکتوری ورودی $BOOT/ENTRY-TOKEN/KERNEL-VERSION/ و محتویات آن را (در صورت وجود) حذف می‌کند.

سه پلاگین پیش‌فرض در این حالت عملیات زیر را اجرا می‌کنند:

50-depmod.install

پلاگین، فایل‌های تولیدشده توسط depmod برای این هسته را مجدداً حذف می‌کند.

90-loaderentry.install

پلاگین فایل $BOOT/loader/entries/ENTRY-TOKEN-KERNEL-VERSION.conf را حذف می‌کند.

90-uki-copy.install

پلاگین فایل $BOOT/EFI/Linux/ENTRY-TOKEN-KERNEL-VERSION.efi و دایرکتوری $BOOT/EFI/Linux/ENTRY-TOKEN-KERNEL-VERSION.efi.extra.d/ شامل محتویات آن را حذف می‌کند.

افزوده‌شده در نسخه 198.

inspect [[[KERNEL-VERSION] KERNEL-IMAGE] [INITRD-FILE ...]]

همان پارامترهای add را می‌پذیرد.

مسیرها و پارامترهای گوناگون پیکربندی‌شده یا شناسایی‌شده خودکار را نمایش می‌دهد. به طور ویژه مقادیر متغیرهای محیطی مختلف $KERNEL_INSTALL_* فهرست‌شده در زیر را همان‌طور که به پلاگین‌ها ارسال می‌شوند نشان می‌دهد. می‌توان از گزینه --json برای دریافت خروجی این زیردستور در قالب یک شیء JSON استفاده کرد.

افزوده‌شده در نسخه 251.

list

هسته‌های مختلف نصب‌شده را نشان می‌دهد. این دستور زیردایرکتوری‌های /usr/lib/modules/ را شمارش کرده و نشان می‌دهد آیا ایمیج هسته در آنجا نصب شده است یا خیر.

افزوده‌شده در نسخه 255.

installkernel [OPTIONS...] VERSION VMLINUZ [MAP] [INSTALLATION-DIR]

هنگامی که به صورت installkernel فراخوانی شود، این برنامه آرگومان‌ها را همان‌طور که توسط دستور make install سامانه ساخت هسته مشخص شده است می‌پذیرد. پارامترهای VERSION و VMLINUZ نسخه هسته و باینری هسته را مشخص می‌کنند. دو پارامتر دیگر (MAP و INSTALLATION-DIR) در حال حاضر نادیده گرفته می‌شوند.

پارتیشنی که هسته‌ها و قطعه‌کدهای UAPI.1 Boot Loader Specification[2] در آن قرار دارند، $BOOT نامیده می‌شود. دستور kernel-install موقعیت این پارتیشن را با بررسی به ترتیب مسیرهای /efi/، /boot/ و /boot/efi/ تعیین می‌کند. اولین مکانی که در آن $BOOT/loader/entries/ یا $BOOT/ENTRY-TOKEN/ وجود داشته باشد استفاده می‌شود.

گزینه‌های زیر پشتیبانی می‌شوند:

--esp-path=

مسیر به پارتیشن سیستمی EFI (موسوم به ESP). اگر مشخص نشود، مسیرهای /efi/، /boot/ و /boot/efi/ به ترتیب بررسی می‌شوند. توصیه می‌شود در صورت امکان ESP در مسیر /efi/ سوار (mount) شود.

--boot-path=

مسیر به پارتیشن توسعه‌یافته بارگذار بوت (Extended Boot Loader partition)، همان‌طور که در UAPI.1 Boot Loader Specification[2] تعریف شده است. اگر مشخص نشود، مسیر /boot/ بررسی می‌شود. توصیه می‌شود در صورت امکان پارتیشن توسعه‌یافته بارگذار بوت در مسیر /boot/ سوار شود.

--make-entry-directory=yes|no|auto

ایجاد و حذف دایرکتوری ورودی نوع اول (#1) بر اساس UAPI.1 Boot Loader Specification[2] را روی فایل‌سیستم حاوی منابعی مانند ایمیج‌های هسته و initrd به ترتیب در طول add و remove کنترل می‌کند. نام این دایرکتوری بر اساس توکن ورودی (entry token) تعیین شده و بلافاصله در زیر دایرکتوری ریشه بوت قرار می‌گیرد. در حالت "auto"، این دایرکتوری تنها زمانی ایجاد یا حذف می‌شود که طرح‌بندی نصب برابر با "bls" باشد. مقدار پیش‌فرض "auto" است.

افزوده‌شده در نسخه 254.

--entry-type=type1|type2|all

نوع ورودی‌های پردازش‌شده توسط دستور را کنترل می‌کند. این گزینه معمولاً زمانی مفید است که چندین نوع ورودی بوت با نسخه یکسان هسته نصب شده باشند و فقط یکی از آن‌ها باید حذف شود. زمانی که "type1" یا "type2" مشخص شود، هر پلاگین با متغیر محیطی $KERNEL_INSTALL_BOOT_ENTRY_TYPE تنظیم‌شده روی مقدار مشخص‌شده فراخوانی می‌شود. زمانی که "all" مشخص شود، این متغیر محیطی تنظیم نخواهد شد. مقدار پیش‌فرض "all" است.

افزوده‌شده در نسخه 258.

--entry-token=

نحوه نام‌گذاری و شناسایی ورودی‌های بارگذار بوت را برای عملیات نصب یا حذف این هسته کنترل می‌کند. یکی از مقادیر "auto"، "machine-id"، "os-id"، "os-image-id" یا یک رشته دلخواه با پیشوند "literal:" را به عنوان آرگومان می‌پذیرد.

اگر روی machine-id تنظیم شود، ورودی‌ها بر اساس شناسه ماشین سیستم در حال اجرا نام‌گذاری می‌شوند (به عنوان مثال "b0e793a9baf14b5fa13ecbe84ff637ac"). برای جزئیات بیشتر درباره مفهوم و فایل شناسه ماشین، machine-id(5) را ببینید.

اگر روی os-id تنظیم شود، ورودی‌ها بر اساس شناسه سیستم‌عامل سیستم در حال اجرا نام‌گذاری می‌شوند، یعنی فیلد ID= در os-release(5) (به عنوان مثال "fedora"). به طور مشابه، اگر روی os-image-id تنظیم شود، ورودی‌ها بر اساس شناسه ایمیج سیستم‌عامل در حال اجرا نام‌گذاری می‌شوند، یعنی فیلد IMAGE_ID= در os-release (به عنوان مثال "vendorx-cashier-system").

اگر روی auto (پیش‌فرض) تنظیم شود، فایل /etc/kernel/entry-token (یا $KERNEL_INSTALL_CONF_ROOT/entry-token) در صورت وجود خوانده شده و مقدار ذخیره‌شده در آن استفاده می‌شود. در غیر این صورت، اگر شناسه ماشین محلی مقداردهی شده باشد، از آن استفاده می‌شود. در غیر این صورت، مقدار IMAGE_ID= از os-release در صورت تنظیم بودن استفاده خواهد شد. در غیر این صورت، مقدار ID= از os-release در صورت تنظیم بودن استفاده خواهد شد. در غیر این صورت، یک شناسه ماشین تصادفی ایجاد شده و استفاده می‌شود.

استفاده از شناسه ماشین برای نام‌گذاری ورودی‌ها عموماً ارجحیت دارد، با این حال مواردی وجود دارد که استفاده از سایر شناسه‌ها گزینه بهتری است. به طور مشخص: در صورتی که داده‌های هویتی حاصل از شناسه ماشین نباید در پارتیشن (رمزنگاری‌نشده) $BOOT_ROOT ذخیره شوند، یا در صورتی که شناسه باید در اولین بوت ایجاد شود و هنگام آماده‌سازی ورودی‌ها هنوز مشخص نیست. توجه داشته باشید که استفاده از شناسه ماشین این مزیت را دارد که چندین نصب موازی از یک سیستم‌عامل یکسان می‌توانند روی یک رسانه مشترک همزیستی داشته باشند و ورودی‌های بارگذار بوت خود را به طور مستقل به‌روزرسانی کنند. هنگام استفاده از شناسه‌ای دیگر (مانند شناسه سیستم‌عامل یا شناسه ایمیج سیستم‌عامل)، نصب‌های موازی از سیستم‌عامل یکسان تلاش خواهند کرد تا از همان نام ورودی استفاده کنند. برای پشتیبانی از نصب‌های موازی، برنامه نصب (installer) هنگام افزودن نصب دوم باید از توکن ورودی متفاوتی استفاده کند.

افزوده‌شده در نسخه 254.

-v, --verbose

خروجی اطلاعات اضافی درباره عملیات در حال انجام را چاپ می‌کند.

افزوده‌شده در نسخه 242.

--root=root

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

افزوده‌شده در نسخه 255.

--image=image

یک مسیر به یک فایل ایمیج دیسک یا گره دستگاه بلاکی را می‌پذیرد. در صورت تعیین شدن، تمامی عملیات روی فایل‌سیستم موجود در ایمیج دیسک مشخص‌شده اعمال می‌شوند. این گزینه شبیه به --root= است، اما روی فایل‌سیستم‌های ذخیره‌شده در ایمیج‌های دیسک یا دستگاه‌های بلاکی عمل می‌کند. ایمیج دیسک یا باید صرفاً شامل یک فایل‌سیستم باشد یا مجموعه‌ای از فایل‌سیستم‌ها در جدول پارتیشن GPT بر اساس UAPI.2 Discoverable Partitions Specification[3]. برای اطلاعات بیشتر در مورد ایمیج‌های دیسک پشتیبانی‌شده، سوییچ هم‌نام در systemd-nspawn(1) را ببینید.

افزوده‌شده در نسخه 255.

-h, --help

متن راهنمای کوتاهی را نمایش داده و خارج می‌شود.

--version

اطلاعات کوتاه نسخه را چاپ کرده و خارج می‌شود.

--no-pager

خروجی را به یک صفحه‌بند (pager) هدایت نمی‌کند.

--json=MODE

خروجی را در قالب JSON نمایش می‌دهد. یکی از مقادیر "short" (برای کوتاه‌ترین خروجی ممکن بدون فواصل اضافی یا شکست خط)، "pretty" (برای نسخه خوانا از همان خروجی همراه با تورفتگی و شکست خط) یا "off" (برای خاموش کردن خروجی JSON، که حالت پیش‌فرض است) را می‌پذیرد.

--image-policy=policy

یک رشته خط‌مشی ایمیج را به عنوان آرگومان می‌پذیرد، مطابق با systemd.image-policy(7). این خط‌مشی هنگام کار با ایمیج دیسک مشخص‌شده از طریق --image= اعمال می‌شود، به بالا مراجعه کنید. در صورت مشخص نشدن، پیش‌فرض خط‌مشی "*" است، یعنی تمام فایل‌سیستم‌های شناخته‌شده در ایمیج استفاده می‌شوند.

--no-legend

راهنمای علائم (legend) را چاپ نمی‌کند، یعنی هدرهای ستون‌ها و پانوشت شامل راهنمایی‌ها نمایش داده نمی‌شوند.

اگر از گزینه --verbose استفاده شود، متغیر $KERNEL_INSTALL_VERBOSE=1 برای پلاگین‌ها صادر (export) خواهد شد. در این حالت پلاگین‌ها ممکن است گزارش‌های لاگ بیشتری ثبت کنند.

متغیر $KERNEL_INSTALL_IMAGE_TYPE=uki|pe|unknown برای پلاگین‌ها تنظیم می‌شود تا نوع ایمیج هسته را مشخص کند.

uki

ایمیج یکپارچه هسته (Unified Kernel Image).

افزوده‌شده در نسخه 254.

pe

باینری نوع PE.

افزوده‌شده در نسخه 254.

unknown

نوع نامشخص.

افزوده‌شده در نسخه 254.

متغیر $KERNEL_INSTALL_MACHINE_ID برای پلاگین‌ها روی شناسه ماشین مورد نظر تنظیم می‌شود. این شناسه همیشه یک شناسه ۱۲۸ بیتی است. به طور معمول از /etc/machine-id خوانده می‌شود، اما می‌تواند از طریق $MACHINE_ID نیز بازنویسی شود (به بخش زیر مراجعه کنید). اگر از طریق این روش‌ها تعیین نشود، یک مقدار پشتیبان توسط kernel-install ایجاد شده و تنها برای همان یک بار فراخوانی استفاده می‌شود.

متغیر $KERNEL_INSTALL_ENTRY_TOKEN برای پلاگین‌ها روی «توکن» ورودی مورد نظر تنظیم می‌شود. این مقداری هویتی است که برای شناسایی نصب محلی استفاده خواهد شد و اغلب همان شناسه ماشین است، یعنی معادل با $KERNEL_INSTALL_MACHINE_ID، اما می‌تواند نوع دیگری از شناسه نیز باشد، به عنوان مثال یک رشته ثابت یا مقادیر ID= و IMAGE_ID= از /etc/os-release. رشته ارائه‌شده در اینجا برای نام‌گذاری ورودی‌های مشخصات بارگذار بوت (Boot Loader Specification) یا دایرکتوری‌هایی که ایمیج هسته و ایمیج‌های دیسک رم اولیه (initial RAM disk) در آن‌ها قرار می‌گیرند، استفاده می‌شود.

توجه داشته باشید اگرچه $KERNEL_INSTALL_ENTRY_TOKEN و $KERNEL_INSTALL_MACHINE_ID اغلب روی مقادیر یکسان تنظیم می‌شوند، دومی تضمین شده است که یک شناسه معتبر ۳۲ کاراکتری در قالب هگزادسیمال حروف کوچک باشد، در حالی که اولی می‌تواند هر رشته کوتاهی باشد. توکن ورودی مورد استفاده در صورت وجود از /etc/kernel/entry-token خوانده می‌شود. در غیر این صورت، چند نامزد احتمالی در زیر مسیر $BOOT برای دایرکتوری‌های ورودی نوع اول مشخصات بارگذار بوت بررسی می‌شوند و در صورت یافت شدن، توکن ورودی از آن استخراج می‌شود. اگر این کار موفقیت‌آمیز نباشد، مقدار $KERNEL_INSTALL_MACHINE_ID به عنوان مقدار پشتیبان (fallback) استفاده خواهد شد.

متغیر $KERNEL_INSTALL_BOOT_ROOT برای پلاگین‌ها روی مسیر مطلق دایرکتوری ریشه (معمولاً نقطه اتصال یا mount point) ساختاری که ورودی‌های بارگذار بوت، ایمیج‌های هسته و منابع مرتبط باید در آن قرار گیرند تنظیم می‌شود. این مسیر معمولاً همان مسیری است که پارتیشن XBOOTLDR یا ESP (پارتیشن سیستمی EFI) در آن سوار شده‌اند، و از نظر مفهومی نیز با نام $BOOT شناخته می‌شود. می‌توان آن را با تنظیم $BOOT_ROOT بازنویسی کرد (به بخش زیر مراجعه کنید).

متغیر $KERNEL_INSTALL_LAYOUT=auto|bls|uki|other|... برای پلاگین‌ها تنظیم می‌شود تا طرح‌بندی نصب را مشخص کند. نام‌های طرح‌بندی اضافی را می‌توان بر اساس توافق تعریف کرد. اگر پلاگینی از طرح‌بندی خاصی استفاده می‌کند، توصیه می‌شود نام طرح‌بندی اختصاصی خود را اعلان کرده و در زمان نصب اولیه، مقدار layout= را در install.conf پیکربندی کند. مقادیر زیر در حال حاضر پشتیبانی می‌شوند:

bls

طرح‌بندی نوع اول (#1) استاندارد UAPI.1 Boot Loader Specification[2]، سازگار با systemd-boot(7): ورودی‌ها در $BOOT/loader/entries/ENTRY-TOKEN-KERNEL-VERSION[+TRIES].conf و هسته و initrdها در زیر مسیر $BOOT/ENTRY-TOKEN/KERNEL-VERSION/ قرار می‌گیرند.

پیاده‌سازی‌شده توسط 90-loaderentry.install.

افزوده‌شده در نسخه 250.

uki

طرح‌بندی نوع دوم (#2) استاندارد UAPI.1 Boot Loader Specification[2]، سازگار با systemd-boot(7): ایمیج‌های یکپارچه هسته در زیر مسیر $BOOT/EFI/Linux به صورت $BOOT/EFI/Linux/ENTRY-TOKEN-KERNEL-VERSION[+TRIES].efi.

پیاده‌سازی‌شده توسط 90-uki-copy.install.

افزوده‌شده در نسخه 253.

other

طرح‌بندی‌های دیگر که به صورت بومی توسط kernel-install پشتیبانی نمی‌شوند.

افزوده‌شده در نسخه 250.

auto

طرح‌بندی را به صورت خودکار انتخاب می‌کند. اگر هسته از نوع UKI باشد، طرح‌بندی روی uki تنظیم می‌شود. اگر نباشد، در صورتی که فایل $BOOT/loader/entries.srel با محتوای "type1" یا مسیر $BOOT/ENTRY-TOKEN وجود داشته باشد، به طور پیش‌فرض روی bls قرار می‌گیرد؛ در غیر این صورت روی other تنظیم می‌شود.

خالی گذاشتن مقدار طرح‌بندی اثر یکسانی دارد. این حالت پیش‌فرض است.

افزوده‌شده در نسخه 254.

متغیرهای $KERNEL_INSTALL_INITRD_GENERATOR و $KERNEL_INSTALL_UKI_GENERATOR برای پلاگین‌ها تنظیم می‌شوند تا تولیدکننده initrd و/یا UKI را انتخاب کنند. این مقدار می‌تواند به صورت initrd_generator= و uki_generator= در install.conf پیکربندی شود، به ادامه مراجعه کنید.

متغیر $KERNEL_INSTALL_STAGING_AREA برای پلاگین‌ها روی مسیری به یک دایرکتوری تنظیم می‌شود. پلاگین‌ها می‌توانند فایل‌های خود را در این دایرکتوری قرار دهند، و این فایل‌ها بر اساس نام و پسوند فایل به عنوان بخشی از ورودی بارگذار بوت نصب خواهند شد: فایل‌هایی با نام initrd* به عنوان INITRD-FILEها نصب می‌شوند، و فایل‌هایی با نام microcode* قبل از INITRD-FILEها اضافه می‌شوند.

متغیر $KERNEL_INSTALL_CONF_ROOT می‌تواند برای تغییر مکان فایل‌های پیکربندی خوانده‌شده توسط kernel-install تنظیم شود. در صورت تنظیم، فایل‌های install.conf، entry-token و سایر فایل‌ها فقط از این دایرکتوری خوانده خواهند شد. توجه داشته باشید که این مسیر نسبت به سیستم میزبان است، و به ویژه پیوندهای نمادین در این دایرکتوری نسبت به میزبان تحلیل می‌شوند، حتی اگر از --root=root استفاده شده باشد. این بدان معناست که در صورت وجود پیوندهای نمادین، عموماً درست نیست که از این متغیر برای تعیین یک دایرکتوری در زیر مسیر root استفاده شود.

متغیر $KERNEL_INSTALL_PLUGINS می‌تواند برای لغو و بازنویسی فهرست پلاگین‌های اجراشده توسط kernel-install تنظیم شود. آرگومان آن فهرستی از مسیرها است که با فاصله (whitespace) جدا شده‌اند. می‌توان از "KERNEL_INSTALL_PLUGINS=:" برای جلوگیری از اجرای تمامی پلاگین‌ها استفاده کرد.

متغیر $MACHINE_ID می‌تواند برای kernel-install تنظیم شود تا شناسه ماشین $KERNEL_INSTALL_MACHINE_ID را بازنویسی کند.

متغیر $BOOT_ROOT می‌تواند برای kernel-install تنظیم شود تا مکان نصب ورودی‌های بوت یعنی $KERNEL_INSTALL_BOOT_ROOT را بازنویسی کند.

دو متغیر آخر را می‌توان در فایل install.conf نیز تنظیم کرد. متغیرهای تنظیم‌شده در محیط بر مقادیر مشخص‌شده در فایل پیکربندی اولویت دارند.

اگر تمامی فایل‌های اجرایی مقدار 0 یا 77 را برگردانند، مقدار 0 برگردانده می‌شود؛ در غیر این صورت یک کد خطای غیر صفر برگردانده خواهد شد.

/etc/kernel/install.d/*.install, /usr/lib/kernel/install.d/*.install

فایل‌های پیکربندی افزونه‌ای (Drop-in) که توسط kernel-install اجرا می‌شوند.

افزوده‌شده در نسخه 198.

/etc/kernel/cmdline, /usr/lib/kernel/cmdline, /proc/cmdline

خط فرمان هسته (kernel command line) مورد استفاده را مشخص می‌کند. اولین فایلی که یافت شود استفاده خواهد شد. خطوطی که با نویسه "#" شروع می‌شوند نادیده گرفته می‌شوند. هنگام اجرا در یک کانتینر، فایل /proc/cmdline نادیده گرفته می‌شود. متغیر $KERNEL_INSTALL_CONF_ROOT می‌تواند برای تغییر مسیر جستجو استفاده شود؛ برای جزئیات به بخش‌های زیر مراجعه کنید.

افزوده‌شده در نسخه 198.

/etc/kernel/devicetree, /usr/lib/kernel/devicetree

مسیر نسبی به فایلی که شامل باینری درخت دستگاه (device tree blob یا dtb) است و باید همراه با هسته نصب شده و در زمان بوت استفاده شود را مشخص می‌کند. اولین فایلی که یافت شود استفاده خواهد شد. متغیر $KERNEL_INSTALL_CONF_ROOT می‌تواند برای تغییر مسیر جستجو استفاده شود؛ برای جزئیات به بخش‌های زیر مراجعه کنید.

فایل devicetree شامل یک مسیر است و این مسیر مکانی را نسبت به درخت نصب هسته مشخص می‌کند. مجموعه‌ای از مکان‌ها بررسی می‌شوند، به ویژه از جمله /usr/lib/modules/KERNEL_VERSION/dtb/ که مکان پیشنهادی برای قرار دادن فایل‌های dtb است. به عنوان مثال، با قرار دادن "broadcom/bcm2711-rpi-4-b.dtb" در فایل devicetree، بلاب درخت دستگاه برای Raspberry Pi 4 Model B نصب خواهد شد و فایل واقعی /usr/lib/modules/KERNEL_VERSION/dtb/broadcom/bcm2711-rpi-4-b.dtb خواهد بود.

افزوده‌شده در نسخه 255.

/etc/kernel/tries

توسط 90-loaderentry.install و 90-uki-copy.install خوانده می‌شود. در صورت وجود این فایل، یک مقدار عددی از آن خوانده شده و نام‌گذاری فایل ورودی تولیدشده یا UKI تغییر می‌یابد تا به ترتیب شامل $BOOT/loader/entries/ENTRY-TOKEN-KERNEL-VERSION+TRIES.conf یا $BOOT/EFI/Linux/ENTRY-TOKEN-KERNEL-VERSION+TRIES.efi باشد. این سازوکار برای بارگذارهای بوتی مانند systemd-boot(7) که شمارش دفعات تلاش برای بوت را از طریق شمارنده تعبیه‌شده در نام فایل ورودی پیاده‌سازی می‌کنند، بسیار کاربردی است. متغیر $KERNEL_INSTALL_CONF_ROOT می‌تواند برای تغییر مسیر جستجو استفاده شود؛ برای جزئیات به بخش‌های زیر مراجعه کنید.

افزوده‌شده در نسخه 240.

/etc/kernel/entry-token

در صورت وجود این فایل، خوانده شده و به عنوان «توکن ورودی» برای این سیستم استفاده می‌شود، یعنی برای نام‌گذاری ورودی‌های مشخصات بارگذار بوت به کار می‌رود. برای جزئیات بیشتر $KERNEL_INSTALL_ENTRY_TOKEN در بالا را ببینید. متغیر $KERNEL_INSTALL_CONF_ROOT می‌تواند برای تغییر مسیر جستجو استفاده شود؛ برای جزئیات به بخش‌های زیر مراجعه کنید.

افزوده‌شده در نسخه 251.

/etc/machine-id

محتوای این فایل شناسه شناسایی ماشین MACHINE-ID را مشخص می‌کند.

افزوده‌شده در نسخه 198.

/etc/os-release, /usr/lib/os-release

توسط 90-loaderentry.install خوانده می‌شود. در صورت در دسترس بودن، PRETTY_NAME= از این فایل‌ها خوانده شده و به عنوان عنوان ورودی منوی بوت استفاده می‌شود. در غیر این صورت، "Linux KERNEL-VERSION" استفاده خواهد شد.

افزوده‌شده در نسخه 198.

/etc/kernel/install.conf, /run/kernel/install.conf, /usr/local/lib/kernel/install.conf, /usr/lib/kernel/install.conf, /etc/kernel/install.conf.d/*.conf, /run/kernel/install.conf.d/*.conf, /usr/local/lib/kernel/install.conf.d/*.conf, /usr/lib/kernel/install.conf.d/*.conf

فایل پیکربندی حاوی گزینه‌ها برای kernel-install، به عنوان مجموعه‌ای از انتساب‌های KEY=VALUE، سازگار با نحو شل، با پیروی از همان قوانینی که در os-release(5) توصیف شده است. اولین فایلی که یافت شود استفاده خواهد شد. متغیر $KERNEL_INSTALL_CONF_ROOT می‌تواند برای تغییر مسیر جستجو استفاده شود؛ برای جزئیات به بخش‌های زیر مراجعه کنید. همچنین فایل‌های تکمیلی (Drop-in) را می‌توان برای گسترش پیکربندی و بازنویسی مقادیر استفاده کرد، systemd.unit(5) را ببینید.

در حال حاضر کلیدهای زیر پشتیبانی می‌شوند: MACHINE_ID=، BOOT_ROOT=، layout=، initrd_generator=، uki_generator=. برای جزئیات بیشتر بخش متغیرهای محیطی در بالا را ببینید.

افزوده‌شده در نسخه 250.

/etc/kernel/uki.conf

فایل پیکربندی با سبک Ini برای ukify(1) که تنها زمانی اعمال می‌شود که مقدار $KERNEL_INSTALL_LAYOUT یا layout= در install.conf روی uki تنظیم شده باشد و متغیر $KERNEL_INSTALL_UKI_GENERATOR یا uki_generator= در install.conf روی ukify تنظیم شده باشد یا تنظیم نشده باشد. متغیر $KERNEL_INSTALL_CONF_ROOT می‌تواند برای تغییر مسیر جستجو استفاده شود؛ برای جزئیات به بخش‌های زیر مراجعه کنید.

افزوده‌شده در نسخه 255.

/usr/lib/modules/KERNEL-VERSION/

مکان ماژول‌های هسته نصب‌شده و سایر منابع مرتبط با هسته. برای هر هسته نصب‌شده به صورت محلی، یک دایرکتوری با نام نسخه هسته (uname -r) نگهداری می‌شود.

افزوده‌شده در نسخه 255.

/usr/lib/modules/KERNEL-VERSION/vmlinuz

مکان ایمیج‌های هسته نصب‌شده. این مکان پیشنهادی برای مدیر بسته‌های سیستم‌عامل جهت نصب ایمیج‌های هسته است (در صورت لزوم)، که دستور kernel-install add سپس آن را در پارتیشن بوت نهایی کپی می‌کند.

افزوده‌شده در نسخه 255.

در موارد مختلف فهرست‌شده در بالا، اگر متغیر محیطی $KERNEL_INSTALL_CONF_ROOT تنظیم شده باشد، مسیر جستجو را بازنویسی می‌کند. فایل‌ها تنها از دایرکتوری مشخص‌شده توسط این متغیر محیطی بارگذاری خواهند شد. هنگامی که این متغیر تنظیم نشده باشد، مسیرهای فهرست‌شده به نوبت بررسی می‌شوند و اولین فایلی که وجود داشته باشد استفاده می‌شود.

machine-id(5), os-release(5), depmod(8), systemd-boot(7), ukify(1), UAPI.1 Boot Loader Specification[2]

1.
امروزه در واقع به جای "initrd" از آرشیوهای CPIO با عنوان "initramfs" استفاده می‌شود. برای توضیحات بیشتر، bootup(7) را ببینید.
2.
مشخصات بارگذار بوت UAPI.1 (UAPI.1 Boot Loader Specification)
3.
مشخصات پارتیشن‌های قابل کشف UAPI.2 (UAPI.2 Discoverable Partitions Specification)
systemd 261.2