واحد systemd-firstboot.service
یکی از
واحدهایی
است که برای
مقداردهی
اولیه
پیکربندی
ماشین در
«اولین
بوت» (First Boot)،
یعنی زمانی
که سیستم به
تازگی نصب
شده یا پس از
بازنشانی
کارخانهای
(factory reset)،
استفاده
میشود.
مدیر systemd(1) خود
machine-id(5) را
مقداردهی
اولیه کرده
و تمام
واحدها را
بر اساس
تنظیمات
systemd.preset(5) فعال یا
غیرفعال (preset)
میکند.
سرویس systemd-firstboot.service
کمی بعد
اجرا
میشود تا
به صورت
تعاملی
پیکربندی
پایه سیستم
را
مقداردهی
کند. این
سرویس تنها
در صورتی
اجرا
میشود که
شرط ConditionFirstBoot=yes
برقرار
باشد، که
اساساً به
این معنی
است که /etc/
خالی و فاقد
داده است؛
برای
جزئیات به
systemd.unit(5) مراجعه
کنید. از
اعتبارنامههای
سیستم
میتوان
برای تزریق
پیکربندی
استفاده
کرد؛ آن
تنظیمات به
صورت
تعاملی
پرسیده
نمیشوند.
دستور systemd-firstboot
همچنین
میتواند
برای
مقداردهی
اولیه
غیرتعاملی
یک ایمیج
سیستم
آفلاین
مورد
استفاده
قرار گیرد.
تنظیمات
زیر قابل
پیکربندی
هستند:
•شناسه
ماشین (machine ID)
سیستم
•محلیسازی
سیستم، به
طور خاصتر
دو متغیر
محلیسازی
LANG= و LC_MESSAGES
•نگاشت
صفحهکلید
سیستم
•منطقه
زمانی
سیستم
•نام
میزبان
سیستم
•برچسبهای
ماشین (machine tags)
•خط
فرمان هسته
مورد
استفاده
هنگام نصب
ایمیجهای
هسته
•گذرواژه
و شل کاربر
ریشه ('root')
هر یک از
فیلدها
میتوانند
به صورت
تعاملی
توسط
کاربران
پرسیده
شوند، به
صورت
غیرتعاملی
در خط فرمان
ابزار
تنظیم
شوند، یا از
سیستم
میزبانی که
برای
راهاندازی
ایمیج
سیستم
استفاده
میشود کپی
گردند.
اگر
تنظیمی از
قبل
مقداردهی
شده باشد،
بازنویسی
نخواهد شد و
از کاربر
درباره آن
سوالی
پرسیده
نمیشود.
توجه
داشته
باشید که
این ابزار
بر خلاف
localectl(1)، timedatectl(1) یا
hostnamectl(1)
مستقیماً
روی
سیستمفایل
عمل میکند
و هیچ سرویس
سیستمی در
حال اجرایی
را درگیر
نمیسازد.
این ویژگی
به systemd-firstboot
اجازه
میدهد بر
روی
ایمیجهای
دیسکی که
سوار (mount)
شدهاند
اما بوت
نشدهاند و
همچنین در
مراحل
اولیه بوت
عمل کند.
استفاده از
systemd-firstboot روی
سیستم در
حال اجرا پس
از
راهاندازی
آن توصیه
نمیشود.
گزینههای
زیر
پشتیبانی
میشوند:
--root=root
یک مسیر
دایرکتوری
را به عنوان
آرگومان
میگیرد.
پیشوند
تمام
مسیرها با
مسیر
جایگزین
root
دادهشده
تنظیم
میشود، از
جمله
مسیرهای
جستجوی
پیکربندی.
این گزینه
برای کار
روی یک
ایمیج
سیستم که در
دایرکتوری
مشخصشده
سوار شده
است به جای
خود سیستم
میزبان
مفید است.
افزودهشده
در نگارش 216.
--image=path
مسیری به
یک فایل
ایمیج دیسک
یا گره
دستگاه
بلوکی را
میگیرد. در
صورت مشخص
شدن، تمام
عملیات بر
روی
سیستمفایل
موجود در
ایمیج دیسک
اشارهشده
اعمال
میشوند.
این گزینه
مشابه
--root=
است اما بر
روی
سیستمفایلهای
ذخیرهشده
در
ایمیجهای
دیسک یا
دستگاههای
بلوکی عمل
میکند.
ایمیج دیسک
باید یا
صرفاً شامل
یک
سیستمفایل
باشد و یا
مجموعهای
از
سیستمفایلها
درون یک
جدول
پارتیشن GPT
طبق
UAPI.2 Discoverable Partitions
Specification[1]. برای
اطلاعات
بیشتر در
مورد
ایمیجهای
دیسک
پشتیبانیشده،
سوییچ
همنام در
systemd-nspawn(1) را
ببینید.
افزودهشده
در نگارش 246.
--locale=LOCALE,
--locale-messages=LOCALE
محلیسازی
سیستم، و به
طور
دقیقتر
تنظیمات
LANG= و
LC_MESSAGES را تعیین
میکند.
آرگومان
باید یک
شناسه
معتبر
محلیسازی
باشد،
مانند "de_DE.UTF-8".
این گزینه
فایل
پیکربندی
locale.conf(5) را
کنترل
میکند.
افزودهشده
در نگارش 216.
--keymap=KEYMAP
چیدمان
صفحهکلید
سیستم را
تنظیم
میکند.
آرگومان
باید یک
نگاشت
صفحهکلید
معتبر
باشد،
مانند "de-latin1".
این گزینه
مدخل "KEYMAP" را
در فایل
پیکربندی
vconsole.conf(5) کنترل
میکند.
افزودهشده
در نگارش 236.
--timezone=TIMEZONE
منطقه
زمانی
سیستم را
تنظیم
میکند.
آرگومان
باید یک
شناسه
منطقه
زمانی
معتبر
باشد،
مانند "Europe/Berlin".
این گزینه
پیوند
نمادین
localtime(5)
را کنترل
میکند.
افزودهشده
در نگارش 216.
--hostname=HOSTNAME
نام
میزبان
سیستم را
تنظیم
میکند.
آرگومان
باید یک نام
میزبان
سازگار با DNS
باشد. این
گزینه فایل
پیکربندی
hostname(5) را کنترل
میکند.
افزودهشده
در نگارش 216.
--setup-machine-id
شناسه
ماشین
سیستم را با
یک شناسه
تصادفی
مقداردهی
اولیه
میکند. این
گزینه فایل
machine-id(5) را کنترل
میکند.
این گزینه
تنها در
ترکیب با --root=
یا --image= کار
میکند. روی
یک سیستم در
حال اجرا، machine-id
توسط مدیر
به کمک
systemd-machine-id-commit.service(8)
نوشته
میشود.
افزودهشده
در نگارش 216.
--machine-id=ID
شناسه
ماشین
سیستم را
روی مقدار
مشخصشده
تنظیم
میکند.
همان
محدودیتهای
--setup-machine-id اعمال
میشود.
افزودهشده
در نگارش 216.
--machine-tags=TAG[:TAG...]
برچسبهای
ماشین را
روی فهرست
مشخصشده
با دونقطه (:)
تنظیم
میکند.
برچسبهای
ماشین
برچسبهای
کوتاهی
هستند که
ممکن است
برای
دستهبندی
و
گروهبندی
ماشینها
با اهداف
مدیریتی
استفاده
شوند، برای
مثال جهت
شناسایی
نقشی که یک
ماشین در
استقرار
ایفا
میکند،
ناوگان یا
واحد
سازمانی که
به آن تعلق
دارد، یا هر
صفت دیگری
که توسط
مدیر سیستم
تعریف شده
است. هر
برچسب
جداگانه
باید ۱ تا
۲۵۵ نویسه
طول داشته
باشد و تنها
شامل
نویسههای
الفباییعددی
اسکی (ASCII)، "-" و
"." باشد. این
گزینه فیلد
TAGS= در
machine-info(5) را
کنترل
میکند.
برچسبها
را میتوان
بعداً با
دستور
tags از
hostnamectl(1) استعلام
کرد و تغییر
داد، و با
تنظیمات
واحد
ConditionMachineTag=/
AssertMachineTag=
تطبیق داد؛
به
systemd.unit(5)
مراجعه
کنید.
برخلاف
بیشتر
تنظیمات
دیگر،
برچسبهای
ماشین به
صورت
تعاملی
پرسیده
نمیشوند.
افزودهشده
در نگارش 261.
--root-password=PASSWORD,
--root-password-file=PATH,
--root-password-hashed=HASHED_PASSWORD
گذرواژه
کاربر ریشه
سیستم را
تنظیم
میکند. این
گزینه
فایلهای
passwd(5) و
shadow(5) را
ایجاد کرده
یا تغییر
میدهد. این
تنظیم به سه
شکل وجود
دارد:
--root-password=
گذرواژه را
مستقیماً
در خط فرمان
میپذیرد،
--root-password-file= آن را
از یک فایل
میخواند و
--root-password-hashed= یک
گذرواژه از
پیش هششده
را در خط
فرمان
میپذیرد.
برای
اطلاعات
بیشتر در
مورد قالب
گذرواژه
هششده، به
shadow(5) مراجعه
کنید. توجه
داشته
باشید که
مشخص کردن
گذرواژهها
به صورت متن
ساده (plaintext) در خط
فرمان
توصیه
نمیشود،
زیرا سایر
کاربران
ممکن است
صرفاً با
فراخوانی
ps(1)
بتوانند
آنها را
مشاهده
کنند.
افزودهشده
در نگارش 216.
--root-shell=SHELL
شل کاربر
ریشه سیستم
را تنظیم
میکند. این
گزینه فایل
passwd(5) را ایجاد
کرده یا
تغییر
میدهد.
افزودهشده
در نگارش 246.
--kernel-command-line=CMDLINE
خط فرمان
هسته سیستم
را تنظیم
میکند. این
گزینه فایل
/etc/kernel/cmdline را که
توسط
kernel-install(8)
استفاده
میشود
کنترل
میکند.
افزودهشده
در نگارش 246.
--prompt-locale, --prompt-keymap,
--prompt-timezone, --prompt-hostname,
--prompt-root-password, --prompt-root-shell
از کاربر
به صورت
تعاملی
برای یک
تنظیم پایه
خاص سوال
میپرسد.
توجه داشته
باشید که
هرگونه
تنظیمات
پیکربندی
صریح که در
خط فرمان
مشخص شده
باشد تقدم
دارد، و
برای آن از
کاربر
سوالی
پرسیده
نمیشود.
افزودهشده
در نگارش 216.
--prompt
از کاربر
برای
محلیسازی،
نگاشت
کلید،
منطقه
زمانی، نام
میزبان،
گذرواژه
ریشه و شل
ریشه
استعلام
میکند. این
معادل مشخص
کردن
ترکیبی
گزینههای
--prompt-locale،
--prompt-keymap،
--prompt-timezone،
--prompt-hostname،
--prompt-root-password و
--prompt-root-shell
است.
افزودهشده
در نگارش 216.
--prompt-keymap-auto
اگر از
یک پایانه
مجازی TTY
فراخوانی
شود، معادل
--prompt-keymap است؛ در
غیر این
صورت هیچ
اثری ندارد.
یا به عبارت
دیگر، تنها
زمانی
نگاشت کلید
را به صورت
تعاملی
میپرسد که
یک
صفحهکلید
محلی برای
تعاملی که
به آن نیاز
دارد به کار
گرفته شود.
افزودهشده
در نگارش 259.
--copy-locale, --copy-keymap,
--copy-timezone, --copy-root-password,
--copy-root-shell
یک تنظیم
پایه خاص را
از سیستم
میزبان کپی
میکند. این
تنها در
ترکیب با
--root=
یا
--image= کار
میکند.
افزودهشده
در نگارش 216.
--copy
محلیسازی،
نگاشت
کلید،
منطقه
زمانی،
گذرواژه
ریشه و شل را
از میزبان
کپی میکند.
این معادل
مشخص کردن
ترکیبی
گزینههای
--copy-locale،
--copy-keymap،
--copy-timezone،
--copy-root-password و
--copy-root-shell است.
افزودهشده
در نگارش 216.
--force
پیکربندی
را
مینویسد
حتی اگر
فایلهای
مربوطه از
قبل وجود
داشته
باشند. بدون
این گزینه،
systemd-firstboot
فایلهای
موجود را
تغییر
نداده یا
جایگزین
نمیکند.
توجه داشته
باشید که
هنگام
پیکربندی
حساب ریشه،
حتی با وجود
این گزینه،
systemd-firstboot تنها
مدخل کاربر
"root" را تغییر
میدهد و
سایر
مدخلها را
در /etc/passwd و /etc/shadow
دستنخورده
باقی
میگذارد.
افزودهشده
در نگارش 246.
--reset
در صورت
مشخص شدن،
تمام
فایلهای
موجود که
توسط
systemd-firstboot
پیکربندی
میشوند
حذف
میگردند.
توجه داشته
باشید که
فایلها
صرفنظر از
اینکه با یک
مقدار جدید
پیکربندی
شوند یا
خیر، حذف
میشوند.
این عملیات
تضمین
میکند که
بوت بعدی
ایمیج به
عنوان
اولین بوت
در نظر
گرفته شود،
و
systemd-firstboot برای
پیکربندی
هر یک از
فایلهای
حذفشده
مجدداً
سوال بپرسد.
افزودهشده
در نگارش 254.
--delete-root-password
گذرواژه
کاربر ریشه
سیستم را
حذف میکند
و امکان
ورود به
عنوان ریشه
بدون
گذرواژه را
فراهم
میسازد،
مگر اینکه
حساب ریشه
قفل شده
باشد. توجه
داشته
باشید که
این کار به
شدت ناامن
است و
بنابراین
از این
گزینه
نباید با
سهلانگاری
استفاده
شود.
افزودهشده
در نگارش 246.
--welcome=
یک
آرگومان
بولی
میگیرد. به
طور
پیشفرض،
هنگام
درخواست
گزینههای
پیکربندی
از کاربر،
قبل از
پرسیدن
اولین سوال
یک متن
خوشآمدگویی
کوتاه نشان
داده
میشود.
مقدار false را
به این
گزینه
ارسال کنید
تا متن
خوشآمدگویی
خاموش شود.
افزودهشده
در نگارش 246.
--chrome=
یک
آرگومان
بولی
میگیرد. به
طور
پیشفرض
صفحه
راهاندازی
اولیه
نوارهای
رنگی معکوس
(chrome) را در بالا
و پایین
صفحه
پایانه
نشان
میدهد، که
میتوان با
تنظیم این
گزینه روی false
آن را
غیرفعال
کرد.
افزودهشده
در نگارش 259.
--mute-console=
یک
آرگومان
بولی
میگیرد. در
صورت true بودن،
خروجی لاگ
هسته و
خروجی
وضعیت مدیر
سرویس به
کنسول
سیستم در
زمان اجرای
systemd-firstboot به طور
موقت
غیرفعال
میشود تا
خروجی خود
ابزار دچار
اختلال
نشود.
پیشفرض false
است.
افزودهشده
در نگارش 259.
-h, --help
یک متن
راهنمای
کوتاه را
نمایش داده
و خارج
میشود.
--version
یک رشته
نسخه کوتاه
را نمایش
داده و خارج
میشود.
systemd-firstboot از
منطق
اعتبارنامههای
سرویس که
توسط
ImportCredential=/LoadCredential=/SetCredential=
پیادهسازی
شده است
پشتیبانی
میکند
(برای
جزئیات به
systemd.exec(5) مراجعه
کنید). در
صورت
ارسال،
اعتبارنامههای
زیر
استفاده
میشوند:
passwd.hashed-password.root,
passwd.plaintext-password.root
یک نسخه
هششده یا
متن ساده از
گذرواژه
ریشه برای
استفاده به
جای پرسش از
کاربر. این
اعتبارنامهها
معادل همان
مواردی
هستند که
برای سرویس
systemd-sysusers.service(8) تعریف
شدهاند.
افزودهشده
در نگارش 249.
passwd.shell.root
باینری
شل مورد
استفاده
برای حساب
مشخصشده
را تعیین
میکند.
معادل
اعتبارنامهای
به همین نام
که برای
سرویس
systemd-sysusers.service(8)
تعریف شده
است.
افزودهشده
در نگارش 249.
firstboot.locale, firstboot.locale-messages
این
اعتبارنامهها
تنظیمات
محلیسازی
را برای
اعمال در
اولین بوت،
به جای پرسش
از کاربر
مشخص
میکنند.
افزودهشده
در نگارش 249.
firstboot.keymap
این
اعتبارنامه
تنظیمات
صفحهکلید
را برای
اعمال در
اولین بوت،
به جای پرسش
از کاربر
مشخص
میکند.
به رابطه
این
اعتبارنامه
با vconsole.keymap که
توسط systemd-vconsole-setup.service(8)
شناخته
میشود
توجه کنید:
هر دو در
نهایت بر یک
تنظیم اثر
میگذارند،
اما firstboot.keymap در
اولین بوت
(اگر از قبل
پیکربندی
نشده باشد)
درون /etc/vconsole.conf
نوشته
میشود، و
سپس توسط
systemd-vconsole-setup از
آنجا
خوانده
میشود، در
حالی که vconsole.keymap
در هر بوت
خوانده
میشود و
روی دیسک
ماندگار
نمیگردد
(اما هرگونه
پیکربندی
در vconsole.conf در
صورت وجود
اولویت
خواهد
داشت).
افزودهشده
در نگارش 249.
firstboot.timezone
این
اعتبارنامه
تنظیم
منطقه
زمانی
سیستم را
برای اعمال
در اولین
بوت، به جای
پرسش از
کاربر مشخص
میکند.
افزودهشده
در نگارش 249.
firstboot.hostname
این
اعتبارنامه
نام میزبان
ایستای
سیستم را
برای اعمال
در اولین
بوت مشخص
میکند. نام
میزبان از
کاربر
پرسیده
نخواهد شد.
توجه داشته
باشید که
این گزینه
نام میزبان
ایستا را
کنترل
میکند، نه
نام میزبان
گذرا، و
برخلاف
system.hostname، تنها
در اولین
بوت اثر
دارد.
افزودهشده
در نگارش 261.
firstboot.machine-tags
این
اعتبارنامه
برچسبهای
ماشین را
برای اعمال
در اولین
بوت، به
صورت
فهرستی
جداشده با
دونقطه (:)
مشخص
میکند،
معادل
سوییچ
--machine-tags=
که در بالا
توضیح داده
شد. این
برچسبها
در فیلد
TAGS=
از /etc/machine-info نوشته
میشوند
(اگر این
فایل از قبل
وجود
نداشته
باشد)، و فقط
در اولین
بوت اثر
دارند. اگر
فهرست حاوی
برچسبهای
نامعتبر
باشد، به
طور کامل
نادیده
گرفته
میشود.
افزودهشده
در نگارش 261.
توجه
داشته
باشید که به
طور
پیشفرض
فایل واحد
systemd-firstboot.service به
گونهای
تنظیم شده
است که
اعتبارنامههای
فهرستشده
را از مدیر
سرویس به
ارث ببرد.
بنابراین،
هنگام
فراخوانی
یک کانتینر
با /etc/ خالی
برای بار
اول،
میتوان
گذرواژه
کاربر ریشه
را به صورت
زیر روی "systemd"
تنظیم کرد:
# systemd-nspawn --image=... --set-credential=firstboot.locale:de_DE.UTF-8 ...
توجه
داشته
باشید که
این
اعتبارنامهها
فقط در طول
اولین بوت
خوانده و
اعمال
میشوند.
هنگامی که
اعمال
شدند، برای
بوتهای
بعدی نیز
باقی
میمانند و
دیگر
اعتبارنامهها
در نظر
گرفته
نمیشوند.