SBCTL(8)   SBCTL(8)

sbctl - مدیر بوت امن (Secure Boot)

sbctl <command>

sbctl ابزاری است که امکان ایجاد کلیدها برای بوت امن، ثبت امن آن‌ها و رهگیری فایل‌های نیازمند امضا را فراهم می‌سازد.

status

وضعیت فعلی بوت امن سیستم را نمایش می‌دهد. بررسی می‌کند که آیا در حال حاضر سیستم در حالت UEFI با بوت امن بوت شده است یا خیر، و اینکه آیا Setup Mode فعال است یا نه.

create-keys

مجموعه‌ای از کلیدهای امضا را برای امضای باینری‌های EFI ایجاد می‌کند. در حال حاضر کلیدهای زیر ایجاد می‌شوند:
•Platform Key
•Key Exchange Key
•Signature Database Key

-e, --export

دایرکتوری مقصد برای ذخیره کلیدهای صادرشده.

-d, --database-path

مسیر ذخیره فایل GUID هنگام تولید کلیدها.

enroll-keys

کلیدهای ایجادشده را در متغیرهای EFI ثبت می‌کند.
توجه داشته باشید که برخی دستگاه‌ها دارای سفت‌افزار سخت‌افزاری هستند که هنگام فعال
بودن بوت امن امضا و اعتبارسنجی می‌شوند. عدم اعتبارسنجی این سفت‌افزار می‌تواند
منجر به از کار افتادن کامل (brick) دستگاه‌ها شود. توصیه می‌شود کلیدهای اختصاصی خود را
همراه با گواهی‌های مایکروسافت ثبت نمایید.

-m, --microsoft

گواهی‌های سازنده UEFI متعلق به مایکروسافت را در پایگاه‌داده امضا ثبت می‌کند.

ببینید Option ROM*.

-t, --tpm-eventlog

چک‌سام‌ها را از لاگ رویداد TPM در پایگاه‌داده امضا ثبت می‌کند.

ببینید Option ROM*.

این قابلیت آزمایشی است.

-c, --custom

گواهی‌های سفارشی KEK و db را به ترتیب از "/var/lib/sbctl/keys/custom/KEK/" و "/var/lib/sbctl/keys/custom/db/" ثبت می‌کند.

-f, --firmware-builtin

امضاها را از dbDefault، KEKDefault یا PKDefault ثبت می‌کند. این گزینه زمانی کاربرد دارد که sbctl گواهی‌های OEM شما را به همراه نداشته باشد یا شامل همه آن‌ها نباشد.

مقادیر معتبر شامل "db"، "KEK" یا "PK" هستند که به صورت رشته‌ای جداشده با کاما ارسال می‌شوند.

پیش‌فرض: "db,KEK"

--yes-this-might-brick-my-machine, --yolo

خطای Option ROM را نادیده گرفته و به ثبت کلیدها در سفت‌افزار UEFI ادامه می‌دهد.

ببینید Option ROM*.

-i, --ignore-immutable

بررسی مسیر /sys/firmware/efi/efivars/ برای فایل‌های تغییرناپذیر (immutable) را نادیده می‌گیرد و صفت immutable را پیش از ثبت گواهی‌ها حذف می‌کند.

--export

کلیدهایی را که قصد ثبت آن‌ها را داریم به عنوان لیست‌های امضای EFI موسوم به (esl) یا متغیرهای اصالت‌سنجی‌شده EFI موسوم به (auth) در دایرکتوری کاری فعلی صادر می‌کند.

مقادیر معتبر عبارتند از: esl, auth.

-p, --partial

کلیدها را فقط برای سلسله‌مراتب مشخص‌شده ثبت می‌کند.

مقادیر معتبر عبارتند از: db, KEK, PK.

--custom-bytes

یک فایل بایتی سفارشی را با ارائه مسیر آن در متغیر efivar مشخص‌شده توسط partial ثبت می‌کند.

-a, --append

به جای جایگزینی کلیدهای ثبت‌شده فعلی، کلید ارائه‌شده را ضمیمه می‌کند.

--keytype

نوع کلید را برای تمامی کلیدهای امضای مورداستفاده sbctl تعیین می‌کند. این شامل کلیدهای PK، KEK و db می‌شود.

پیش‌فرض: file

مقادیر معتبر عبارتند از: file, tpm

--pk-keytype

نوع کلید PK را تعیین می‌کند.

پیش‌فرض: file

مقادیر معتبر عبارتند از: file, tpm

--kek-keytype

نوع کلید KEK را تعیین می‌کند.

پیش‌فرض: file

مقادیر معتبر عبارتند از: file, tpm

--db-keytype

نوع کلید db را تعیین می‌کند.

پیش‌فرض: file

مقادیر معتبر عبارتند از: file, tpm

sign <FILE>...

یک فایل باینری EFI را با کلید ایجادشده امضا می‌کند. فایل به منظور جلوگیری از امضاهای تکراری برای امضاهای معتبر بررسی خواهد شد.

-o PATH, --output PATH

نام فایل خروجی. حالت پیش‌فرض فایل را جایگزین می‌کند.

-s, --save

ذخیره فایل در پایگاه‌داده.

sign-all

تمام باینری‌های ثبت‌شده EFI را امضا می‌کند.

-g, --generate

تولید تمام بسته‌ها (bundles) پیش از امضا کردن.

import-keys

کلیدهای موجود را وارد sbctl می‌کند.

--db-cert PATH

مسیر یک گواهی معتبر Database (db).

--db-key PATH

مسیر یک کلید خصوصی معتبر Database (db).

--kek-cert PATH

مسیر یک گواهی معتبر Key Exchange Key (KEK).

--kek-key PATH

مسیر یک کلید خصوصی معتبر Key Exchange Key (KEK).

--pk-cert PATH

مسیر یک گواهی معتبر Platform Key (PK).

--pk-key PATH

مسیر یک کلید خصوصی معتبر Platform Key (PK).

--directory PATH

مسیر یک دایرکتوری کلید. محل‌های مورد انتظار فایل درون این دایرکتوری عبارتند از:
•PK/PK.key
•PK/PK.pem
•KEK/KEK.key
•KEK/KEK.pem
•db/db.key
•db/db.pem

--force

بازنویسی دایرکتوری کلید موجود مورداستفاده توسط sbctl.

list-files, ls-files, ls

فهرست کردن تمامی باینری‌های EFI ثبت‌شده.

remove-file <FILE>, rm-file <FILE>, rm <FILE>

حذف فایل از پایگاه‌داده امضا.

list-enrolled-keys, ls-enrolled-keys

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

verify [FILE...]

باینری‌های EFI با نوع mime به صورت application/x-dosexec را در پارتیشن ESP جستجو می‌کند و پایگاه‌داده فایل را بررسی می‌نماید. بررسی می‌کند که آیا با Signature Database Key امضا شده‌اند یا خیر. یک آرگومان اختیاری فایل برای بررسی فایل‌های خاص می‌پذیرد.

reset

کلید Platform Key را بازنشانی می‌کند. این کار دستگاه را از حالت بوت امن خارج کرده و امکان چرخش کلیدها را فراهم می‌سازد.

-p, --partial

کلیدها را فقط برای سلسله‌مراتب مشخص‌شده بازنشانی می‌کند.

مقادیر معتبر عبارتند از: db, KEK, PK.

rotate-keys

کلیدهای بوت امن را می‌چرخاند و آن‌ها را با کلیدهای تازه‌تولیدشده جایگزین می‌کند. کلیدهای قدیمی را در دایرکتوری‌ای در /var/tmp ذخیره کرده و هر فایلی را از پایگاه‌داده فایل مجدداً امضا می‌کند.

--backup-dir PATH

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

-p, --partial

کلیدها را فقط برای سلسله‌مراتب مشخص‌شده می‌چرخاند.

مقادیر معتبر عبارتند از: db, KEK, PK.

-k, --key-file

فایل کلید برای ضمیمه‌شدن به سلسله‌مراتب مشخص‌شده.

-c, --cert-file

فایل گواهی برای ضمیمه‌شدن به سلسله‌مراتب مشخص‌شده.

--keytype

تعیین نوع کلید برای تمام کلیدهای امضای مورداستفاده توسط sbctl. این شامل کلیدهای PK، KEK و db است.

پیش‌فرض: file

مقادیر معتبر عبارتند از: file, tpm

--pk-keytype

تعیین نوع کلید PK.

پیش‌فرض: file

مقادیر معتبر عبارتند از: file, tpm

--kek-keytype

تعیین نوع کلید KEK.

پیش‌فرض: file

مقادیر معتبر عبارتند از: file, tpm

--db-keytype

تعیین نوع کلید db.

پیش‌فرض: file

مقادیر معتبر عبارتند از: file, tpm

export-enrolled-keys

صادر کردن کلیدهای ثبت‌شده قبلی از سیستم.

--dir PATH

دایرکتوری خروجی برای کلیدهای صادرشده.

--format TYPE

فرمت کلیدهای صادرشده.

پیش‌فرض: der مقادیر معتبر: esl, auth.

setup

برپایی و راه‌اندازی نصب sbctl.
این دستور پیکربندی تعریفی sbctl را از طریق فایل پیکربندی فعال می‌کند.
همچنین می‌تواند پیکربندی فعلی و وضعیت کنونی نصب را چاپ کند.

--setup

برپایی نصب sbctl بر اساس فایل پیکربندی ارائه‌شده، یا پیکربندی پیش‌فرض خوانده‌شده از /etc/sbctl/sbctl.conf.

این گزینه به طور خودکار دستورهای create-keys و enroll-keys را انجام داده و همچنین پایگاه‌داده فایل‌ها را برای امضا راه‌اندازی می‌کند.

برای جزئیات بیشتر به sbctl.conf(5) مراجعه کنید.

--migrate

مهاجرت پیکربندی و راه‌اندازی sbctl به یک نگارش جدید.

در حال حاضر تنها مهاجرت برای sbctl انتقال از /usr/share/secureboot به /var/lib/sbctl است.

--print-config

نسخه سریالی‌شده‌ای از پیکربندی فعلی sbctl را چاپ می‌کند.

برای جزئیات بیشتر به sbctl.conf(5) مراجعه کنید.

--print-state

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

نکته: این گزینه نیازمند ارسال --json است.

help

یک پیام راهنما نمایش می‌دهد.

bundle [FLAGS] <NAME>

یک بسته (bundle) ایجاد می‌کند که باید باینری‌های EFI تولید کند. برای جزئیات بیشتر به بخش بسته‌ها (BUNDLES) در زیر مراجعه کنید.

-a PATH, --amducode PATH

محل مایکروچپ (microcode) پردازنده AMD.

-c PATH, --cmdline PATH

محل خط فرمان هسته (cmdline). (پیش‌فرض "/etc/kernel/cmdline")

-e PATH, --efi-stub PATH

محل استاب EFI. (پیش‌فرض "/usr/lib/systemd/boot/efi/linuxx64.efi.stub")

-p PATH, --esp PATH

محل پارتیشن ESP. (پیش‌فرض "/efi")

-h, --help

راهنما برای bundle.

-f PATH, --initramfs PATH

محل initramfs. (پیش‌فرض "/boot/initramfs-linux.img")

-i PATH, --intelucode PATH

محل مایکروچپ (microcode) پردازنده Intel.

-k PATH, --kernel-img PATH

محل تصویر هسته (kernel image). (پیش‌فرض "/boot/vmlinuz-linux")

-o PATH, --os-release PATH

محل فایل os-release. (پیش‌فرض "/usr/lib/os-release")

-s, --save

ذخیره بسته در پایگاه‌داده.

-l PATH, --splash-img PATH

محل تصویر اسپلش بوت (boot splash).

generate-bundles

این دستور تمام بسته‌ها را تولید می‌کند.

-s, --sign

امضا کردن تمام بسته‌های تولیدشده.

remove-bundle <NAME>, rm-bundle <NAME>

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

list-bundles, ls-bundle

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

-j, --json

امکان خروجی مقادیر به صورت json به جای متن قابل خواندن توسط انسان را در دستورهای پشتیبانی‌شده فراهم می‌کند. این ویژگی برای تجزیه داده‌ها با ابزارهایی مانند jq کاربردی است.

-c, --config

مسیری اختیاری به فایل پیکربندی که باید توسط sbctl استفاده شود.

پیش‌فرض: /etc/sbctl/sbctl.conf

--disable-landlock

قرنطینه و سندباکس landlock را در sbctl غیرفعال می‌کند.

ببینید landlock(7).

--debug

فعال‌سازی ثبت دقیق گزارش‌های اشکال‌زدایی (debug logging). این امر فرمت‌بندی زیبای متون را به هم خواهد زد.

نکته: این ویژگی منسوخ شده است. لطفاً به dracut/mkinitcpio/ukify مهاجرت کنید.

معمولاً فقط هسته با کلیدهای بوت امن شما امضا می‌شود. این بدان معناست که خط فرمان هسته و initramfs می‌توانند بدون امکان اعتبارسنجی تغییر یابند.

بسته‌ها فایل‌های اجرایی EFI هستند که هر سه مورد (initramfs، kernel و cmdline) را در یک فایل منفرد بسته‌بندی می‌کنند که امضای آن آسان است. اجتناب از هرگونه فایل امضانشده در حین بوت، کل فرایند را در برابر دستکاری مقاوم‌تر می‌سازد.

هنگامی که یک بسته تولید می‌شود، پیکربندی آن در پایگاه‌داده بسته‌ها ذخیره می‌گردد (به بخش فایل‌ها (FILES) مراجعه کنید). اجراهای بعدی دستور sbctl generate-bundles این بسته‌ها را مجدداً می‌سازد، بنابراین نیازی نیست پس از هر به‌روزرسانی سیستم تمام پارامترها را دوباره مشخص کنید.

نکته کاربردی: ابزار systemd-boot به طور خودکار ورودی‌های مربوط به هر بسته‌ای را که در esp/EFI/Linux/*.efi یافت شود نمایش می‌دهد.

در حال حاضر sbctl از ذخیره کلیدها به عنوان فایل‌های ساده رمزنگاری‌نشده یا کلیدهای محافظت‌شده با TPM پشتیبانی می‌کند.

فایل‌های ساده رمزنگاری‌نشده (file) فقط باید زمانی استفاده شوند که پارتیشن ریشه رمزگذاری شده باشد. این نوع کلید به دلایل تاریخی حالت پیش‌فرض است. کلیدهای فایلی به صورت ثابت روی RSA 4096 تنظیم شده‌اند.

کلیدهای محافظت‌شده با TPM موسوم به (tpm) درون TPM محافظت می‌شوند و در صورت وجود یک TPM دردسترس روی سیستم قابل استفاده هستند. سیاست‌های TPM پشتیبانی نمی‌شوند، به این معنی که نمی‌توان کلیدها را نسبت به وضعیت سیستم مهروموم (seal) کرد. توجه داشته باشید که کلیدهای TPM به صورت ثابت روی RSA 2048 تنظیم شده‌اند که معمولاً بالاترین قدرت بیتی پشتیبانی‌شده توسط TPMها است.

هنگام ایجاد سلسله‌مراتب کلید برای بوت امن، کاربر می‌تواند تصمیم بگیرد که هر یک از کلیدها در سلسله‌مراتب چه نوع کلیدی دریافت کنند. از آنجا که TPMها در امضا کردن می‌توانند کند باشند، معمولاً توصیه می‌شود PK و KEK در TPM نگهداری شوند، در حالی که کلید db می‌تواند یک کلید استاندارد file باشد.

توجه داشته باشید که در حال حاضر محافظت با رمز عبور پشتیبانی نمی‌شود.

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

این ویژگی را می‌توان با تنظیم landlock: false در فایل پیکربندی یا با ارسال --disable-landlock به sbctl غیرفعال کرد.

ببینید https://github.com/Foxboron/sbctl/wiki/FAQ#option-rom

نکته: برای استفاده از کلیدهای سفارشی بوت امن، مهم است که سیستم را به تنظیمات سفت‌افزار ریبوت کنید (systemctl reboot --firmware-setup) و به منوی Secure Boot بروید تا وارد Setup Mode شوید. این کار معمولاً با پاک کردن/حذف کلیدهای بوت امن (یا حداقل Platform Key) در حالی که حالت بوت امن فعال باقی مانده انجام می‌شود. برخی سفت‌افزارها دارای یک Custom Mode هستند که فقط اعتبارسنجی امضا را غیرفعال می‌کند و بنابراین نباید فعال شود مگر اینکه راه دیگری برای ورود به مدیریت کلید ارائه نشده باشد. اگر این مرحله کامل نشود، ثبت کلیدهای سفارشی توسط سفت‌افزار رد خواهد شد.

گام بعدی ایجاد کلیدها برای بوت امن است. دستور create-keys سلسله‌مراتب کلید موردنیاز برای بوت امن را در "/var/lib/sbctl/keys" ایجاد می‌کند.

# sbctl create-keys
Created Owner UUID a9fbbdb7-a05f-48d5-b63a-08c5df45ee70
Creating secure boot keys...✔
Secure boot keys created!

گام بعدی ثبت کلیدها در سفت‌افزار EFI است. ابزار sbctl انجام این کار را روی یک سیستم زنده پشتیبانی می‌کند، بدون اینکه نیازی به بوت یا اجرای ابزار مدیریت کلید از پوسته UEFI باشد.

نکته: این کار ممکن است به دلیل مشکلات سفت‌افزار و گزینه‌های منحصر‌به‌فرد در منوی BIOS دستگاه با شکست مواجه شود. همچنین، برخی دستگاه‌ها دارای سفت‌افزار سخت‌افزاری هستند که هنگام فعال بودن بوت امن امضا و اعتبارسنجی می‌شوند. عدم اعتبارسنجی این سفت‌افزار می‌تواند منجر به از کار افتادن کامل دستگاه‌ها شود. توصیه می‌شود کلیدهای خود را همراه با گواهی‌های مایکروسافت با استفاده از گزینه -m ثبت کنید. به بخش Option ROM* در بالا مراجعه نمایید.

# sbctl enroll-keys
Enrolling keys to EFI variables...✔
Enrolled keys to the EFI variables!

پس از ثبت موفقیت‌آمیز کلیدها، باید زنجیره بوت فعلی خود را امضا کنیم. به طور سنتی در سیستم‌های UEFI می‌توان یک پارتیشن سیستم EFI موسوم به (ESP) در مسیرهای /efi، /boot یا /boot/efi داشت. معمولاً می‌توان با نگاه کردن به نقاط اتصال (mount points) یا یافتن دایرکتوری EFI روی ESP، مسیر صحیح را پیدا کرد.

مهم‌ترین فایل برای امضا، هسته (kernel) است. این مسیر میان توزیع‌های مختلف متفاوت است اما معمولاً در ESP یا /boot یافت می‌شود. ما از --save برای ذخیره مسیر فایل استفاده می‌کنیم، بنابراین نیازی نیست بعداً آن را به صورت دستی امضا کنیم.

توجه داشته باشید که sbctl تنها می‌تواند مسیرهای فایل را رهگیری کند. روی هسته‌های دارای شماره نسخه ممکن است این امر پیچیده باشد.

# sbctl sign --save /efi/vmlinuz-linux
✔ Signed /efi/vmlinuz-linux

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

# sbctl sign --save /efi/EFI/BOOT/BOOTX64.EFI
✔ Signed /efi/EFI/BOOT/BOOTX64.EFI

ابزار sbctl قادر است ESP را به همراه تمام فایل‌های ذخیره‌شده پیدا و بررسی کند تا تأیید نماید فایل‌های موردنیاز را امضا کرده‌ایم.

# sbctl verify
Verifying file database and EFI images in /efi...
✔ /efi/EFI/BOOT/BOOTX64.EFI is signed
✔ /efi/vmlinuz-linux is signed

پس از اینکه مطمئن شدیم همه چیز کار می‌کند، می‌توانیم ریبوت کنیم. پس از ورود مجدد به سیستم، می‌توانیم وضعیت سیستم را بررسی کنیم. نیازی به فعال‌سازی مجدد بوت امن یا ورود به User Mode در سفت‌افزار نخواهد بود.

$ sbctl status
Installed:  ✓ sbctl is installed
Owner GUID: a7b893cc-949d-408c-b5cc-6e7d0370fdb6
Setup Mode: ✓ Disabled
Secure Boot:    ✓ Enabled

هنگام به‌روزرسانی سیستم، می‌توانیم sign-all را اجرا کنیم تا تمام فایل‌های ذخیره‌شده از قبل دوباره امضا شوند.

# sbctl sign-all
File has already been signed /boot/vmlinuz-linux
✓ Signed /efi/EFI/BOOT/BOOTX64.EFI

ابزار sbctl از ساخت تصاویر هسته یکپارچه (unified kernel images) پشتیبانی می‌کند. این فایل‌های اجرایی UEFI بخش‌های initramfs، kernel و cmdline را در یک فایل اجرایی بسته‌بندی می‌کنند که می‌تواند برای بوت امن امضا شود. این کار به شما امکان می‌دهد بخش‌های بزرگتری از زنجیره بوت را به جای امضا کردن صِرف هسته، اصالت‌سنجی کنید.

# sbctl bundle -i /boot/intel-ucode.img
               -l /usr/share/systemd/bootctl/splash-arch.bmp
               -k /boot/vmlinuz-linux
               -f /boot/initramfs-linux-lts.img
               -c /etc/kernel/cmdline
               /efi/EFI/Linux/linux-linux.efi

توجه داشته باشید که dracut(8) و mkinitcpio(8) از قابلیت‌های هسته یکپارچه پشتیبانی می‌کنند و باید نسبت به پیاده‌سازی sbctl ترجیح داده شوند. این قابلیت عمدتاً برای مواردی ارائه شده است که این ویژگی توسط تولیدکننده initramfs توزیع پشتیبانی نمی‌شود.

تمام دستورهایی که آرگومان مسیر می‌گیرند، هنگام ذخیره در پایگاه‌داده آن‌ها را به مسیرهای مطلق تبدیل می‌کنند.

در صورت موفقیت 0، و در غیر این صورت کد شکست غیرصفر بازگردانده می‌شود.

SYSTEMD_ESP_PATH, ESP_PATH

محل پارتیشن سیستم EFI موسوم به (ESP) را تعیین می‌کند. این متغیر رفتار sbctl را که پارتیشن صحیح را با lsblk جستجو می‌کند بازنویسی می‌نماید. هیچ بررسی روی این مسیر انجام نمی‌شود و می‌تواند برای اهداف آزمایشی کاربردی باشد.

SBCTL_UNICODE

اگر این مقدار "0" باشد sbctl نمادهای یونیکد را با نمادهای معادل اسکی جایگزین می‌کند. مقدار پیش‌فرض 1 در نظر گرفته می‌شود.

/etc/sbctl/sbctl.conf: فایل پیکربندی پیش‌فرض. ببینید sbctl.conf(5)

/var/lib/sbctl

دایرکتوری ذخیره‌سازی پیش‌فرض.

/var/lib/sbctl/GUID

شناسه مالک. این یک UUID به صورت تصادفی تولیدشده است.

/var/lib/sbctl/files.db

حاوی فهرستی از باینری‌های EFI است که باید توسط کلید تولیدشده امضا شوند.

/var/lib/sbctl/bundles.db

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

/var/lib/sbctl/keys/db/db.{pem,key}

حاوی کلید Signature Database مورد استفاده برای امضای باینری‌های EFI.

/var/lib/sbctl/keys/KEK/KEK.{pem,key}

حاوی کلید Key Exchange Key.

/var/lib/sbctl/keys/PK/PK.{pem,key}

حاوی کلید Platform Key.

/var/lib/sbctl/keys/custom/KEK/*

حاوی گواهی‌های سفارشی که به عنوان کلیدهای تبادل کلید (KEK) اضافی به سفت‌افزار افزوده خواهند شد.

/var/lib/sbctl/keys/custom/db/*

حاوی گواهی‌های سفارشی که به پایگاه‌داده امضای سفت‌افزار افزوده خواهند شد.

bootctl(1) jq(1) sbctl.conf(5) landlock(7)

•Morten Linderud <morten@linderud.pw>
08/10/2026