LOADER.CONF(5) loader.conf LOADER.CONF(5)

loader.conf - فایل پیکربندی بوت‌لودر systemd-boot

ESP/loader/loader.conf

systemd-boot(7) فایل ESP/loader/loader.conf را می‌خواند. این فایل پیکربندی می‌کند که آیا منو نمایش داده شود و برای چه مدت، قلم (فونت)، بوق صوتی، انواع ورودی‌های منو برای نمایش، انتخاب پیش‌فرض، و برخی جنبه‌های ثبت کلیدهای راه‌اندازی امن (Secure Boot) و مدیریت سفت‌افزار چگونه باشد. فهرست گزینه‌های موجود را در زیر مشاهده فرمایید.

این فایل از کدگذاری UTF-8 استفاده کرده و از مجموعه‌ای از خطوط جداشده با «line feed» (یعنی کد اسکی ۱۰) تشکیل می‌شود. خطوطی که خالی هستند یا با علامت توضیح ("#") شروع می‌شوند، نادیده گرفته می‌شوند. سایر خطوط شامل یک نام گزینه، به دنبال آن فاصله خالی (whitespace)، و سپس مقدار گزینه هستند.

آرگومان‌های بولی (Boolean) می‌توانند به صورت "yes"/"y"/"true"/"t"/"on"/"1" یا "no"/"n"/"false"/"f"/"off"/"0" نوشته شوند.

نکته: systemd-boot همچنین فایل‌های ورودی بوت‌لودر، نوع ۱# (ESP/loader/entries/*.conf و XBOOTLDR/loader/entries/*.conf) و نوع ۲# (ESP/EFI/Linux/*.uki و XBOOTLDR/EFI/Linux/*.uki) را می‌خواند. این فایل‌ها در UAPI.1 Boot Loader Specification[1] شرح داده شده‌اند.

نکته: رفتار systemd-boot همچنین تحت تأثیر متغیرهای EFI قرار دارد. برخی از تنظیمات مشخص‌شده در این فایل می‌توانند توسط آن‌ها بازنویسی شوند؛ به عنوان مثال ورودی پیش‌فرض منوی بوت یا زمان انتظار (timeout) منو. برای جزئیات بیشتر به systemd-boot(7) مراجعه فرمایید.

پیکربندی‌های زیر در loader.conf پشتیبانی می‌شوند:

default

یک الگوی glob برای انتخاب ورودی پیش‌فرض بر اساس شناسه (id)، که همان نام فایل به همراه پسوند متنی ".conf" است. ورودی پیش‌فرض را می‌توان در خود منوی بوت تغییر داد، که در این صورت نام ورودی انتخاب‌شده به عنوان یک متغیر EFI ذخیره شده و بر این گزینه اولویت خواهد داشت.

اگر بر روی "@saved" تنظیم شود، ورودی انتخاب‌شده در هر بار راه‌اندازی به عنوان یک متغیر EFI ذخیره شده و در بار بعدی شروع به کار بوت‌لودر، به طور خودکار انتخاب خواهد شد.

Table 1. ورودی‌های شناسایی‌شده خودکار از نام‌های زیر استفاده خواهند کرد:

نام توضیحات
auto-efi-default لودر پیش‌فرض EFI
auto-efi-shell پوسته EFI Shell
auto-osx سیستم‌عامل macOS
auto-poweroff خاموش کردن سیستم
auto-reboot راه‌اندازی مجدد سیستم
auto-reboot-to-firmware-setup راه‌اندازی مجدد به رابط سفت‌افزار
auto-windows مدیر بوت ویندوز (Windows Boot Manager)

الگوهای نویسه عام (glob) پشتیبانی‌شده عبارتند از
"?"، "*" و "[...]" (شامل بازه‌ها). توجه داشته باشید که این الگوها از همان ساختار نحوی glob(7) استفاده می‌کنند، اما از تمامی ویژگی‌های آن پشتیبانی نمی‌کنند. به ویژه، نفی مجموعه و کلاس‌های نویسه نام‌گذاری‌شده پشتیبانی نمی‌شوند. تطبیق الگو به صورت غیرحساس به بزرگی و کوچکی حروف بر روی شناسه ورودی (همان‌طور که توسط bootctl list نمایش داده می‌شود) انجام می‌گیرد.

اضافه‌شده در نسخه 239.

timeout

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

اگر بر روی "menu-disabled" یا "menu-hidden" یا "0" (پیش‌فرض) تنظیم شود، هیچ منویی نمایش داده نمی‌شود و ورودی پیش‌فرض بلافاصله راه‌اندازی خواهد شد. مگر اینکه از "menu-disabled" استفاده شده باشد، منو می‌تواند با فشردن و نگه‌داشتن یک کلید قبل از اجرای systemd-boot نمایش داده شود. تنظیم این گزینه روی "menu-force" زمان انتظار را غیرفعال کرده و همیشه منو را نمایش می‌دهد.

اضافه‌شده در نسخه 239.

console-mode

این گزینه وضوح تصویر (رزولوشن) کنسول را پیکربندی می‌کند. این مقدار می‌تواند در خود منوی بوت تغییر یابد و در آن حالت به عنوان یک متغیر EFI ذخیره شده و بر این گزینه اولویت می‌یابد.

یک عدد یا یکی از مقادیر ویژه ذکرشده در زیر را می‌پذیرد. مقادیر زیر می‌توانند استفاده شوند:

0

حالت استاندارد UEFI 80x25

اضافه‌شده در نسخه 239.

1

حالت 80x50، توسط تمامی دستگاه‌ها پشتیبانی نمی‌شود

اضافه‌شده در نسخه 239.

2

اولین حالت غیر استاندارد ارائه‌شده توسط سفت‌افزار دستگاه، در صورت وجود

اضافه‌شده در نسخه 239.

auto

انتخاب خودکار یک حالت مناسب با استفاده از روش‌های ابتکاری

اضافه‌شده در نسخه 239.

max

انتخاب بالاترین شماره حالت در دسترس

اضافه‌شده در نسخه 239.

keep

نگه‌داشتن حالت انتخاب‌شده توسط سفت‌افزار (پیش‌فرض)

اضافه‌شده در نسخه 239.

اضافه‌شده در نسخه 239.

editor

یک آرگومان بولی می‌پذیرد. فعال‌سازی (پیش‌فرض) یا غیرفعال‌سازی ویرایشگر. اگر افراد غیرمجاز بتوانند به دستگاه دسترسی فیزیکی داشته باشند، ویرایشگر باید غیرفعال شود.

اضافه‌شده در نسخه 239.

auto-entries

یک آرگومان بولی می‌پذیرد. فعال‌سازی (پیش‌فرض) یا غیرفعال‌سازی ورودی‌ها برای سایر ورودی‌های بوت یافت‌شده در پارتیشن بوت. به ویژه، این ویژگی زمانی مفید است که ورودی‌های لودر برای نمایش توضیحات جایگزین برای آن ورودی‌ها ایجاد شده باشند.

اضافه‌شده در نسخه 239.

auto-firmware

یک مقدار بولی که وجود ورودی "Reboot Into Firmware Interface" را کنترل می‌کند (به طور پیش‌فرض فعال است). اگر این مورد غیرفعال شود، رابط سفت‌افزار همچنان می‌تواند با استفاده از کلید f در دسترس قرار گیرد.

اضافه‌شده در نسخه 239.

auto-reboot

یک مقدار بولی که وجود ورودی "Reboot The System" را کنترل می‌کند (به طور پیش‌فرض غیرفعال است). حتی اگر این مورد غیرفعال باشد، سیستم همچنان می‌تواند با فشردن Shift+b مجدداً راه‌اندازی شود.

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

auto-poweroff

یک مقدار بولی که وجود ورودی "Power Off The System" را کنترل می‌کند (به طور پیش‌فرض غیرفعال است). حتی اگر این مورد غیرفعال باشد، سیستم همچنان می‌تواند با فشردن Shift+o خاموش شود.

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

beep

یک آرگومان بولی می‌پذیرد. اگر زمان انتظار فعال باشد، در هر ثانیه بوق می‌زند؛ در غیر این صورت، زمانی که n-امین ورودی در منوی بوت انتخاب شود n بار بوق می‌زند (به طور پیش‌فرض غیرفعال است). در حال حاضر، تنها معماری x86 پشتیبانی می‌شود که در آن از بلندگوی رایانه (PC speaker) استفاده می‌گردد.

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

secure-boot-enroll

خطر: این قابلیت در صورت استفاده نادرست ممکن است دستگاه شما را نیمه‌بریک (soft-brick) کند.

ثبت کلیدهای راه‌اندازی امن (Secure Boot) یافت‌شده در ESP را در صورتی که سیستم در حالت راه‌اندازی (setup mode) باشد، کنترل می‌کند:

if-safe

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

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

manual

ورودی‌های بوت برای کلیدهای راه‌اندازی امنِ یافت‌شده ایجاد می‌شوند که امکان ثبت دستی را فراهم می‌کنند.

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

off

هیچ اقدامی انجام نمی‌شود.

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

force

همیشه کلید "auto" را در صورت یافت شدن ثبت می‌کند. توجه داشته باشید در صورتی که از امن بودن این عملیات اطمینانی نباشد، همچنان یک پیام هشدار همراه با زمان انتظار نمایش داده خواهد شد.

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

مجموعه‌های مختلف متغیرها را می‌توان در مسیر /loader/keys/NAME تنظیم کرد که در آن NAME نامی است که قرار است به عنوان نام ورودی استفاده شود. این ویژگی امکان ارائه چندین مجموعه از متغیرهای Secure Boot و انتخاب یکی از آن‌ها در زمان اجرا را فراهم می‌سازد.

متغیرهای Secure Boot پشتیبانی‌شده عبارتند از یک پایگاه‌داده برای ایمیج‌های مجاز، یکی برای کلید تبادل کلید (KEK) و یکی برای کلید پلتفرم (PK). برای اطلاعات بیشتر، به UEFI specification[2] در بخش Secure Boot and Driver Signing مراجعه فرمایید. منبع دیگری که تعامل متغیرهای مختلف را توضیح می‌دهد، EDK2 documentation[3] است.

یک مجموعه کامل از متغیرهای UEFI شامل db.auth، KEK.auth و PK.auth است. توجه داشته باشید که این فایل‌ها باید متغیرهای احرازهویت‌شده UEFI باشند. برای نمونه‌ای از نحوه تولید آن‌ها از کلیدهای معمولی X.509 به ادامه مطلب مراجعه فرمایید.

uuid=$(systemd-id128 new --uuid)
for key in PK KEK db; do
  openssl req -new -x509 -subj "/CN=${key}/" -keyout "${key}.key" -out "${key}.pem"
  openssl x509 -outform DER -in "${key}.pem" -out "${key}.der"
  sbsiglist --owner "${uuid}" --type x509 --output "${key}.esl" "${key}.der"
done
# همچنین ببینید: Windows Secure Boot Key Creation and Management Guidance[4]
curl --location \
     "https://go.microsoft.com/fwlink/p/?linkid=321192" -o ms-db-2011.der \
     "https://go.microsoft.com/fwlink/p/?linkid=321185" -o ms-kek-2011.der \
     "https://go.microsoft.com/fwlink/p/?linkid=321194" -o ms-uefi-db-2011.der \
     "https://go.microsoft.com/fwlink/p/?linkid=2239776" -o ms-db-2023.der \
     "https://go.microsoft.com/fwlink/p/?linkid=2239775" -o ms-kek-2023.der \
     "https://go.microsoft.com/fwlink/p/?linkid=2239872" -o ms-uefi-db-2023.der
sha1sum -c <<END
580a6f4cc4e4b669b9ebdc1b2b3e087b80d0678d  ms-db-2011.der
31590bfd89c9d74ed087dfac66334b3931254b30  ms-kek-2011.der
46def63b5ce61cf8ba0de2e6639c1019d0ed14f3  ms-uefi-db-2011.der
45a0fa32604773c82433c3b7d59e7466b3ac0c67  ms-db-2023.der
459ab6fb5e284d272d5e3e6abc8ed663829d632b  ms-kek-2023.der
b5eeb4a6706048073f0ed296e7f580a790b59eaa  ms-uefi-db-2023.der
END
for key in ms-*.der; do
  sbsiglist --owner 77fa9abd-0359-4d32-bd60-28f4e78f784b --type x509 --output "${key%der}esl" "${key}"
done
# در صورت تمایل، گواهی‌های Microsoft Windows را اضافه کنید (جهت راه‌اندازی ویندوز مورد نیاز است).
cat ms-db-*.esl >>db.esl
# در صورت تمایل، گواهی‌های Microsoft UEFI را برای درایورهای سفت‌افزار / Option ROMها و بوت‌لودرهای
# شخص ثالث (شامل shim) اضافه کنید. این مورد بر روی سخت‌افزار واقعی اکیداً توصیه می‌شود زیرا عدم
# گنجاندن آن ممکن است دستگاه شما را نیمه‌بریک کند (پاراگراف بعدی را ببینید).
cat ms-uefi-*.esl >>db.esl
# در صورت تمایل، گواهی‌های Microsoft KEK را اضافه کنید. در صورتی که از هر یک از کلیدهای مایکروسافت
# استفاده شود توصیه می‌گردد، زیرا پایگاه‌داده رسمی ابطال UEFI با این کلید امضا شده است. پایگاه‌داده ابطال را
# می‌توان با fwupdmgr(1) به‌روزرسانی کرد.
cat ms-kek-*.esl >>KEK.esl
attr=NON_VOLATILE,RUNTIME_ACCESS,BOOTSERVICE_ACCESS,TIME_BASED_AUTHENTICATED_WRITE_ACCESS
sbvarsign --attr "${attr}" --key PK.key --cert PK.pem --output PK.auth PK PK.esl
sbvarsign --attr "${attr}" --key PK.key --cert PK.pem --output KEK.auth KEK KEK.esl
sbvarsign --attr "${attr}" --key KEK.key --cert KEK.pem --output db.auth db db.esl

این قابلیت خطرناک تلقی می‌شود زیرا حتی اگر تمام فایل‌های مورد نیاز با کلیدهای بارگذاری‌شده امضا شده باشند، باز هم ممکن است برخی از فایل‌های لازم برای عملکرد صحیح سیستم امضا نشده باشند. این امر به ویژه در مورد Option ROMها (مثلاً برای کنترلرهای ذخیره‌سازی یا کارت‌های گرافیک) صدق می‌کند. برای جزئیات بیشتر به Secure Boot and Option ROMs[5] مراجعه فرمایید.

اضافه‌شده در نسخه 252.

secure-boot-enroll-action

عملیاتی را مشخص می‌کند که باید پس از تکمیل ثبت خودکار کلیدهای Secure Boot انجام شود.

reboot

راه‌اندازی مجدد سیستم پس از ثبت کلیدها. این مقدار پیش‌فرض است.

shutdown

خاموش کردن سیستم پس از ثبت کلیدها.

این گزینه تنها در صورتی کاربرد دارد که "secure-boot-enroll" فعال باشد.

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

secure-boot-enroll-timeout-sec

مدت زمان نمایش پیام هشدار پیش از شروع فرآیند ثبت کلید را بر حسب ثانیه مشخص می‌کند.

اگر بر روی "hidden" یا "0" تنظیم شود، هیچ هشداری نمایش داده نمی‌شود و کلیدها بلافاصله ثبت خواهند شد. زمان انتظار پیش‌فرض (در صورت عدم تنظیم صریح) ۱۵ ثانیه است.

این گزینه تنها در صورتی کاربرد دارد که "secure-boot-enroll" فعال باشد.

اضافه‌شده در نسخه 259.

reboot-for-bitlocker

هشدار: این قابلیت آزمایشی است و احتمال دارد در نسخه‌های آینده systemd تغییر کند (یا به شکل فعلی خود حذف شود).

یک راهکار دور زدن برای زمانی که بیت‌لاکر (BitLocker) پس از به‌روزرسانی بوت‌لودر نیازمند کلید بازیابی (recovery key) می‌شود (به طور پیش‌فرض غیرفعال است).

تلاش می‌کند تا درایوهای رمزگذاری‌شده با BitLocker را همراه با یک TPM فعال شناسایی کند. اگر هر دو یافت شوند و Windows Boot Manager در منوی بوت انتخاب شود، متغیر EFI مربوط به "BootNext" تنظیم شده و سیستم راه‌اندازی مجدد می‌گردد. سپس سفت‌افزار مستقیماً Windows Boot Manager را راه‌اندازی می‌کند، به طوری که مقادیر ثبات‌های PCR ماژول TPM در حالت‌های مورد انتظار باقی مانده و ویندوز بتواند کلید رمزگذاری را رمزگشایی کند. این به systemd-boot(7) اجازه می‌دهد تا بدون نیاز به ارائه کلید بازیابی برای باز کردن قفل درایو BitLocker، به‌روزرسانی شود.

توجه داشته باشید که ثبات‌های PCR مورد استفاده ویندوز را می‌توان با خط‌مشی گروهی (Group Policy) به نام "Configure TPM platform validation profile for native UEFI firmware configurations" در مسیر "Computer Configuration\Administrative Templates\Windows Components\BitLocker Drive Encryption" پیکربندی کرد. هنگامی که Secure Boot فعال است، تغییر این مورد به PCRهای "0,2,7,11" باید ایمن باشد. برای اینکه مقادیر PCR بر روی یک درایو از قبل رمزگذاری‌شده تغییر یابد، محافظ کلید TPM باید حذف شده و سپس مجدداً اضافه شود. اگر PCR 4 اندازه‌گیری نمی‌شود، این تنظیم می‌تواند برای افزایش سرعت راه‌اندازی ویندوز غیرفعال شود.

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

reboot-on-error

راه‌اندازی مجدد خودکار را در صورت عدم موفقیت در اجرای ورودی انتخاب‌شده کنترل می‌کند.

yes

در صورتی که اجرای ورودی بوت انتخاب‌شده با شکست مواجه شود، سیستم را مجدداً راه‌اندازی می‌کند.

no

راه‌اندازی مجدد نکن - کنترل را به سفت‌افزار EFI بازگردان.

auto

تنها و تنها در صورتی راه‌اندازی مجدد را انجام بده که شمارش بوت برای این ورودی فعال باشد و شمارنده تلاش‌های باقی‌مانده از قبل بر روی ۰ نباشد.

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

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

log-level

سطح لاگ مورد استفاده توسط systemd-boot(7) را کنترل می‌کند.

مقادیر معتبر عبارتند از "emerg"، "alert"، "crit"، "err"، "warning"، "notice"، "info" و "debug".

در صورت مشخص نشدن، از "info" استفاده خواهد شد، مگر اینکه قبلاً از طریق رشته SMBIOS Type 11 پیکربندی شده باشد؛ به smbios-type-11(7) مراجعه کنید.

توجه داشته باشید که سطح لاگ پیکربندی‌شده تنها پس از تجزیه loader.conf اعمال خواهد شد، بنابراین پیام‌های لاگ تولیدشده قبل از آن نقطه ممکن است تحت تأثیر این تنظیم قرار نگیرند.

اضافه‌شده در نسخه 259.

# /boot/efi/loader/loader.conf
timeout 0
default 01234567890abcdef1234567890abdf0-*
editor no

منو به طور پیش‌فرض نمایش داده نخواهد شد (منو همچنان می‌تواند با فشردن و نگه‌داشتن یک کلید در حین بوت نمایش داده شود). یکی از ورودی‌های دارای فایل‌هایی با نامی که با "01234567890abcdef1234567890abdf0-" شروع می‌شود، به طور پیش‌فرض انتخاب خواهد شد. اگر بیش از یک ورودی مطابقت داشته باشد، ورودی دارای بالاترین اولویت انتخاب می‌شود (معمولاً ورودی با بالاترین شماره نسخه). ویرایشگر غیرفعال خواهد بود، بنابراین امکان تغییر خط فرمان کرنل وجود نخواهد داشت.

systemd-boot(7), bootctl(1)

1.
UAPI.1 Boot Loader Specification
2.
UEFI specification
3.
EDK2 documentation
4.
Windows Secure Boot Key Creation and Management Guidance
5.
Secure Boot and Option ROMs
systemd 261.2