.\" generated with Ronn-NG/v0.10.1 .\" http://github.com/apjanke/ronn-ng/tree/0.10.1 .TH "BOOSTER" "1" "June 2026" "" .SH "نام (NAME)" \fBbooster\fR \- سازنده سریع و امن initramfs .SH "توضیحات (DESCRIPTION)" \fBBooster\fR ابزاری برای ساخت ایمیج‌های initramfs مورد نیاز در مرحله آغازین فرایند راه‌اندازی لینوکس است\. Booster با در نظر گرفتن سرعت بالا و سناریوی رمزنگاری کامل دیسک ساخته شده است\. .P مزایای Booster: .IP "\(bu" 4 زمان ساخت سریع ایمیج و سرعت بالای راه‌اندازی (بوت)\. .IP "\(bu" 4 پشتیبانی پیش‌فرض و بی‌دردسر از پیکربندی رمزنگاری کامل دیسک مبتنی بر LUKS\. .IP "\(bu" 4 پیوند داده‌ها به روش Clevis\. سیستم فایل رمزگذاری‌شده می‌تواند به تراشه TPM2 یا یک سرویس تحت شبکه پیوند یابد\. این ویژگی به بازگشایی خودکار درایو کمک می‌کند، اما تنها در صورتی که TPM2 یا سرویس شبکه در دسترس باشد\. .IP "\(bu" 4 تشخیص و بازگشایی خودکار انواع رمزنگاری پارتیشن با systemd\-cryptenroll (شامل fido2 و tpm2)\. .IP "\(bu" 4 پیکربندی آسان\. .IP "\(bu" 4 شناسایی خودکار پیکربندی میزبان\. این قابلیت به ساخت ایمیج‌های کمینه‌گرا و ویژه میزبان فعلی کمک می‌کند\. .IP "" 0 .SH "فایل پیکربندی (CONFIG FILE)" فایل پیکربندی سازنده \fBbooster\fR در مسیر \fB/etc/booster\.yaml\fR قرار دارد\. نمونه‌ای از فایل پیکربندی: .IP "" 4 .nf network: interfaces: enp0s31f2,2e:1d:61:30:a3:63 dhcp: on # either dhcp above or static configuration below can be used ip: 10\.0\.2\.15/24 gateway: 10\.0\.2\.255 dns_servers: 192\.168\.1\.1,8\.8\.8\.8 ssh_host_key: /etc/booster/ssh_host_ed25519_key ssh_authorized_keys: /etc/booster/authorized_keys ssh_listen: :22 universal: false modules: \-*,hid_apple,kernel/sound/usb/,kernel/fs/btrfs/btrfs\.ko,kernel/lib/crc4\.ko\.xz compression: zstd mount_timeout: 5m6s strip: true extra_files: vim,/usr/share/vim/vim82/,fsck,fsck\.ext4 vconsole: true enable_lvm: true enable_mdraid: true token_timeout: 30s pin_delay: 5s serialize_tokens: enabled: true clevis_timeout: 45s .fi .IP "" 0 .IP "\(bu" 4 گره \fBnetwork\fR در صورت وجود، شبکه را در زمان راه‌اندازی فعال می‌کند\. این گره زمانی مورد نیاز است که سوار کردن (mount) سیستم فایل ریشه نیازمند دسترسی به شبکه باشد (به عنوان مثال در مورد پیوند Tang)\. شبکه می‌تواند به طور پویا با DHCPv4 یا به طور ایستا در همین پیکربندی تنظیم شود\. در حالت اول \fBdhcp\fR روی \fBon\fR تنظیم می‌شود\. در حالت دوم، پیکربندی امکان تعیین موارد زیر را فراهم می‌کند: \fBip\fR \- آدرس IP دستگاه و ماسک شبکه آن، \fBgateway\fR \- دروازه پیش‌فرض، \fBdns_servers\fR \- فهرست جداشده با کاما از سرورهای DNS\. گره \fBnetwork\fR همچنین ویژگی \fBinterfaces\fR را می‌پذیرد \- فهرستی جداشده با کاما از رابط‌های شبکه (تعیین‌شده با نام یا آدرس MAC) جهت فعال‌سازی در زمان راه‌اندازی\. نام‌های شبکه مانند \fBenp0s31f6\fR در زمان تولید به آدرس‌های MAC تفکیک شده و سپس به init ارسال می‌شوند\. اگر گره \fBinterfaces\fR مشخص نشود، همه رابط‌ها در زمان راه‌اندازی فعال می‌شوند\. گره \fBnetwork\fR همچنین \fBssh_host_key\fR، \fBssh_authorized_keys\fR و \fBssh_listen\fR را جهت فعال‌سازی بازگشایی از راه دور قفل LUKS از طریق SSH می‌پذیرد\. مقدار \fBssh_host_key\fR مسیر کلید خصوصی میزبان SSH با قالب کدگذاری‌شده OpenSSH یا PEM است، \fBssh_authorized_keys\fR مسیر فایل authorized_keys است، و \fBssh_listen\fR آدرس گوش دادن است (پیش‌فرض \fB:22\fR)\. هر دو پارامتر \fBssh_host_key\fR و \fBssh_authorized_keys\fR باید همراه یکدیگر تنظیم شوند، و SSH به \fBdhcp: true\fR یا یک \fBip\fR ایستا نیاز دارد\. بخش بازگشایی از راه دور (REMOTE UNLOCK) در ادامه را ببینید\. .IP "\(bu" 4 \fBuniversal\fR پرچمی بولی است که به booster دستور می‌دهد یک ایمیج فراگیر (یونیورسال) تولید کند\. به طور پیش‌فرض booster ایمیجی ویژه میزبان تولید می‌کند که ماژول‌های کرنل مورد استفاده در سیستم فعلی را شامل می‌شود\. برای نمونه اگر میزبان فاقد تراشه TPM2 باشد ماژول‌های tpm نادیده گرفته می‌شوند\. ایمیج فراگیر شامل ماژول‌های کرنل و ابزارهای متعددی است که ممکن است در طیف گسترده‌ای از پیکربندی‌های سخت‌افزاری لازم باشند\. .IP "\(bu" 4 \fBmodules\fR فهرستی جداشده با کاما از ماژول‌های اضافی برای افزودن به ایمیج یا حذف از ایمیج تولیدی است\. می‌توان از نام ماژول یا مسیری نسبی نسبت به پوشه ماژول‌ها (/usr/lib/modules/$KERNEL_VERSION) استفاده کرد\. پسوند الگوریتم فشرده‌سازی (مانند "\.xz"، "\.gz") می‌تواند از نام فایل ماژول حذف شود\. اگر موردی با علامت منها (\fB\-\fR) شروع شود به معنای "این ماژول به ایمیج اضافه نشود" است، در غیر این صورت ماژول‌ها اضافه خواهند شد\. اگر مسیر با علامت اسلش (/) خاتمه یابد، به عنوان یک دایرکتوری در نظر گرفته شده و تمام ماژول‌های موجود در آن به صورت بازگشتی اضافه می‌شوند\. نماد ویژه \fB*\fR (ستاره) به معنی همه ماژول‌هاست\. از این نماد می‌توان برای افزودن همه ماژول‌ها یا حذف تمام ماژول‌های از پیش تعریف‌شده از ایمیج استفاده کرد\. همچنین Booster وابستگی‌های ماژول را در نظر می‌گیرد، بنابراین تمام وابستگی‌های ماژول‌های مشخص‌شده نیز به ایمیج اضافه خواهند شد\. .IP "\(bu" 4 \fBmodules_force_load\fR فهرستی از نام‌های ماژول‌ها است که در طول فرایند راه‌اندازی و پیش از انتقال به فضای کاربری به اجبار بارگذاری می‌شوند\. هر ماژول در این فهرست به طور خودکار به ایمیج افزوده می‌شود، بنابراین نیازی به تکرار آن در ویژگی \fBmodules\fR نیست\. .IP "\(bu" 4 \fBappend_all_modaliases\fR پرچمی بولی است که به booster دستور می‌دهد تمام نام‌های مستعار ماژول‌های میزبان را به ایمیج booster بیفزاید\. این پرچم هنگام عیب‌یابی مشکلات اتمام مهلت زمانی (timeout) در راه‌اندازی که ناشی از نبود برخی ماژول‌های مهم در ایمیج است، کاربرد دارد\. تنظیم این پرچم روی \fBtrue\fR به چاپ نام ماژول‌هایی کمک می‌کند که توسط کرنل درخواست شده اما در ایمیج موجود نبوده‌اند\. .IP "\(bu" 4 \fBcompression\fR پرچمی است که شیوه فشرده‌سازی فایل initramfs خروجی را تعیین می‌کند\. الگوریتم‌هایی که اکنون پشتیبانی می‌شوند عبارتند از "zstd"، "gzip"، "xz"، "lz4" و "none"\. اگر هیچ گزینه‌ای مشخص نشود، "zstd" به عنوان فشرده‌سازی پیش‌فرض اعمال می‌شود\. .IP "\(bu" 4 \fBmount_timeout\fR مهلت زمانی برای انتظار جهت پدیدار شدن سیستم فایل ریشه است\. قالب این فیلد شامل یک عدد اعشاری و سپس واحد زمانی است\. واحدهای معتبر عبارتند از "s" (ثانیه)، "m" (دقیقه)، "h" (ساعت)\. چنانچه مقداری تعیین نشود، مهلت پیش‌فرض (۳ دقیقه) منظور خواهد شد\. برای غیرفعال‌سازی کامل مهلت، مقدار "0s" را مشخص کنید\. .IP "\(bu" 4 \fBstrip\fR پرچمی بولی است که پیراستن (حذف نمادهای اشکال‌زدایی یا strip کردن) فایل‌های ELF را پیش از افزودن آن‌ها به ایمیج فعال می‌کند\. باینری‌ها، کتابخانه‌های اشتراکی و ماژول‌های کرنل نمونه‌هایی از فایل‌های ELF هستند که توسط ابزار یونیکسی strip پردازش می‌شوند\. .IP این گزینه با ماژول‌های امضاشده سازگار نیست\. چنانچه با خطای بوت \fBbooster: finit(crc32,generic): key was rejected by service\fR مواجه شدید، لطفاً گزینه \fBstrip\fR در پیکربندی را برابر با \fBfalse\fR قرار دهید\. .IP "\(bu" 4 \fBextra_files\fR فهرستی جداشده با کاما از فایل‌های جانبی برای افزودن به ایمیج است\. اگر موردی با اسلش ("/") شروع شود، مسیری مطلق در نظر گرفته می‌شود؛ در غیر این صورت مسیری نسبی نسبت به /usr/bin خواهد بود\. اگر مورد مزبور یک دایرکتوری باشد، محتوای آن به صورت بازگشتی افزوده می‌شود\. چند حالت ویژه وجود دارد: .IP "\(bu" 4 افزودن \fBbusybox\fR به ایمیج، پوسته اضطراری را در صورت بروز وحشت کرنل (panic) در طول فرایند راه‌اندازی فعال می‌کند\. .IP "\(bu" 4 افزودن \fBfsck\fR بررسی سیستم فایل در زمان راه‌اندازی را فعال می‌کند\. این امر همچنین نیازمند افزودن باینری اختصاصی سیستم فایل با نام \fBfsck\.$rootfstype\fR به ایمیج است\. سیستم‌های فایل به طور خودکار اصلاح می‌شوند و چنانچه با شکست مواجه شود، راه‌اندازی متوقف شده و اصلاح سیستم فایل ریشه بر عهده کاربر خواهد بود\. .IP "" 0 .IP "\(bu" 4 \fBvconsole\fR پرچمی است که پیکربندی کنسول در مراحل اولیه راه‌اندازی را فعال می‌سازد\. چنانچه روی \fBtrue\fR تنظیم شود، booster پیکربندی را از \fB/etc/vconsole\.conf\fR و \fB/etc/locale\.conf\fR خوانده و نگاشت کلید (keymap) و فونت‌های مورد نیاز را به ایمیج تولیدی می‌افزاید\. ویژگی‌های پیکربندی زیر مد نظر قرار می‌گیرند: \fBKEYMAP\fR، \fBKEYMAP_TOGGLE\fR، \fBFONT\fR، \fBFONT_MAP\fR و \fBFONT_UNIMAP\fR\. همچنین به راهنمای vconsole\.conf در \fIhttps://man\.archlinux\.org/man/vconsole\.conf\.5\.en\fR مراجعه نمایید\. .IP "\(bu" 4 \fBenable_lvm\fR پرچمی است که سرهم‌بندی و فعال‌سازی حجم‌های LVM را در زمان راه‌اندازی فعال می‌کند\. این پرچم همچنین اطمینان حاصل می‌کند که تمام ماژول‌ها و باینری‌های مورد نیاز به ایمیج افزوده شده‌اند\. .IP "\(bu" 4 \fBenable_mdraid\fR پرچمی است که سرهم‌بندی MdRaid را در زمان راه‌اندازی فعال می‌کند\. این پرچم همچنین افزوده شدن تمام ماژول‌ها و باینری‌های لازم به ایمیج را تضمین می‌نماید\. .IP "\(bu" 4 \fBenable_zfs\fR پرچمی است که سیستم فایل ZFS را به عنوان سیستم فایل ریشه فعال می‌کند\. این پرچم نیز از اضافه شدن تمامی ماژول‌ها و باینری‌های لازم به ایمیج مطمئن می‌شود\. توجه داشته باشید که در صورت فعال بودن ZFS، باید به جای گزینه بوت \fBroot=\fR از گزینه بوت \fBzfs=\fR استفاده شود\. .IP "\(bu" 4 \fBcrypttab_path\fR مسیر فایل crypttab برای خواندن در زمان ساخت ایمیج است\. در صورت عدم تنظیم، به طور پیش‌فرض \fB/etc/crypttab\fR است\. می‌تواند با پرچم \fB\-\-crypttab\fR بازنویسی شود\. در صورت تنظیم، هرگونه خطای خواندن به عنوان شکست گزارش می‌شود\. .IP "\(bu" 4 \fBenable_plymouth\fR پرچمی است که پشتیبانی از صفحه بارگذاری گرافیکی (boot splash) پلای‌موث (Plymouth) را فعال می‌کند\. در صورت فعال‌سازی، booster دیمن Plymouth، افزونه‌ها، پوسته و فونت‌ها را درون initramfs بسته‌بندی می‌کند\. درایور کارت گرافیک (GPU) باید در \fBmodules_force_load\fR گنجانده شود\. همچنین پارامترهای کرنل \fBquiet splash\fR مورد نیاز هستند\. دقت فرمایید که \fBbooster\.log=console\fR با نمایش گرافیکی Plymouth ناسازگار است؛ هرگاه گزارش‌گیری در کنسول فعال باشد، Plymouth به افزونه جزئیات (details - جایگزین متنی) بازمی‌گردد\. .IP "\(bu" 4 \fBenable_fido2\fR پرچمی بولی است که پشتیبانی از توکن سخت‌افزاری FIDO2 را فعال می‌سازد\. .IP "\(bu" 4 \fBserialize_tokens\fR باعث می‌شود booster توکن‌های LUKS یک دستگاه را به ترتیب شناسه توکن صعودی و تک‌به‌تک بیازماید، نه این‌که آن‌ها را به طور هم‌زمان و رقابتی اجرا کند (پیش‌فرض غیرفعال است)\. در نتیجه یک توکن غیرتعاملی (مانند TPM2 صرفاً مبتنی بر PCR، یا FIDO2 بدون لمس، یا clevis) که پیش از توکن مبتنی بر PIN ثبت شده است، دستگاه را پیش از رسیدن به اعلان دریافت PIN بازگشایی می‌کند\. هر توکن غیرتعاملی با یک مهلت زمانی بر پایه نوع خود محدود می‌شود تا توکن معلق‌مانده موجب توقف کل فرایند بوت نشود؛ با پایان مهلت، booster به سراغ توکن بعدی می‌رود\. توکن‌های PIN مشمول مهلت زمانی نیستند (زدن Enter خالی مستقیماً از آن‌ها رد می‌شود)\. کلیدها: .IP "\(bu" 4 \fBserialize_tokens\.enabled\fR \(em بولی، پیش‌فرض \fBfalse\fR\. .IP "\(bu" 4 \fBserialize_tokens\.clevis_timeout\fR / \fBserialize_tokens\.tpm2_timeout\fR / \fBserialize_tokens\.fido2_timeout\fR \(em محدودیت‌های زمانی برای هر توکن نظیر clevis، ماژول \fBsystemd\-tpm2\fR بدون PIN، و \fBsystemd\-fido2\fR بدون PIN\. با قالب مدت زمان زبان Go\. مقادیر پیش‌فرض عبارتند از \fB45s\fR / \fB15s\fR / \fB30s\fR\. تا زمانی که \fBserialize_tokens\.enabled\fR تنظیم نشده باشد بی‌اثر است\. .IP "" 0 .IP "\(bu" 4 \fBtoken_timeout\fR (در سطح بالایی، در هر دو حالت اعمال می‌شود) مدت زمانی را محدود می‌کند که booster در انتظار توکن‌ها می‌ماند پیش از آن‌که اعلان دریافت گذرواژه صفحه‌کلید را \fIنیز\fR آغاز نماید\. توکن‌ها پس از ظاهر شدن اعلان همچنان به رقابت ادامه می‌دهند؛ هر مسیری که زودتر به نتیجه برسد مسیر دیگر را کنار می‌زند (به \fBهم‌زمانی بازگشایی LUKS و ترتیب اعلان‌ها (LUKS unlock concurrency and prompt order)\fR در بخش یادداشت‌ها مراجعه کنید)\. این گزینه معادل \fBtoken\-timeout=\fR در crypttab/\fBrd\.luks\.options\fR درون پیکربندی booster است (به \fBrd\.luks\.options\fR ذیل \fBپارامترهای کرنل در زمان راه‌اندازی (BOOT TIME KERNEL PARAMETERS)\fR رجوع نمایید)\. با قالب مدت زمان Go\. اولویت‌ها از بالاترین به پایین‌ترین عبارتند از: .IP "1." 4 گزینه صریح \fBtoken\-timeout=\fR به ازای هر دستگاه \(em در خط فرمان کرنل (\fBrd\.luks\.options\fR) یا در crypttab؛ چنانچه هر دو برای یک دستگاه مشخص شده باشند، مقدار خط فرمان اولویت دارد\. .IP "2." 4 همین گزینه \fBtoken_timeout\fR\. .IP "3." 4 در حالت ترتیبی (serialize)، مجموع مهلت‌های زمانی اختصاصی توکن‌های دستگاه (به طوری که اعلان صفحه‌کلید هیچ‌گاه پیش از رسیدن نوبت به یک توکن، جای آن را نگیرد)\. .IP "4." 4 مقدار پیش‌فرض \fB30s\fR\. .IP "" 0 .IP در حالت ترتیبی توصیه می‌شود \fBtoken_timeout\fR را بدون مقدار رها کنید تا اولویت سطح ۳ اعمال شود: تعیین یک مقدار ثابت کوتاه‌تر از زنجیره توکن‌ها می‌تواند موجب شود پیش از رسیدن نوبت یک توکن، اعلان صفحه‌کلید نمایش داده شود\. .IP "\(bu" 4 \fBpin_delay\fR همتای حالت هم‌زمان برای \fBserialize_tokens\fR است: نخستین اعلان تعاملی دریافت PIN (نظیر TPM2\-PIN و FIDO2\-PIN) را به این مدت متوقف نگه می‌دارد تا یک توکن غیرتعاملی موازی بتواند زودتر قفل را باز کند و در نتیجه اعلان هرگز بر صفحه نقش نبندد \(em چنانچه توکنی برنده شود پیش از رسم اعلان لغو می‌گردد، و اگر مهلت سپری شود طبق روال معمول نشان داده خواهد شد (هیچ مسیر بازگشایی از دست نمی‌رود؛ این تاخیر صرفاً نمایش اعلان را به تعویق می‌اندازد)\. با مدت زمان Go؛ در صورت عدم تعیین (پیش‌فرض) به معنی عدم تاخیر است\. در حالت ترتیبی یا هنگامی که هیچ توکن موازی بدون PIN ثبت نشده باشد (دستگاهی که فقط دارای PIN است فوراً اعلان را نشان می‌دهد) بی‌اثر خواهد بود\. مقدار آن را بیشتر از زمان واقعی بازگشایی توکنِ در حال رقابت تنظیم کنید \(em راه‌اندازی سخت‌افزاری TPM2/FIDO2، یا در مورد clevis تبادل شبکه/DHCP \(em اما بسیار کمتر از \fBtoken_timeout\fR؛ در غیر این صورت اعلان همچنان نمایش خواهد یافت\. چند ثانیه برای آزادسازی سریع TPM2 بر پایه PCR مناسب است؛ برای clevis روی شبکه یا ایمیج فراگیر با بارگذاری کند ماژول‌ها، زمان بیشتری لازم است\. .IP "" 0 .P هنگامی که اصلاح فایل پیکربندی خود را به پایان بردید و مایل به تولید مجدد ایمیج‌های booster در مسیر \fB/boot\fR بودید، لطفاً از \fB/usr/lib/booster/regenerate_images\fR استفاده نمایید\. این یک اسکریپت کاربردی است که همان نوع تولید مجدد ایمیج را اجرا می‌کند که گویی \fBbooster\fR را با مدیر بسته خود نصب کرده‌اید\. .SH "فلگ‌های خط فرمان (COMMAND\-LINE FLAGS)" .SS "گزینه‌های برنامه (Application Options)" .IP "\(bu" 4 \fB\-v\fR, \fB\-\-verbose\fR فعال‌سازی خروجی با جزئیات کامل .IP "" 0 .SS "زیرفرمان‌ها (SUBCOMMANDS)" .SS "ساخت (build)" ساخت ایمیج initrd\. نحوه استفاده: \fBbooster [OPTIONS] build [build\-OPTIONS] output\fR .IP "\(bu" 4 \fB\-f\fR, \fB\-\-force\fR بازنویسی فایل initrd موجود\. .IP "\(bu" 4 \fB\-\-init\-binary\fR <پیش‌فرض: \fI/usr/lib/booster/init\fR> مسیر قرارگیری فایل باینری 'init' در Booster\. .IP "\(bu" 4 \fB\-\-compression\fR <پیش‌فرض: \fIzstd\fR> شیوه فشرده‌سازی فایل خروجی\. مقادیر ممکن: \fIzstd\fR، \fIgzip\fR، \fIxz\fR، \fIlz4\fR، \fInone\fR\. .IP "\(bu" 4 \fB\-\-kernel\-version\fR نسخه کرنل لینوکس برای تولید initramfs\. .IP "\(bu" 4 \fB\-\-config\fR <پیش‌فرض: \fI/etc/booster\.yaml\fR> مسیر فایل پیکربندی\. .IP "\(bu" 4 \fB\-\-universal\fR افزودن طیف گسترده‌ای از ماژول‌ها/ابزارها جهت امکان راه‌اندازی این ایمیج بر روی دستگاه‌های گوناگون\. .IP "\(bu" 4 \fB\-\-strip\fR پیراستن و حذف نمادهای فایل‌های ELF (باینری‌ها، کتابخانه‌های اشتراکی و ماژول‌های کرنل) پیش از افزودن آن‌ها به ایمیج\. .IP "\(bu" 4 \fB\-\-crypttab\fR <پیش‌فرض: \fI/etc/crypttab\fR> مسیر فایل crypttab جهت خواندن در زمان ساخت ایمیج\. بر \fBcrypttab_path\fR تعیین‌شده در فایل پیکربندی اولویت دارد\. اگر هیچ‌کدام تنظیم نشده باشند، booster مسیر \fB/etc/crypttab\fR را خوانده و در صورت عدم وجود یا غیرقابل خواندن بودن فایل، بی سر و صدا از آن می‌گذرد\. در صورت تعیین صریح، هرگونه خطای خواندن به منزله شکست گزارش می‌شود\. .IP "" 0 .SS "مشاهده محتوا (cat)" نمایش محتوای فایل درون ایمیج\. نحوه استفاده: \fBbooster [OPTIONS] cat image file\-in\-image\fR .SS "فهرست (ls)" فهرست کردن محتویات ایمیج\. نحوه استفاده: \fBbooster [OPTIONS] ls image\fR .SS "استخراج (unpack)" استخراج ایمیج\. نحوه استفاده: \fBbooster [OPTIONS] unpack image output\-dir\fR .SH "پارامترهای هسته در زمان راه‌اندازی (BOOT TIME KERNEL PARAMETERS)" بخشی از عملکردهای راه‌اندازی booster را می‌توان با پارامترهای راه‌اندازی هسته تغییر داد\. این پارامترها معمولاً از طریق پیکربندی بارگذار بوت (bootloader) تنظیم می‌شوند\. راه‌اندازی Booster از این پارامترهای هسته استفاده می‌کند: .IP "\(bu" 4 \fBroot=$deviceref\fR ارجاع دستگاه به دستگاه ریشه (root)\. برای چگونگی تعیین آن بخش "ارجاع دستگاه (Device Reference)" در یادداشت‌ها (NOTES) را ببینید، و بخش "کشف پارتیشن ریشه (ROOT PARTITION DISCOVERY)" را برای نحوه مدیریت ریشه‌های بدون رمزگذاری، LUKS و خودکار کشف‌شده توسط booster مشاهده کنید\. .IP "\(bu" 4 \fBrootfstype=$TYPE\fR (مانند rootfstype=ext4)\. به طور پیش‌فرض booster تلاش می‌کند نوع سیستم فایل ریشه را شناسایی کند\. اما اگر شناسایی خودکار عمل نکند، این پارامتر هسته سودمند خواهد بود\. همچنین لطفاً یک تیکت گزارش ارسال کنید تا بتوانیم کُد تشخیص نوع فایل را بهبود بخشیم\. .IP "\(bu" 4 \fBrootflags=$OPTIONS\fR گزینه‌های سوار کردن (mount) برای سیستم فایل ریشه، به عنوان نمونه rootflags=user_xattr,nobarrier\. در حالت کشف خودکار پارتیشن، ویژگی ۶۰ در GPT (یعنی "فقط‌خواندنی") در نظر گرفته می‌شود\. .IP "\(bu" 4 \fBrd\.luks\.uuid=$UUID\fR شناسه یکتای (UUID) پارتیشن LUKS که پارتیشن ریشه درون آن قرار دارد\. booster تلاش خواهد کرد قفل این دستگاه LUKS را باز کند\. .IP "\(bu" 4 \fBrd\.luks\.name=$UUID=$NAME\fR مشابه پارامتر rd\.luks\.uuid است اما نام مورد استفاده برای باز کردن دستگاه LUKS را نیز مشخص می‌کند\. .IP "\(bu" 4 \fBrd\.luks\.key=$UUID=$PATH\fR مسیر مطلق فایل کلید (keyfile) در initrd/initramfs که می‌تواند برای بازگشایی قفل دستگاه با UUID مشخص استفاده شود؛ اگر این فایل وجود نداشته باشد یا در بازگشایی قفل ناموفق باشد، به درخواست گذرواژه از کاربر بازمی‌گردد\. .IP "\(bu" 4 \fBrd\.luks\.header=$UUID=$PATH\fR سرایند (header) مجزای LUKS برای دستگاهی که با \fB$UUID\fR مشخص شده است\. \fB$PATH\fR می‌تواند سه شکل داشته باشد: .IP "\(bu" 4 \fBفایل در Initramfs\fR \(em یک مسیر مطلق (مانند \fB/etc/luks/root\.hdr\fR) به یک فایل سرایند که در زمان ساخت ایمیج از طریق \fBextra_files\fR درون initramfs قرار گرفته است\. .IP "\(bu" 4 \fBدستگاه بلوکی خام (Raw block device)\fR \(em مسیر دستگاه (مانند \fB/dev/sdb\fR) که در آن سرایند LUKS از افست بایت صفر آغاز می‌شود\. Booster منتظر ظاهر شدن دستگاه می‌ماند و آن را مستقیماً و بدون سوار کردن به cryptsetup ارسال می‌کند\. .IP "\(bu" 4 \fBفایل روی دستگاهی جداگانه\fR \(em به شکل \fB$path:$deviceref\fR که در آن \fB$deviceref\fR یکی از موارد \fBUUID=\|\.\|\.\|\.\fR، \fBLABEL=\|\.\|\.\|\.\fR، \fBPARTUUID=\|\.\|\.\|\.\fR، یا \fBPARTLABEL=\|\.\|\.\|\.\fR است\. Booster دستگاه را به صورت فقط‌خواندنی سوار می‌کند، فایل سرایند را می‌خواند، و سپس پیش از بازگشایی قفل آن را پیاده‌سازی (unmount) می‌کند\. .IP "" 0 .IP "\(bu" 4 \fBrd\.luks\.options=opt1,opt2\fR فهرستی جداشده با کاما از پرچم‌های LUKS\. گزینه‌های پشتیبانی‌شده عبارتند از \fBdiscard\fR، \fBsame\-cpu\-crypt\fR، \fBsubmit\-from\-crypt\-cpus\fR، \fBno\-read\-workqueue\fR، \fBno\-write\-workqueue\fR\. گزینه \fBtoken\-timeout=\fR مدت زمان انتظار برای توکن‌های سخت‌افزاری (FIDO2، TPM2) پیش از درخواست گذرواژه از صفحه‌کلید را تعیین می‌کند\. این گزینه یک عدد اعشاری همراه با یک واحد زمانی (\fBs\fR، \fBm\fR، \fBh\fR)، یا یک عدد صحیح به عنوان ثانیه را می‌پذیرد\. مقدار پیش‌فرض ۳۰ ثانیه (30 s) است\. توجه داشته باشید که booster از پرچم‌های ماندگار LUKS v2 که با فراداده‌های پارتیشن ذخیره شده‌اند نیز پشتیبانی می‌کند\. هر گزینه خط فرمان علاوه بر پرچم‌های ماندگار اعمال می‌شود\. .IP "\(bu" 4 \fBrd\.modules_force_load\fR فهرستی جداشده با کاما از ماژول‌های اضافی هسته که باید به اجبار بارگذاری شوند\. .IP "\(bu" 4 \fBresume=$deviceref\fR ارجاع دستگاه به دستگاه ذخیره وضعیت روی دیسک (suspend\-to\-disk / هایبرنیت)\. .IP "\(bu" 4 \fBzfs=$pool/$dataset\fR مشخص می‌کند که کدام دیتاست ZFS باید برای پارتیشن ریشه استفاده شود\. این گزینه تنها در صورتی استفاده می‌شود که گزینه پیکربندی ZFS فعال باشد\. اگر سیستم فایل ZFS فعال باشد، پارامتر راه‌اندازی \fBroot=\fR نادیده گرفته می‌شود\. .IP "\(bu" 4 \fBbooster\.log\fR پیکربندی ثبت رویدادهای init در booster\. فهرستی جداشده با کاما از مقادیر زیر را می‌پذیرد: .IP یکی از مقادیر سطوح گزارش (از جزئیات بیشتر به کمتر) \- \fBdebug\fR، \fBinfo\fR، \fBwarning\fR، \fBerror\fR یا \fBnull\fR\. سطح پایانی \fBnull\fR تمام ثبت رویدادها را غیرفعال می‌کند، بنابراین \fI⚠️تنها زمانی از آن استفاده کنید که کاملاً به کار خود آگاهید⚠️\fR\. اگر سطح مشخص نشود، مقدار پیش‌فرض \fBinfo\fR به کار می‌رود\. .IP \fBconsole\fR \- چاپ رویدادهای init بوستر در کنسول\. .IP گزارش اشکال‌زدایی (debug) همچنین در بافر kmsg هسته چاپ می‌شود و برای خواندن با دستور \fBdmesg\fR یا \fBjournalctl \-b\fR در دسترس است\. در صورت فعال بودن سطح debug، محدودسازی نرخ kmsg به طور خودکار غیرفعال می‌شود\. .IP "\(bu" 4 \fBbooster\.debug\fR گزینه‌ای منسوخ‌شده که معادل \fBbooster\.log=debug,console\fR است\. .IP "\(bu" 4 \fBquiet\fR تنظیم سطح گزارش‌دهی init بوستر به کمترین مقدار\. اگر \fBbooster\.debug\fR یا \fBbooster\.log\fR تنظیم شده باشند، این گزینه نادیده گرفته می‌شود\. .IP "\(bu" 4 \fBinit=$PATH\fR مسیر باینری init فضای کاربری\. اگر مشخص نشود، مقدار پیش‌فرض \fB/sbin/init\fR استفاده می‌شود\. .IP "" 0 .SH "کشف پارتیشن ریشه (ROOT PARTITION DISCOVERY)" ابزار Booster سیستم فایل ریشه را از خط فرمان هسته (kernel cmdline) شناسایی کرده و چنانچه رمزگذاری شده باشد، ظرف LUKS را پیش از سوار کردن بازگشایی می‌کند\. بیشتر پیکربندی‌ها با یکی از ساختارهای زیر هماهنگ هستند\. .SS "ریشه بدون رمزگذاری (Unencrypted root)" .nf root=UUID= .fi .P مسیرهای \fBPARTUUID=\fR، \fBLABEL=\fR، یا مسیری به شکل \fB/dev/\|\.\|\.\|\.\fR نیز قابل استفاده هستند\. .SS "ریشه رمزگذاری‌شده (LUKS) (Encrypted (LUKS) root)" چهار شیوه برای راه‌اندازی آن وجود دارد\. هر روشی که با بارگذار بوت و ابزارهای کنونی شما سازگارتر است را برگزینید\. .P \fBنام‌گذاری از طریق cmdline\.\fR .IP "" 4 .nf rd\.luks\.name== root=/dev/mapper/ .fi .IP "" 0 .P برای مجموعه کامل گزینه‌ها، پارامترهای \fBrd\.luks\.name\fR، \fBrd\.luks\.uuid\fR و موارد وابسته را در بخش "پارامترهای هسته در زمان راه‌اندازی (BOOT TIME KERNEL PARAMETERS)" ببینید\. .P \fBنام‌گذاری از طریق /etc/crypttab\.\fR افزودن مدخلی نشانه‌گذاری‌شده با \fBx\-initrd\.attach\fR؛ ستون نخست به عنوان نام نگاشت‌کننده (mapper name) تعیین می‌شود\. آن را همراه با \fBroot=/dev/mapper/\fR در cmdline به کار برید\. برای ساختار دستور و قواعد بسته‌بندی، بخش جدول رمزگذاری (CRYPTTAB) در ادامه را ببینید\. .P \fBنام‌گذاری خودکار (Auto\-named)\.\fR در نبود \fBrd\.luks\.*\fR در خط فرمان هسته و نبود مدخل crypttab برای این حجم ذخیره‌سازی، مقدار \fBroot=\fR را مستقیماً به ظرف LUKS ارجاع دهید: .IP "" 4 .nf root=UUID= .fi .IP "" 0 .P ابزار Booster آن را به عنوان \fB/dev/mapper/root\fR بازگشایی کرده و سوار می‌کند\. مقادیر \fBPARTUUID=\fR، \fBLABEL=\fR، یا مسیر \fB/dev/\|\.\|\.\|\.\fR که به ظرف دیسک ارجاع دهد نیز کارآمد خواهند بود\. .P \fBبدون نیاز به پارامترهای هسته (Zero kernel parameters)\.\fR پارتیشن را با GUID ریشه مربوط به معماری پردازنده خود نشانه‌گذاری کنید تا booster بدون نیاز به هیچ آرگومان \fBroot=\fR آن را کشف کند\. بخش "کشف خودکار GPT" در ادامه را ببینید\. .SS "کشف خودکار GPT (بدون cmdline) (GPT autodiscovery (no cmdline at all))" با استفاده از هر ویرایشگر GPT (نظیر gdisk، sgdisk، fdisk، cfdisk، parted، \|\.\|\.\|\.) نوع پارتیشن ریشه را روی "Linux root" برای معماری پردازنده خود قرار دهید\. برای مثال در معماری x86\-64 با ابزار gdisk، کد نوع پارتیشن \fB8304\fR است\. سایر ابزارها و معماری‌ها میانبرهای متفاوتی به کار می‌برند؛ فهرست نوع‌ها در ویرایشگر خود را بررسی کنید\. فهرست کامل GUIDهای متناسب با معماری در مشخصات پارتیشن‌های کشف‌پذیر (Discoverable Partitions Specification) در نشانی \fIhttps://uapi\-group\.org/specifications/specs/discoverable_partitions_specification/\fR آمده است\. .P همان شناسه GUID برای هر دو نوع سیستم فایل ساده و ریشه‌های رمزگذاری‌شده با LUKS کاربرد دارد \(em booster هر دو حالت را مدیریت می‌کند\. Booster تنها دیسکی را پویش می‌کند که شامل پارتیشن فعال سیستم EFI (ESP) باشد؛ پارتیشن‌های نشانه‌گذاری‌شده به عنوان ریشه روی سایر دیسک‌ها نادیده گرفته می‌شوند\. دقیقاً یک پارتیشن را روی آن دیسک نشانه‌گذاری کنید\. .SS "هنگام توقف راه‌اندازی (When boot stalls)" اگر \fBroot=/dev/mapper/\fR تنظیم شده باشد اما هیچ منبعی از موارد بالا آن نگاشت را ایجاد نکند، booster عبارت زیر را چاپ می‌کند: .IP "" 4 .nf root=/dev/mapper/ but no LUKS unlock spec was found for "" .fi .IP "" 0 .P و سپس در مهلت زمانی سوار کردن متوقف می‌شود\. یکی از دستورالعمل‌های بازگشایی بالا را اضافه کرده و مجدداً ایمیج را بسازید\. .SH "جدول رمزگذاری (CRYPTTAB)" ابزار Booster از بازگشایی حجم‌های ذخیره‌سازی LUKS تعریف‌شده در \fB/etc/crypttab\fR پشتیبانی می‌کند (به crypttab(5) در \fIhttps://man7\.org/linux/man\-pages/man5/crypttab\.5\.html\fR مراجعه کنید)\. تنها مدخل‌هایی که با گزینه \fBx\-initrd\.attach\fR نشانه‌گذاری شده‌اند، در زمان ساخت ایمیج درون initramfs قرار می‌گیرند\. تولیدکننده باید بتواند فایل را بخواند \(em برنامه را به عنوان کاربر ریشه (root) اجرا کنید، یا با پارامتر \fB\-\-crypttab \fR مسیری به یک نسخه قابل خواندن توسط کاربر به آن بدهید\. .P هنگامی که هر دو پارامتر خط فرمان \fBrd\.luks\.*\fR و مدخل crypttab به یک دستگاه اشاره دارند، پارامترهای خط فرمان برای ارجاع به دستگاه، نام نگاشت و هر گزینه امنیتی (مانند keyfile، header، tries، token\-timeout و غیره) که صراحتاً تعیین شده است اولویت دارند؛ مدخل crypttab تنها گزینه‌هایی را فراهم می‌کند که خط فرمان بدون مقدار گذاشته است\. مدخل‌های crypttab برای دستگاه‌هایی که با \fBrd\.luks\.*\fR پوشش داده نشده‌اند، به عنوان نگاشت‌های تازه اضافه می‌شوند\. .P رفتارهای ویژه Booster برای برخی گزینه‌های برگزیده: .IP "\(bu" 4 \fBkeyfile\fR \fB/path:UUID=xxx\fR (یا \fBLABEL=\fR، \fBPARTUUID=\fR، \fBPARTLABEL=\fR) \(em فایل کلید روی دستگاهی جداگانه\. Booster دستگاه را هنگام راه‌اندازی به صورت فقط‌خواندنی سوار می‌کند، کلید را می‌خواند، و سپس آن را پیاده‌سازی می‌کند\. این فایل درون initramfs گنجانده نمی‌شود\. .IP "\(bu" 4 \fB\fBheader=\fR\fR \(em چنانچه مسیر یک مسیر مطلق ساده باشد، تولیدکننده فایل را به طور خودکار درون initramfs بسته‌بندی می‌کند\. قالب \fB/path:deviceref\fR دستگاه را هنگام راه‌اندازی سوار می‌کند؛ قالب \fB/dev/\|\.\|\.\|\.\fR از دستگاه بلوکی خام مستقیماً استفاده می‌کند\. .IP "\(bu" 4 \fB\fBfido2\-device=\fR\fR \(em هنگامی که این گزینه در یک مدخل crypttab ظاهر شود، تولیدکننده به طور خودکار ماژول \fBfido2plugin\.so\fR را درون ایمیج قرار می‌دهد؛ نیازی به تعیین \fBenable_fido2: true\fR در فایل پیکربندی نیست\. هر دو گزینه \fBfido2\-device=\fR و \fBtpm2\-device=\fR در غیر این صورت صرفاً برای سازگاری پذیرفته می‌شوند؛ booster توکن‌های ثبت‌شده را از سرایند LUKS2 شناسایی می‌کند، نه از مقدار گزینه crypttab\. .IP "\(bu" 4 \fB\fBkeyfile\-timeout=\fR\fR / \fB\fBtoken\-timeout=\fR\fR \(em یک عدد صحیح ساده (به ثانیه) یا هر رشته بازه زمانی پذیرفته‌شده توسط تابع \fBtime\.ParseDuration\fR در زبان Go (مانند \fB30s\fR، \fB2m\fR) را می‌پذیرند\. .IP "" 0 .SH "بازگشایی از راه دور (REMOTE UNLOCK)" ابزار Booster می‌تواند قفل حجم‌های LUKS را در مراحل نخست راه‌اندازی از طریق یک کلاینت SSH راه دور بازگشایی کند\. کارگزار SSH به محض برقراری شبکه (دریافت اجاره DHCP یا پیکربندی \fBip\fR ایستا) آغاز به کار کرده و از کلاینت متصل‌شده درخواست گذرواژه LUKS می‌کند\. گذرواژه ارسالی برای تمام دستگاه‌های LUKS که در انتظار دریافت ورودی صفحه‌کلید هستند هم‌رسانی می‌شود؛ یک بازگشایی موفق حافظه پنهان گذرواژه درون راه‌اندازی را مقداردهی اولیه می‌کند تا حجم‌های همتا با کلید یکسان بدون نیاز به درخواست مجدد باز شوند\. این قابلیت معادل ساختار \fBdropbear\-initramfs\fR در دبیان است ولی به صورت محلی در booster وجود دارد \(em به جای بسته‌بندی dropbear از کتابخانه \fBgolang\.org/x/crypto/ssh\fR زبان Go بهره می‌گیرد\. .P تولید یک کلید میزبان برای یک‌بار (روی میزبان نگهداری شده و در زمان ساخت درون ایمیج تعبیه می‌شود): .IP "" 4 .nf $ ssh\-keygen \-t ed25519 \-f /etc/booster/ssh_host_ed25519_key \-N '' .fi .IP "" 0 .P ساخت فایل \fBauthorized_keys\fR شامل یک یا چند کلید عمومی، در هر سطر یک کلید: .IP "" 4 .nf ssh\-ed25519 AAAAC3Nz\|\.\|\.\|\.user1@laptop ssh\-ed25519 AAAAC3Nz\|\.\|\.\|\.user2@phone .fi .IP "" 0 .P پیوند هر دو فایل در \fB/etc/booster\.yaml\fR: .IP "" 4 .nf network: dhcp: on ssh_host_key: /etc/booster/ssh_host_ed25519_key ssh_authorized_keys: /etc/booster/authorized_keys ssh_listen: :22 .fi .IP "" 0 .P هر دو پارامتر \fBssh_host_key\fR و \fBssh_authorized_keys\fR در زمان ساخت ایمیج خوانده شده و درون initramfs جاسازی می‌شوند؛ تعیین یکی بدون دیگری خطای پیکربندی است\. استفاده از SSH همچنین نیازمند \fBnetwork\.dhcp: true\fR یا تعیین \fBnetwork\.ip\fR ایستا است\. .P اتصال به عنوان کاربر \fBroot\fR از سمت کلاینت و وارد کردن گذرواژه در خط فرمان: .IP "" 4 .nf $ ssh \-p 22 root@ .fi .IP "" 0 .P نکات امنیتی: .IP "\(bu" 4 احراز هویت تنها با کلید عمومی (Pubkey)؛ احراز هویت با گذرواژه پشتیبانی نمی‌شود\. تلاش‌های هر نشست به ۱۰ بار ارسال نادرست محدود شده و پس از آن اتصال قطع می‌شود؛ خود دست‌تکانی SSH باید ظرف ۱۵ ثانیه پایان یابد (محافظت در برابر حمله slow\-loris)\. .IP "\(bu" 4 کلید خصوصی میزبان و کلیدهای ثبت‌شده در \fBauthorized_keys\fR در زمان ساخت ایمیج خوانده شده و درون initramfs تعبیه می‌شوند\. هر فردی که دسترسی خواندن به \fB/boot\fR (یا فایل ایمیج) را داشته باشد می‌تواند هر دو را استخراج کند\. هرگاه دسترسی نامطمئن به \fB/boot\fR رخ داد، آن‌ها را افشا‌شده فرض کنید؛ برای بازتولید و تعویض کلید میزبان ایمیج را مجدداً بسازید\. .IP "\(bu" 4 اثر انگشت (fingerprint) کلید میزبان در راه‌اندازی‌های مجدد پایدار می‌ماند (تولید مجدد خودکار ندارد)، بنابراین فایل \fBknown_hosts\fR دگرگون نمی‌شود\. .IP "\(bu" 4 دسترسی به پورت SSH به همراه نسخه‌ای سرقت‌شده از هر کلید خصوصی موجود در \fBauthorized_keys\fR، برای مهاجم جهت آزمودن مکرر گذرواژه‌های LUKS روی سرور زنده کافی است\. اگرچه پس از ۱۰ بار ارسال نادرست نشست قطع می‌شود، اما هیچ مانعی برای اتصال دوباره و آزمودن ۱۰ بار دیگر توسط مهاجم وجود ندارد\. این سقف تنها سرعت حمله جستجوی فراگیر (brute force) را کاهش می‌دهد و مانع آن نمی‌شود \(em هر کسی که بتواند به پورت SSH دسترسی پیدا کند در موقعیتی تقریباً مشابه دسترسی مستقیم به اسلات کلید LUKS قرار دارد\. .IP "\(bu" 4 تنظیم \fBssh_listen: :22\fR روی تمام رابط‌های شبکه‌ای که هنگام راه‌اندازی بالا می‌آیند، هم روی IPv4 و هم روی IPv6 گوش فرا می‌دهد \(em از جمله آدرس‌های پیوند\-محلی IPv6 (\fBfe80::\|\.\|\.\|\.\fR) که بدون نیاز به DHCP پیکربندی خودکار می‌شوند\. برای اینکه تنها رابطی که واقعاً مد نظر دارید در دسترس باشد، مقدار \fBssh_listen\fR را روی یک آدرس مشخص (مانند \fB10\.0\.0\.5:22\fR) قفل کنید و پورت را در مرز شبکه با دیوار آتش محافظت نمایید\. .IP "\(bu" 4 نشست تنها به اعلان ورود گذرواژه محدود است \(em بدون شل، بدون اجرای دستور، بدون فوروارد پورت، بدون PAM و بدون تخصیص PTY\. .IP "" 0.SH "نکات (NOTES)" .SS "ارجاع به دستگاه (Device Reference)" ارجاع به دستگاه روشی برای مشخص کردن یک دستگاه یا افراز در پارامترهای هسته است\. در بالا با برچسب \fB$deviceref\fR مشخص شده است\. ارجاع به دستگاه یکی از مقادیر زیر را می‌پذیرد: .IP "\(bu" 4 \fB/dev/XXX\fR مسیر به پرونده دستگاه مشخص؛ می‌تواند مسیری به یک دستگاه/افراز واقعی مانند \fB/dev/sda1\fR، \fB/dev/nvme0n1\fR یا مسیری به دستگاه مجازی dm\-mapper مانند \fB/dev/mapper/root\fR یا \fB/dev/vg_mesos/lv_mesos_containers\fR باشد\. .IP "\(bu" 4 \fBUUID=$UUID\fR یا \fB/dev/disk/by\-uuid/$UUID\fR به دستگاه از طریق UUID سیستم‌فایل/LUKS آن ارجاع می‌دهد\. نکات مربوط به قواعد قالب‌بندی UUID را در زیر ببینید\. .IP "\(bu" 4 \fBLABEL=$LABEL\fR یا \fB/dev/disk/by\-label/$LABEL\fR به دستگاه از طریق برچسب سیستم‌فایل/LUKS آن ارجاع می‌دهد\. .IP "\(bu" 4 \fBPARTUUID=$UUID\fR یا \fB/dev/disk/by\-partuuid/$UUID\fR به دستگاه از طریق UUID افراز GPT ارجاع می‌دهد\. .IP "\(bu" 4 \fBPARTUUID=$UUID/PARTNROFF=$OFFSET\fR به دستگاه با انحراف $OFFSET از یک افراز GPT مشخص‌شده توسط $UUID ارجاع می‌دهد؛ مانند \fBPARTUUID=fd59d06d\-ffa8\-473b\-94f0\-6584cb2b6665/PARTNROFF=2\fR\. .IP "\(bu" 4 \fBPARTLABEL=$LABEL\fR یا \fB/dev/disk/by\-partlabel/$LABEL\fR به دستگاه از طریق برچسب افراز GPT ارجاع می‌دهد\. .IP "\(bu" 4 \fBHWPATH=$PATH\fR یا \fB/dev/disk/by\-path/$PATH\fR به دستگاه از طریق مسیر سخت‌افزاری قطعی ارجاع می‌دهد؛ مانند \fBpci\-0000:02:00\.0\-nvme\-1\-part2\fR\. .IP "\(bu" 4 \fBWWID=$ID\fR یا \fB/dev/disk/by\-id/$ID\fR به دستگاه از طریق wwid آن ارجاع می‌دهد؛ مانند \fBnvme\-KXG6AZNV256G_TOSHIBA_40SA13GZF6B1\-part3\fR .IP "" 0 .SS "پارامترهای UUID (UUID parameters)" پارامترهای راه‌اندازی مانند \fBroot=UUID=$UUID\fR و \fBrd\.luks\.uuid=$UUID\fR به شما امکان می‌دهند دستگاه بلوکی را با UUID آن مشخص کنید\. قالب UUID به‌صورت \fBxxxxxxxx\-xxxx\-xxxx\-xxxx\-xxxxxxxxxxxx\fR است که در آن \fBx\fR نمادی در مبنای شانزده به‌شکل حروف کوچک یا بزرگ است\. پارامتر UUID را می‌توان به‌صورت اختیاری در نشان نقل‌قول \fB"\fR قرار داد، هرچند پیشنهاد نمی‌شود\. نمونه‌های زیر قالب درست پارامترها را نشان می‌دهند: \fBroot=UUID=ac8299a8\-91ce\-4bf6\-a524\-55a62844b787\fR، \fBroot=UUID="ac8299a8\-91ce\-4bf6\-a524\-55a62844b787"\fR (پیشنهاد نمی‌شود)، \fBrd\.luks\.uuid=ac8299a8\-91ce\-4bf6\-a524\-55a62844b787\fR، \fBrd\.luks\.uuid="ac8299a8\-91ce\-4bf6\-a524\-55a62844b787"\fR (پیشنهاد نمی‌شود)\. .SS "ورود گذرواژه (Password entry)" کلیدهای ویرایشی فراتر از استاندارد: .IP "\(bu" 4 \fBCtrl+W\fR \(em پاک کردن واژه پیشین\. .IP "\(bu" 4 \fBCtrl+U\fR \(em پاک کردن تمام ورودی\. .IP "\(bu" 4 \fBTab\fR \(em تغییر وضعیت نمایانی نویسه‌های تایپ‌شده (ستاره‌ها ↔ نویسه‌های واقعی)\. .IP "" 0 .SS "همزمانی قفل‌گشایی LUKS و ترتیب اعلان‌ها (LUKS unlock concurrency and prompt order)" Booster مسیرهای قفل‌گشایی LUKS را برای هر حجم به‌صورت همگام اجرا می‌کند \(em توکن‌های ثبت‌شدهٔ چندگانه در صورت امکان به‌طور موازی فراخوانده می‌شوند، و اعلان دریافت عبارت‌عبور از صفحه‌کلید در کنار آن‌ها به‌عنوان راهکار پشتیبان اجرا می‌شود\. این زیربخش، ترتیب قطعی و رفتار لغو-پس-از-موفقیت (cancel\-on\-win) را که این موارد را به هم پیوند می‌دهد، خلاصه می‌کند\. .P \fBPIN\-token serialization\.\fR توکن‌هایی که به پین نیاز دارند (TPM2\-PIN، FIDO2\-PIN) به‌صورت ترتیبی و به ترتیب صعودی شناسه توکن LUKS2 اعلان می‌شوند \(em بوستر هرگز دو اعلان پین را برای یک صفحه‌کلید هم‌زمان به رقابت نمی‌اندازد\. توکن‌هایی که نیازی به پین ندارند (تنها TPM2 PCR، و FIDO2 بدون لمس) به‌طور موازی فرستاده می‌شوند و می‌توانند بدون نیاز به تعامل کاربر در این رقابت پیروز شوند\. برای پیش‌نمایش ترتیب اعلان پین در یک حجم، دستور \fBcryptsetup luksDump \fR را اجرا کرده و شناسه‌های توکن را بررسی کنید\. .P \fBFIDO2 credential pre\-flight\.\fR هنگامی که چندین توکن FIDO2 برای یک حجم LUKS ثبت شده باشد (برای نمونه یک کلید اصلی و یک پشتیبان)، بوستر پیش از درخواست پین، دستگاه منطبق را شناسایی می‌کند\. بوستر یک ادعای CTAP2 با \fBup=false\fR در برابر هر hidraw با قابلیت FIDO2 اجرا می‌کند و از اصالت‌سنج می‌پرسد آیا اعتبارنامه این حجم را در خود دارد یا خیر \(em دستگاه‌هایی که آن را ندارند بی‌صدا نادیده گرفته می‌شوند و توزیع‌کننده بدون درخواست پین برای کلید نادرست، به توکن بعدی FIDO2 (یا روش قفل‌گشایی بعدی) می‌رود\. توکن‌هایی که با \fBfido2\-uv\-required=true\fR ثبت شده‌اند از مرحله پیش‌بررسی عبور می‌کنند (مطابق CTAP 2\.1 \(sc7\.4) و مستقیماً به سراغ ادعای کامل می‌روند\. .P \fBCancel\-on\-win\.\fR هر اعلانی \(em عبارت‌عبور صفحه‌کلید، FIDO2\-PIN، یا TPM2\-PIN \(em هنگامی که یکی از مسیرهای قفل‌گشایی موازی پیروز شود (یک توکن بدون لمس کار را به پایان برساند، پرونده‌کلید حجم همتا با موفقیت خوانده شود، و غیره) به‌طور خودکار بسته می‌شود\. این موضوع هم بر کنسول هسته و هم بر صفحه بارگذاری Plymouth اعمال می‌گردد\. در Plymouth به‌محض دریافت Plymouth MR !393 اعلان روی صفحه بلافاصله در سمت سرور پاک می‌شود؛ ساخت‌های قدیمی‌تر Plymouth اعلان را در سمت سرور آزاد می‌کنند اما رابط کاربری آن را تا زمانی که صفحه بارگذاری به‌طریق دیگری پاک شود بر روی صفحه نگه می‌دارند\. .P \fBPIN attempt caps\.\fR هر توکن دارای پین تا ۳ بار تلاش را می‌پذیرد؛ ارسال یک پین خالی (تنها فشردن کلید Enter) باعث رد شدن از توکن و فراخوانی توکن بعدی می‌شود\. .SS "گزینش پودمان‌ها (Modules selection)" این یادداشتی برای خلاصه‌سازی الگوریتمی است که مشخص می‌کند چه پودمان‌هایی در تصویر نهایی booster قرار می‌گیرند\. فهرست اولیه پودمان‌ها برای booster عبارت است از \fBdefaultModulesList\fR \- مجموعه‌ای از پودمان‌های از پیش تعریف‌شده و سخت‌کدشده در \fBgenerator\.go\fR\. این‌ها پودمان‌های برگزیده‌ای هستند که به احتمال زیاد بیشتر نیازهای راه‌اندازی سیستم را پوشش می‌دهند \- راه‌اندازهای دیسک، سیستم‌فایل، صفحه‌کلید، tpm، اترنت و usb\. .P اگر گزینه پیکربندی \fBuniversal\fR روی false تنظیم شده باشد (مقدار پیش‌فرض)، اصطلاحاً از حالت میزبان (host mode) استفاده می‌شود؛ یعنی تصویر تنها با راه‌اندازهای موردنیاز سخت‌افزار میزبان کنونی تولید می‌شود\. برای دستیابی به این هدف، booster تمام پودمان‌های بارگذاری‌شده کنونی را از \fB/sys/module/\fR دریافت کرده و اشتراک آن‌ها را با \fBdefaultModulesList\fR محاسبه می‌کند\. .P سپس booster به گزینه پیکربندی \fBmodules\fR نگاه می‌کند که فهرستی از عناصر جداشده با کاما است\. این ابزار تمام عناصر را از چپ به راست پیمایش می‌کند\. قاعده پالایش حالت میزبان بر این فهرست پودمان‌های دستی اعمال نمی‌شود\. .P اگر عنصر با علامت منفی \fB\-\fR آغاز شود، پودمان‌های داده‌شده را از تصویر حذف می‌کند، در غیر این صورت پودمان‌ها به تصویر افزوده می‌شوند\. .P اگر عنصر نام یک پودمان باشد، آن پودمان افزوده/حذف می‌شود\. توجه داشته باشید که طبق قرارداد، نام یک پودمان هسته را می‌توان از روی نام پرونده آن با جایگزین کردن خط فاصله‌ها با زیرخط به دست آورد؛ برای نمونه، برای پودمان \fBhid\-apple\.ko\.gz\fR نام به‌صورت \fBhid_apple\fR خواهد بود\. .P اگر عنصر مسیری به پرونده پودمان نسبت به \fB/usr/lib/modules/$KERNEL_VERSION\fR باشد، پودمان افزوده/حذف می‌شود\. توجه داشته باشید که پسوند الگوریتم فشرده‌سازی را می‌توان از نام پرونده پودمان حذف کرد\. .P اگر عنصر با نماد اسلش \fB/\fR پایان یابد، پوشه‌ای نسبت به \fB/usr/lib/modules/$KERNEL_VERSION\fR در نظر گرفته می‌شود\. Booster این پوشه را به‌صورت بازگشتی پیمایش کرده و پودمان‌ها را به تصویر می‌افزاید/حذف می‌کند\. از علامت منفی نیز می‌توان برای پوشه‌ها استفاده کرد\. .P نماد ستاره \fB*\fR میان‌بری برای «همه پودمان‌ها» است و می‌توان از آن برای افزودن یا حذف همه پودمان‌ها از تصویر استفاده کرد\. .P سپس booster به سراغ گزینه \fBmodules_force_load\fR می‌رود که شامل نام پودمان‌هایی برای بارگذاری هنگام راه‌اندازی سیستم است\. همه این پودمان‌ها نیز به تصویر اضافه می‌شوند\. .P در گام پایانی، booster گراف‌های وابستگی میان پودمان‌ها و همه وابستگی‌های موردنیاز را محاسبه می‌کند\. برای نمونه اگر کاربر \fBext4\fR را به‌طور دستی افزوده باشد و سامانه ساخت هسته اعلام کند که پودمان \fBext\fR به \fBmbcache\fR و \fBjbd2\fR نیاز دارد، هر دوی \fBmbcache\fR و \fBjbd2\fR به‌طور خودکار به تصویر افزوده می‌شوند\. .SH "تصویر یکپارچه هسته (Unified Kernel Image)" تصویر یکپارچه هسته \fIhttps://uapi\-group\.org/specifications/specs/unified_kernel_image/\fR (موسوم به UKI) یک باینری در قالب PE است که اجزای گوناگون راه‌اندازی (مانند هسته، initrd و یک استاب بوت UEFI) را در قالب یک فایل اجرایی واحد بسته‌بندی می‌کند\. این امر امکان بوت مستقیم از طریق سفت‌افزار (UEFI) و همچنین اعتبارسنجی هم‌زمان تمام اجزای بوت را برای بوت امن (Secure Boot) فراهم می‌سازد\. .P برای ساخت UKI در Booster، لطفاً سازنده UKI مربوط به systemd به نام systemd\-ukify را از مدیر بسته توزیع خود نصب کرده و از \fB/usr/lib/booster/regenerate_uki\fR استفاده کنید\. این یک اسکریپت کمکی است که همانند زمانی که \fBbooster\fR را از طریق مدیر بسته نصب می‌کنید بازتولید تصویر را انجام داده و سپس نتیجه را به‌عنوان ورودی به تولیدکننده UKI در systemd (یعنی ukify) ارسال می‌کند\. این اسکریپت تنها زیرمجموعه‌ای از اجزای بوت را ارسال می‌کند، به‌ویژه ریزکدهای سیستم، پرونده initrd، پرونده os\-release، تصویر صفحه بارگذاری بوت و هسته\. مدخل‌های خط فرمان هسته برای UKI از \fB/etc/booster\.yaml\fR به ارث برده می‌شوند\. .P لطفاً توجه داشته باشید که برای بوت پیش‌فرض UKI، ممکن است لازم باشد پرونده(های) پیکربندی بوت‌لودر سیستم خود را مطابق با آن تنظیم کنید\. .SH "اشکال‌زدایی (DEBUGGING)" اگر با ابزار راه‌اندازی booster مشکلی دارید، می‌توانید حالت اشکال‌زدایی را فعال کنید تا از رخدادها اطلاعات بیشتری به دست آورید\. کافی است پارامتر هسته \fBbooster\.log=debug,console\fR را بیفزایید تا booster گزارش‌های بیشتری ارائه دهد\. .SS "استفاده از TFTP برای دریافت گزارش‌های دستگاه بوت‌ناپذیر (Use TFTP to download logs for unbootable device)" در صورت شکست در راه‌اندازی، هنگامی که دستگاه‌ها در دسترس نیستند، گزارش‌ها همچنان می‌توانند با استفاده از شبکه از طریق busybox دریافت شوند\. نخست، یک سرور tftp (درگاه ۶۹) روی ماشین/ماشین‌مجازی دیگری برپا کنید؛ برای نمونه در آرچ‌لینوکس، \fBpacman \-S atftp; systemctl start atftpd\fR\. سپس، \fB/etc/booster\.yaml\fR را ویرایش کرده و \fInetwork support\fR و busybox (\fBextra_files: busybox\fR) را اضافه کنید\. initramfs را دوباره تولید کرده و سیستم را بازراه‌اندازی کنید\. پس از ورود به busybox، گزارش‌ها را دریافت کرده و به سرور tftp بفرستید: .IP "" 4 .nf $ dmesg >boot\.log $ lsmod >mods\.log $ tftp \-pl boot\.log $ tftp \-pl mods\.log .fi .IP "" 0 .P گزارش‌ها در سرور درون \fB/srv/atftp\fR خواهند بود\. .SS "پایان مهلت زمان بوت (Boot timeout)" اگر خطای \fBbooster: Timeout waiting for root filesystem\fR را دریافت کردید، لطفاً پرچم پیکربندی \fBappend_all_modaliases\fR را اضافه کرده و تصویر را بازسازی کنید\. با این پرچم، فهرستی از پودمان‌هایی دریافت خواهید کرد که توسط هسته درخواست شده‌اند اما در تصویر booster وجود ندارند\. ممکن است برخی از این پودمان‌ها برای راه‌اندازی سیستم شما ضروری باشند\. .SH "نمونه‌ها (EXAMPLES)" ساخت یک پرونده initramfs ویژه برای هسته/میزبان کنونی\. پرونده خروجی booster\.img است: .IP "" 4 .nf $ booster build booster\.img .fi .IP "" 0 .P ساخت یک تصویر همگانی با پودمان‌های متعدد (شامل راه‌اندازهای SATA/TPM/NVME/\|\.\|\.\|\.): .IP "" 4 .nf $ booster build \-\-universal booster\.img .fi .IP "" 0 .P ساخت یک initramfs برای نگارش هسته 5\.4\.91\-1\-lts و رونوشت آن در /boot/booster\-lts\.img: .IP "" 4 .nf $ booster build \-\-kernel\-version 5\.4\.91\-1\-lts /boot/booster\-lts\.img .fi .IP "" 0 .P این نمونه‌ای از پیکربندی \fBsystemd\-boot\fR است که در /boot/loader/entries/booster\.conf نگهداری می‌شود\. در این نمونه e122d09e\-87a9\-4b35\-83f7\-2592ef40cefa یک UUID برای افراز LUKS و 08684949\-bcbb\-47bb\-1c17\-089aaa59e17e یک UUID برای سیستم‌فایل رمزنگاری‌شده (مانند ext4) است\. برای اطلاعات بیشتر درباره پیکربندی بوت‌لودر خود به مستندات آن مراجعه کنید\. .IP "" 4 .nf title Linux with Booster linux /vmlinuz\-linux initrd /booster\-linux\.img options rd\.luks\.uuid=e122d09e\-87a9\-4b35\-83f7\-2592ef40cefa root=UUID=08684949\-bcbb\-47bb\-1c17\-089aaa59e17e rw .fi .IP "" 0 .P برای باز کردن قفل با توکن سخت‌افزاری توسط یک دستگاه FIDO2، شیار LUKS را یک‌بار با \fBsystemd\-cryptenroll\fR ثبت کنید: .IP "" 4 .nf $ systemd\-cryptenroll \-\-fido2\-device=auto /dev/sda2 .fi .IP "" 0 .P سپس یک مدخل در \fB/etc/crypttab\fR بیفزایید\. Booster نام نگاشت‌کننده (mapper) را از ستون نخست برمی‌دارد؛ تولیدکننده هر جا \fBfido2\-device=\fR را ببیند، \fBfido2plugin\.so\fR را به‌طور خودکار ضمیمه می‌کند\. گزینه \fBtoken\-timeout=\fR مدت‌زمانی را که booster برای لمس FIDO2 پیش از باز کردن اعلان عبارت‌عبور صفحه‌کلید منتظر می‌ماند تعیین می‌کند (پیش‌فرض ۳۰ ثانیه؛ \fB0\fR برای همیشه منتظر می‌ماند): .IP "" 4 .nf cryptroot UUID=e122d09e\-87a9\-4b35\-83f7\-2592ef40cefa none fido2\-device=auto,token\-timeout=60s,x\-initrd\.attach .fi .IP "" 0 .P مدخل بوت‌لودر، مقدار \fBroot=\fR را به گره نگاشت‌کننده آینده اشاره می‌دهد: .IP "" 4 .nf title Linux with Booster linux /vmlinuz\-linux initrd /booster\-linux\.img options root=/dev/mapper/cryptroot rw .fi .IP "" 0 .P راه‌اندازی بدون هیچ پارامتر \fBroot=\fR در خط فرمان هسته، با بهره‌گیری از شناسایی خودکار GPT\. افراز ریشه را با GUID ویژه معماری نشانه‌گذاری کنید \(em در x86\-64 این شناسه \fB4f68bce3\-e8cd\-4db1\-96e7\-fbcaf984b709\fR است: .IP "" 4 .nf $ sgdisk \-\-typecode=2:4f68bce3\-e8cd\-4db1\-96e7\-fbcaf984b709 /dev/sda .fi .IP "" 0 .P برای یک ریشه رمزنگاری‌شده با LUKS، یک مدخل در \fB/etc/crypttab\fR اضافه کنید که نام نگاشت‌کننده را مشخص کند (در غیر این صورت booster نگاشت \fB/dev/mapper/root\fR را ایجاد می‌کند): .IP "" 4 .nf cryptroot UUID=e122d09e\-87a9\-4b35\-83f7\-2592ef40cefa none x\-initrd\.attach .fi .IP "" 0 .P در این حالت، مدخل بوت‌لودر تنها حامل پرچم‌های مربوط به شیوه‌سوارکردن خواهد بود: .IP "" 4 .nf title Linux with Booster linux /vmlinuz\-linux initrd /booster\-linux\.img options rw .fi .IP "" 0 .P کاربرانی که از سیستم‌فایل Btrfs با سیستم نصب‌شده روی یک زیرحجم استفاده می‌کنند، باید rootflags متناظر با مدخل خود در /etc/fstab را اضافه کنند\. در این نمونه، 69bc4dd2\-7f6c\-4821\-aa6b\-d80d9c97d470 شناسه UUID افراز Btrfs است که سیستم روی زیرحجمی با نام root نصب شده و /etc/fstab بدین شکل است: .IP "" 4 .nf UUID=69bc4dd2\-7f6c\-4821\-aa6b\-d80d9c97d470 / btrfs rw,relatime,autodefrag,compress=zstd:2,space_cache,subvol=root 0 0 .fi .IP "" 0 .P بنابراین /boot/loader/entries/booster\.conf باید به این صورت باشد: .IP "" 4 .nf title Linux with Booster linux /vmlinuz\-linux initrd /booster\-linux\.img options root=UUID=69bc4dd2\-7f6c\-4821\-aa6b\-d80d9c97d470 rw rootflags=relatime,autodefrag,compress=zstd:2,space_cache,subvol=root .fi .IP "" 0 .P ابزار Booster مقدار پیش‌فرضی درون‌ساخته برای زیرحجم Btrfs ندارد\. اگر \fBsubvol=\fR (یا \fBsubvolid=\fR) درج نشود، هسته زیرحجم پیش‌فرض پیکربندی‌شده سیستم‌فایل را سوار می‌کند \(em که با \fBbtrfs subvolume set\-default \fR تعیین می‌شود \(em و اگر پیش‌فرضی تنظیم نشده باشد، به زیرحجم سطح‌بالا (شناسه ۵) بازمی‌گردد\. قراردادهای توزیع‌ها مانند \fB@\fR (در آرچ)، \fBroot\fR (در برخی نصاب‌های برگرفته از دبیان)، یا \fB@/\.snapshots/N/snapshot\fR (در openSUSE) باید به‌طور صریح در مدخل بوت‌لودر تنظیم شوند؛ هر دو قالب \fBsubvol=NAME\fR و \fBsubvolid=ID\fR پذیرفته می‌شوند\. .P ساخت یک تصویر یکپارچه هسته و نوشتن خروجی در /boot/EFI/Linux: .IP "" 4 .nf $ /usr/lib/booster/regenerate_uki build /boot/EFI/Linux .fi .IP "" 0 .SH "حق نشر (COPYRIGHT)" حق نشر Booster متعلق است به Anatol Pomazau (C) 2020 \fIhttp://github\.com/anatol\fR .SH "همچنین ببینید (SEE ALSO)" صفحه اصلی پروژه \fIhttps://github\.com/anatol/booster\fR