mkinitcpio - ایجاد
محیط دیسک
رم اولیه (ramdisk)
یک محیط
دیسک رم
اولیه (initial ramdisk)
برای
راهاندازی
هسته
لینوکس
ایجاد
میکند.
دیسک رم
اولیه در
اصل یک محیط
بسیار کوچک
(فضای
کاربری
اولیه یا early userspace)
است که
ماژولهای
مختلف هسته
را
بارگذاری
کرده و پیش
از واگذاری
کنترل به init،
موارد لازم
را تنظیم
میکند. این
امر امکان
داشتن
مواردی
مانند
سیستمهای
فایل ریشه
رمزنگاریشده
و
سیستمهای
فایل ریشه
روی آرایه RAID
نرمافزاری
را فراهم
میسازد. mkinitcpio
امکان
توسعه آسان
با
قلابهای
سفارشی را
فراهم
میکند،
قابلیت
تشخیص
خودکار در
زمان اجرا
دارد، و
ویژگیهای
متعدد
دیگری را
ارائه
میدهد.
-A, --addhooks hooks
افزودن
hooks
(قلابهای)
اضافی به
تصویر. این
قلابها پس
از تمام
قلابهای
دیگرِ فایل
پیکربندی،
به ترتیب
پردازش
خواهند شد.
قلابهای
متعدد باید
با کاما جدا
شوند. این
گزینه
میتواند
چندین بار
مشخص شود.
-c, --config config
استفاده
از فایل config
برای تولید
دیسک رم.
پیشفرض:
/etc/mkinitcpio.conf. در صورت
مشخص شدن،
فایلهای
تکمیلی (drop-in) در
/etc/mkinitcpio.conf.d نادیده
گرفته
خواهند شد.
-d, --generatedir directory
تنظیم directory
به عنوان
مکانی که initramfs
در آن ساخته
میشود. این
گزینه ممکن
است برای
تولید یک ramfs
خاموشسازی
در /run/initramfs/ مفید
باشد.
-D, --hookdir directory
تنظیم directory
به عنوان
مکانی که
هنگام
تولید
تصویر،
قلابها در
آن جستجو
خواهند شد.
-I, --include path
افزودن
files یا
directories
اضافی به
تصویر. این
موارد پس از
گنجانده
شدن تمامی
فایلهای
دیگر در
تصویر، به
ترتیب
پردازش
خواهند شد.
اگر مسیر
یک فایل
باشد،
میتوانید
مبدأ و مقصد
در تصویر را
با کاما جدا
کنید. مثال:
source:destination:mode.
اگر مسیر
یک
دایرکتوری
باشد، تنها
کل
دایرکتوری
را
میپذیرد و
دایرکتوری
را از ریشه
تصویر
میگنجاند.
مسیرهای
متعدد باید
با کاما جدا
شوند. این
گزینه
میتواند
چندین بار
مشخص شود.
-g, --generate filename
تولید یک
تصویر CPIO با
نام filename.
پیشفرض: no؛
این بدان
معناست که
هیچ چیزی در
سیستم فایل
نوشته
نخواهد شد
مگر اینکه
این گزینه
مشخص شود.
-H, --hookhelp hookname
نمایش
راهنما
برای نام
قلاب hookname.
-h, --help
نمایش یک
نمای کلی
کوتاه از
سوئیچهای
خط فرمان
موجود.
-k, --kernel kernelversion
استفاده
از kernelversion به
جای هسته در
حال اجرای
فعلی. این
میتواند
مسیری به یک
تصویر هسته
(تنها برای
معماریهای
مبتنی بر x86
پشتیبانی
میشود)، یک
نسخه خاص
هسته یا
کلیدواژه
ویژه none باشد.
در حالت
اخیر، هیچ
ماژول
هستهای به
تصویر
افزوده
نمیشود.
-L, --listhooks
فهرست
کردن تمامی
قلابهای
موجود.
-M, --automods
نمایش
ماژولهای
یافتشده
از طریق
تشخیص
خودکار. mkinitcpio به
طور خودکار
تلاش خواهد
کرد تعیین
کند کدام
ماژولهای
هسته برای
راهاندازی
رایانه شما
مورد نیاز
هستند. این
گزینه
ماژولهای
شناساییشده
را فهرست
میکند.
-n, --nocolor
غیرفعال
کردن خروجی
رنگی.
--nopost
عدم
اجرای
قلابهای
پسین (post hooks).
-U, --uki filename
تولید یک
تصویر هسته
یکپارچه (unified kernel
image) با نام filename.
اگر یک
تصویر CPIO با
موفقیت
ساخته شود،
برای تولید
تصویر هسته
یکپارچه
جهت
راهاندازی
با UEFI استفاده
خواهد شد.
این کار initramfs،
هسته و cmdline
هسته را در
یک فایل
اجرایی
واحد ترکیب
میکند. این
قابلیت
برای
یکپارچگی
زنجیره
راهاندازی
در شرایطی
که فایل
امضا
میشود
مفید است.
پیشفرض: no.
برای
فهرستی از
گزینههای
مرتبط، بخش
گزینههای
تصویر هسته
یکپارچه در
زیر را
ببینید.
-P, --allpresets
پردازش
تمام
پیشتنظیمهای
موجود در
/etc/mkinitcpio.d. برای
جزئیات
بیشتر
درباره
پیشتنظیمها،
گزینه -p را
ببینید.
-p, --preset preset
ساخت
تصویر(های) initramfs
بر اساس preset
مشخصشده.
این
میتواند
فایلی در
/etc/mkinitcpio.d (بدون
پسوند .preset) یا
یک مسیر
کامل و مطلق
به یک فایل
باشد. این
گزینه
میتواند
چندین بار
برای
پردازش
چندین
پیشتنظیم
مشخص شود.
-R, --remove
حذف
تصویر(های) initramfs
تولیدشده
توسط
پیشتنظیم(های)
مشخصشده.
اگر در
ترکیب با
-P|--allpresets
استفاده
شود،
تصاویر
مربوط به
تمام
پیشتنظیمها
را حذف
میکند. این
گزینه تنها
همراه با
-p|--presets یا -P|--allpresets
قابل
استفاده
است.
-r, --moduleroot root
دایرکتوری
ریشه را
برای یافتن
ماژولها
تعیین
میکند،
مقدار
پیشفرض /
است.
-S, --skiphooks hooks
نادیده
گرفتن hooks
(قلابها)
هنگام
تولید
تصویر.
قلابهای
متعدد باید
با کاما جدا
شوند. این
گزینه
میتواند
چندین بار
مشخص شود.
-s, --save
ذخیره
دایرکتوری
ساخت برای
دیسک رم
اولیه.
پیشفرض: no؛
این بدان
معناست که
در صورت
مشخص نشدن
این گزینه،
دایرکتوری
حفظ نخواهد
شد. برای
اهداف
اشکالزدایی
مفید است.
-t, --builddir tmpdir
استفاده
از tmpdir به
عنوان
دایرکتوری
ساخت موقت
به جای /tmp. tmpdir
باید وجود
داشته باشد.
متغیر
محیطی TMPDIR
نیز برای
تنظیم این
مکان مد نظر
قرار
میگیرد،
اما گزینه
خط فرمان
اولویت
خواهد
داشت.
-V, --version
نمایش
اطلاعات
نسخه.
-v, --verbose
خروجی
پرگو (با
جزئیات).
اطلاعات
بیشتری
درباره
آنچه در طول
ایجاد دیسک
رم رخ
میدهد
ارائه
میدهد.
-z, --compress compress
جایگزینی
روش
فشردهسازی
با برنامه
compress.
--cmdline filename
استفاده
از خط فرمان
هسته با
تصویر هسته
یکپارچه.
اگر یک
دایرکتوری
داده شود،
تمام
فایلهای
منطبق با *.conf
در آن
دایرکتوری
استفاده
میشوند.
اگر هیچ
موردی مشخص
نشود، یکی
از
فایلهای
/etc/kernel/cmdline، /usr/lib/kernel/cmdline،
/etc/cmdline.d/*.conf یا /proc/cmdline
امتحان
میشود.
--no-cmdline
صرفنظر
کردن از
جاسازی
رشته خط
فرمان هسته
در تصویر
هسته
یکپارچه.
گزینههای
خط فرمان
هسته باید
از طریق خط
فرمان هسته
منتقل شوند.
بر گزینه --cmdline
تقدم دارد.
--splash filename
فایلهای
اجرایی UEFI
میتوانند
در زمان
راهاندازی
یک فایل
نقشهبیتی
(bitmap) را نمایش
دهند.
--uefistub filename
تصویر UEFI stub
مورد
استفاده
برای تولید
تصویر هسته
یکپارچه. در
صورت
استفاده از
ukify هیچ
تأثیری
ندارد.
پیشفرض:
تلاش برای
یافتن
بارگذار stub
مربوط به systemd-boot
یا gummiboot.
--ukiconfig filename
فایل
پیکربندی
برای ارسال
به ukify. اگر
هیچ موردی
مشخص نشود،
یکی از
فایلهای
/etc/kernel/uki.conf یا /usr/lib/kernel/uki.conf
امتحان
میشود. اگر
هیچیک از
آنها وجود
نداشته
باشد، ukify از
پیشفرض
داخلی خود
استفاده
خواهد کرد.
--no-ukify
عدم
استفاده از
ukify برای ساخت
UKIها حتی در
صورت در
دسترس بودن.
این کار
توصیه
نمیشود.
--kernelimage filename
گنجاندن
یک تصویر
هسته برای
تصویر هسته
یکپارچه.
پیشفرض:
یکی از
مسیرهای
/lib/modules/${KERNELVERSION}/vmlinuz،
/lib/modules/${KERNELVERSION}/vmlinux،
/boot/vmlinuz-${KERNELVERSION}،
/boot/vmlinux-${KERNELVERSION}، /boot/vmlinuz-linux
یا /boot/vmlinux-linux.
--osrelease filename
گنجاندن
یک فایل os-release
برای تصویر
هسته
یکپارچه.
پیشفرض:
/etc/os-release یا /usr/lib/os-release.
یک
پیشتنظیم
(preset)، تعریفی
از پیش
تعیینشده
در مورد
نحوه ایجاد
دیسک رم
اولیه است.
به جای مشخص
کردن فایل
پیکربندی و
فایل خروجی
در هر بار
تولید یک
دیسک رم
اولیه
جدید، شما
یک
پیشتنظیم
تعریف
میکنید و
از سوئیچ -p
برای تولید
دیسک رم
اولیه بر
اساس
پیشتنظیم
خود
استفاده
مینمایید.
به طور
معمول،
پیشتنظیمها
فایلهایی
با پسوند .preset
هستند که در
/etc/mkinitcpio.d قرار
دارند،
برای مثال
/etc/mkinitcpio.d/linux.preset برای
پیشتنظیم
linux. همچنین
امکان
استفاده از
فایلها در
مکانهای
دیگر نیز
وجود دارد؛
در این حالت
باید مسیر
فایل مشخص
شود.
فایلهای
پیشتنظیم
اسکریپتهای
شل هستند که
توسط mkinitcpio
بارگذاری (source)
میشوند و
متغیرهای
زیر بر
رفتار آن
تأثیر
میگذارند.
توجه
داشته
باشید که mkinitcpio
خود را برای
هر
پیشتنظیم
فراخوانی
میکند و
گزینههای
تعریفشده
در فایل
پیشتنظیم
را از طریق
آرگومانهای
خط فرمان
ارسال
مینماید.
این موارد
در توضیحات
گزینههای
زیر ذکر
شدهاند،
بنابراین
برای
اطلاعات
بیشتر در
مورد یک
گزینه خاص،
به راهنمای
آرگومانهای
خط فرمان
مراجعه
کنید.
PRESETS
آرایهای
از نامهای
پیشتنظیم
تعریفشده
در این فایل.
این نامها
به عنوان
پیشوند
سایر
گزینهها
استفاده
خواهند شد
تا
گزینههای
مخصوص هر
پیشتنظیم
را فراهم
کنند. برای
مثال، اگر
PRESET=('custom') مشخص
شود، تصویر
از طریق
custom_image='/boot/custom.img'
تعیین
میگردد.
<preset>_kver
(پیشفرض
مقدار ALL_kver
است — یکی از
این دو
الزامی
است)
تعیین
نسخه هسته
(از طریق -k در
mkinitcpio).
<preset>_config
(پیشفرض
مقدار ALL_config
است — یکی از
این دو
الزامی
است)
مسیر
فایل
پیکربندی
(ارسالشده
از طریق -c به
mkinitcpio).
<preset>_uki (یکی
از دو مورد
<preset>_uki و <preset>_image
الزامی
است)
مسیر
فایل خروجی
برای تصویر
هسته
یکپارچه
(ارسالشده
از طریق -U به
mkinitcpio).
<preset>_image (یکی
از دو مورد
<preset>_uki و <preset>_image
الزامی
است)
مسیر
فایل خروجی
برای تصویر
تولیدشده
(ارسالشده
از طریق -g به
mkinitcpio).
<preset>_cmdline
(پیشفرض
مقدار ALL_cmdline
است)
مسیر
فایل خط
فرمان هسته
(ارسالشده
از طریق --cmdline
به mkinitcpio). این
گزینه تنها
هنگام
تولید
تصاویر
هسته
یکپارچه
استفاده
میشود.
<preset>_splash
(پیشفرض
مقدار ALL_splash
است)
مسیر
فایل تصویر
اسپلش
(ارسالشده
از طریق --splash
به mkinitcpio). این
گزینه تنها
هنگام
تولید
تصاویر
هسته
یکپارچه
استفاده
میشود.
<preset>_kerneldest
(پیشفرض
مقدار ALL_kerneldest
است)
مسیر
مقصد هسته
که به
قلابهای
پسین ارسال
خواهد شد.
این گزینه
مکان
پیشفرض
هسته
(معمولاً /boot)
را
بازنویسی
میکند و
اجازه
میدهد
مکان
قرارگیری
هسته برای
راهاندازی
سفارشیسازی
شود. این
مقدار از
طریق متغیر
محیطی KERNELDESTINATION به
قلابهای
پسین ارسال
میشود.
<preset>_options
آرگومانهای
خط فرمان
بیشتر برای
ارسال به mkinitcpio
به صورت یک
رشته یا
آرایه.
آنها در
انتهای
فراخوانی mkinitcpio
(پس از تمامی
گزینههای
ذکرشده در
بالا)
افزوده
میشوند،
بنابراین
میتوان از
این مورد
برای
بازنویسی
گزینهها
استفاده
کرد (برای
مثال ارسال
-S hook در
اینجا برای
نادیده
گرفتن یک
قلاب).
قلابهای
نصب
اسکریپتهای
bash هستند که
در زمان
اجرای mkinitcpio
بارگذاری (source)
میشوند تا
ماژولها،
باینریها
و فایلهای
دیگر را به
تصویر
اضافه کنند.
توابع
مختلفی
برای تسهیل
این کار
وجود
دارند.
add_module modname
ماژول
مشخصشده
توسط modname را
به تصویر
اضافه
میکند.
وابستگیها
به طور
خودکار
استخراج
شده و
افزوده
میشوند.
add_binary binary [ destination ] [
mode ]
یک فایل
باینری را
به تصویر
اضافه
میکند.
آرگومان binary
نیازی نیست
مسیری مطلق
باشد و در
صورت نیاز،
جستجو
انجام
خواهد شد.
اگر باینری
یک فایل ELF
پیوندیافته
پویا باشد،
وابستگیها
به طور
خودکار
افزوده
میشوند.
اگر یک
پیوند
نمادین
باشد، هم
پیوند
نمادین و هم
باینری هدف
اضافه
خواهند شد.
به صورت
اختیاری،
مقصدی درون
تصویر initramfs و
همچنین
حالت
دسترسی
فایل (mode)
میتواند
مشخص شود. به
طور
پیشفرض،
مقصد و حالت
دسترسی از
مبدأ
مشتقشده
از binary گرفته
میشوند.
add_file path [ destination ] [ mode
]
یک فایل
و هر
دایرکتوری
والد مورد
نیاز را به
تصویر
اضافه
میکند. اگر
یک پیوند
نمادین
باشد، هم
پیوند
نمادین و هم
فایل هدف
اضافه
خواهند شد.
به صورت
اختیاری،
مقصدی درون
تصویر initramfs و
همچنین
حالت
دسترسی
فایل
میتواند
مشخص شود. به
طور
پیشفرض،
مقصد و حالت
دسترسی از
مبدأ و حالت
دسترسی
فایل
مشخصشده
با path گرفته
میشوند.
add_file_early path [ destination ] [
mode ]
یک فایل
و هر
دایرکتوری
والد مورد
نیاز را به
تصویر
فشردهنشده
اولیه
اضافه
میکند. به
همان شیوه
add_file عمل
میکند.
add_dir path
یک
دایرکتوری
و والدین آن
را به تصویر
اضافه
میکند.
add_dir_early path
یک
دایرکتوری
و والدین آن
را به تصویر
فشردهنشده
اولیه
اضافه
میکند. به
همان شیوه
add_dir عمل
میکند.
add_full_dir directory [ glob ] [
strip_prefix ]
با
پیمایش
مسیر
دادهشده و
فراخوانی
متناظر
add_file،
add_dir و
add_symlink، یک
دایرکتوری
را به صورت
بازگشتی به
تصویر
اضافه
میکند. این
تابع از
پیوندهای
نمادین
پیروی
نمیکند و
هدفهای
پیوندهای
نمادین را
نیز اضافه
نمیکند.
اگر
آرگومان glob
ارسال شود،
تنها
فایلها و
پیوندهای
نمادین
منطبق بر
این الگو
اضافه
خواهند شد.
اگر
آرگومان strip_prefix
ارسال شود،
برای حذف
پیشوند
مشخصشده
توسط
آرگومان strip_prefix
از مسیر
مقصد (مسیر
درون تصویر
initramfs) استفاده
خواهد شد.
این قابلیت
هنگام
نوشتن
قلابهای
rootfs-overlay
میتواند
مفید باشد.
add_symlink path [ link-target ]
یک پیوند
نمادین را
در مسیر
مشخصشده
path
به تصویر
اضافه
میکند که
میتواند
به صورت
اختیاری به
link-target
مشخصشده
اشاره کند.
اگر
link-target
ارائه
نشود، فرض
میشود که
این پیوند
نمادین در
سیستم فایل
واقعی وجود
دارد و هدف
با استفاده
از
readlink(1)
خوانده
خواهد شد.
هیچ بررسی
برای
اطمینان از
وجود هدف
پیوند
نمادین
انجام
نمیشود و
پیوندهای
نمادین به
صورت
بازگشتی
دنبال
نخواهند
شد.
add_all_modules [ -f filter ]
pattern
ماژولها
را بدون در
نظر گرفتن
لیست سفید
تشخیص
خودکار (autodetect) به
تصویر
اضافه
میکند. pattern
باید یک
زیردایرکتوری
در درخت
هسته باشد
که
زیرمجموعهای
از
ماژولهای
قابل
گنجاندن را
توصیف
میکند.
پالایش
بیشتر
میتواند
از طریق
پرچم -f
همراه با یک
عبارت
باقاعده
گسترشیافته
ارائه شود.
add_checked_modules [ -f filter ]
pattern
مشابه
add_all_modules با این
محدودیت که
تنها
ماژولهای
منطبق بر
لیست سفید
ایجادشده
توسط قلاب autodetect
به تصویر
اضافه
خواهند شد.
اگر قلاب autodetect
در تصویر
وجود
نداشته
باشد، این
تابع با add_all_modules
یکسان است.
add_runscript scriptname
یک قلاب
زمان اجرا
را به تصویر
اضافه
میکند که
یک اسکریپت
شل سازگار
با busybox ash است.
تضمین
میشود که
نام
اسکریپت با
نام قلابی
که اسکریپت
از آن
فراخوانی
شده است،
مطابقت
داشته
باشد.
add_udev_rule rule-file
یک قانون
udev را به
تصویر
اضافه
میکند.
وابستگیها
به
فایلهای
باینری کشف
شده و
افزوده
خواهند شد.
آرگومان
میتواند
نام یک فایل
قانون
(کشفشده از
مسیرهای
شناختهشده
udev) یا یک مسیر
مطلق باشد.
add_all_modules_from_symbol symbol paths
ماژولهای
موجود در
دایرکتوریهای
paths را که
حاوی symbol
هستند به
تصویر
اضافه
میکند.
add_checked_modules_from_symbol symbol
paths
مشابه
add_all_modules_from_symbol با این
محدودیت که
تنها
ماژولهای
منطبق بر
لیست سفید
ایجادشده
توسط قلاب autodetect
به تصویر
افزوده
خواهند شد.
اگر قلاب autodetect
در تصویر
حاضر
نباشد، این
تابع با
add_all_modules_from_symbol یکسان
است.
add_initcpio_binary binary [ destination ] [
mode ]
مشابه
add_binary است با
این تفاوت
که برای
یافتن
باینری جهت
گنجاندن در
تصویر،
مسیر /usr/lib/initcpio را
جستجو
میکند. این
مورد برای
قلابهایی
مفید است که
بدون نیاز
به
مسیرنویسی
ثابت (hardcoding)،
فایلهایی
درون آن
دایرکتوری
دارند.
دستور mkinitcpio
از CPIO اولیه (early CPIO)
پشتیبانی
میکند.
اینها
آرشیوهای CPIO
فشردهنشدهای
هستند که
پیش از
آرشیو اصلی
CPIO
فشردهشده
قرار
میگیرند.
آنها برای
بارگذاری
زودهنگام
ریزکد
پردازنده
یا
بارگذاری
بازنویسیهای
جداول ACPI
استفاده
میشوند.
قلابهای
نصب
میتوانند
با افزودن
فایلها به
$EARLYROOT، آنها
را در این
آرشیو نصب
کنند.
قلابهای
زمان اجرا
که از طریق
تابع add_runscript از
یک قلاب نصب
به تصویر
اضافه
میشوند،
قادرند
قابلیتهای
اضافی را در
طول فضای
کاربری
اولیه
فراهم کنند.
توابع خاصی
در این
فایلها در
زمانهای
متفاوتی
اجرا
خواهند شد.
یک قلاب
میتواند
یک یا چند
مورد از این
توابع را
تعریف کند.
در هر نقطه
اتصال،
قلابها به
ترتیبی که
در متغیر HOOKS
تعریف
شدهاند
اجرا
میشوند،
به جز
قلابهای
پاکسازی که
به ترتیب
معکوس اجرا
میگردند.
run_earlyhook
توابعی
با این نام
پس از
برپایی
اتصالات API و
تجزیه خط
فرمان هسته
اجرا
خواهند شد.
دیمنهای
مورد نیاز
برای فضای
کاربری
اولیه باید
از این نقطه
اتصال
راهاندازی
شوند.
run_hook
توابعی
با این نام
پس از هر
قلاب اولیه
و پس از نصب
ماژولهای
تعریفشده
توسط کاربر
اجرا
خواهند شد.
این
متداولترین
نقطه اتصال
قلاب است، و
عملکردهایی
مانند اسکن
برای
حجمهای LVM و
نگاشت
حجمهای
رمزنگاریشده
باید در
اینجا
انجام
شوند.
run_latehook
توابعی
با این نام
پس از اتصال
ریشه اجرا
خواهند شد.
این تابع
عموماً
برای
تنظیمات
لازم بعدی
در ریشه
واقعی،
مانند
اتصال سایر
پارتیشنهای
سیستم،
استفاده
میشود.
run_cleanuphook
توابعی
با این نام
تا جای ممکن
دیر اجرا
میشوند. هر
دیمنی که از
طریق تابع
run_earlyhook شروع به
کار کرده
است باید در
اینجا برای
آمادهسازی
جابجایی به
ریشه واقعی
متوقف شود.
run_emergencyhook
توابعی
با این نام
پیش از
راهاندازی
شل اضطراری
(در صورت
بروز شکست
در بوت) اجرا
میشوند.
برای مثال
این امکان
را میدهد
تا صفحات
اسپلش بوت
فرآیند خود
را متوقف
کنند تا
کاربران
متوجه شکست
شوند.
getarg argument [ default ]
این تابع
میتواند
در
قلابهای
زمان اجرا
برای
دریافت یک
آرگومان از
cmdline هسته
استفاده
شود. اگر argument
همراه با
مقدار وجود
داشته
باشد، آن
مقدار
بازگردانده
میشود. اگر
argument بدون
مقدار وجود
داشته
باشد، y
بازگردانده
میشود. اگر
argument وجود
نداشته
باشد، default
بازگردانده
میشود. اگر
default مشخص
نشده باشد،
چیزی
بازگردانده
نخواهد شد.
قلابهای
پسین،
فایلهای
اجرایی یا
اسکریپتهایی
هستند که پس
از تولید
موفق تصویر
برای
پردازشهای
بیشتر،
مانند امضا
کردن، اجرا
میشوند.
هنگامی که
kernel-install(8) دستور mkinitcpio
را
فراخوانی
میکند،
قلابهای
پسین
غیرفعال
میشوند.
آنها
هسته را به
عنوان
آرگومان
اول، تصویر
را به عنوان
آرگومان
دوم و به
صورت
اختیاری
تصویر هسته
یکپارچه را
به عنوان
آرگومان
سوم دریافت
میکنند.
توجه: اگر
mkinitcpio با -k none یا -k
version
فراخوانی
شود و تصویر
هسته یافت
نشود،
آرگومان
اول خالی
خواهد بود.
متغیرهای
محیطی زیر
ارسال
میشوند:
KERNELVERSION
شامل
نسخه کامل
هستهای
است که
تصویر از آن
ساخته شده
است.
KERNELDESTINATION
مکان
پیشفرضی
که هسته
باید برای
راهاندازی
در آن قرار
گیرد. این
معمولاً
همان
آرگومان
اول است اما
اگر mkinitcpio با -k /boot/*
فراخوانی
نشده باشد
ممکن است
تفاوت
داشته باشد.
اگر هیچ
تصویر
هستهای
پیدا نشود،
این متغیر
نیز خالی
خواهد بود.
دستور mkinitcpio
با برخی
متغیرهای
محیطی
ارسالشده
در خط فرمان
هسته،
رفتار
ویژهای
دارد:
break[=<premount|postmount>]
در صورت
تعیین، mkinitcpio در
طول
راهاندازی
اولیه یک شل
اجرا خواهد
کرد.
پارامتر
اختیاری
زمان وقوع
آن را کنترل
میکند:
هنگامی که
premount یا هیچ
پارامتری
مشخص نشده
باشد، شل
پیش از متصل
کردن ریشه
اجرا
میشود. اگر
postmount مشخص
شود، شل پس
از متصل
کردن ریشه
اجرا خواهد
شد.
disablehooks=hooklist
فهرستی
از قلابها
جداشده با
کاما که در
طول
راهاندازی
اولیه
نادیده
گرفته
میشوند.
earlymodules=modulelist
فهرستی
از
ماژولها
جداشده با
کاما که پیش
از سایر
ماژولها
بارگذاری
خواهند شد.
این عموماً
مورد نیاز
نیست و
معمولاً به
مشکلی در
پیکربندی
یا هسته
اشاره
دارد.
quiet
باعث
میشود mkinitcpio در
طول
راهاندازی
پیامهای
کمتری
نمایش دهد.
خطاها
پوشانده
نخواهند
شد.
ro
مشخص
میکند که
ریشه باید
با مجوزهای
فقطخواندنی
(readonly) متصل شود.
این رفتار
پیشفرض
است.
rw
مشخص
میکند که
ریشه باید
با مجوزهای
خواندن/نوشتن
(readwrite) متصل شود.
این عموماً
تنها در
صورتی مفید
است که initramfs شما
از قلاب fsck
استفاده
کند.
root=rootdevice
این
متغیر
پارتیشن
ریشه را
توصیف
میکند که
راهاندازی
اولیه پیش
از واگذاری
کنترل به init
واقعی، آن
را متصل
خواهد کرد. mkinitcpio
قالبهای
متنوعی را
میشناسد
که
پایهایترین
آنها مسیر
دستگاه
بلوکی است،
چه به طور
مستقیم
مانند /dev/sda2،
یا با
استفاده از
یک پیوند
نمادین udev
مانند
/dev/disk/by-label/CorsairF80-root.
پشتیبانی
از شناسایی
با
برچسبهای LABEL
یا
مشخصههای UUID
نیز فراهم
است، مانند
LABEL=CorsairF80-root. از
زمان
انتشار util-linux 2.22،
مقادیر PARTUUID و PARTLABEL
نیز
پشتیبانی
میشوند.
شناسایی از
طریق شناسه
دستگاه major/minor با
کدگذاری
هگزادسیمال
به دلایل
قدیمی
پشتیبانی
میشود،
اما باید از
آن اجتناب
کرد زیرا
شکننده
است.
rootdelay[=seconds]
تأخیر
(بر حسب
ثانیه) را
تعیین
میکند که mkinitcpio
در صورت در
دسترس
نبودن فوری
دستگاه
ریشه، برای
ظاهر شدن آن
منتظر
میماند.
مقدار
پیشفرض 10
ثانیه است.
اگر یک عدد
صحیح
نامعتبر
ارسال شود،
این متغیر
اثری
نخواهد
داشت.
rootflags=flaglist
فهرستی
از پرچمها
جداشده با
کاما که
هنگام متصل
کردن سیستم
فایل ریشه
به دستور
mount(8)
ارسال
میشوند.
مقادیر
قابل قبول
بر اساس
سیستم فایل
متفاوت
است.
rootfstype=fstype
نوع
سیستم فایل
در حال
اتصال به
عنوان ریشه
را
بازنویسی
میکند. این
گزینه
تقریباً
هرگز مورد
نیاز
نخواهد بود
زیرا
mount(8)
معمولاً
خود به خود
این مورد را
تشخیص
میدهد.
rd.debug
اشکالزدایی
شل (xtrace) را فعال
میکند. اگر
rd.log نیز
پارامتری
در خط فرمان
هسته
نباشد، این
پارامتر
متضمن rd.log=console
خواهد بود.
rd.log[=<console|file|kmsg|all>]
ثبت لاگ
پیامهای
فضای
کاربری
اولیه را
فعال
میکند. در
صورت مشخص
شدن،
پارامتر
اختیاری
مکان ثبت
این
اطلاعات را
شرح میدهد.
چندین
گزینه را
میتوان با
استفاده از
نویسه خط
عمودی (|) با
یکدیگر
ترکیب (
OR) کرد.
پیامها
همواره در
کنسول ثبت
میشوند
مگر اینکه
پارامتر
quiet
ارسال شود.
اگر
پارامتر
اختیاری
مشخص نشود،
kmsg|console فرض
میگردد.
اگر
rd.log در خط
فرمان هسته
وجود
نداشته
باشد، هیچ
ثبتی انجام
نخواهد شد.
console
خروجی را
در /dev/console
مینویسد.
file
خروجی را
در /run/initramfs/init.log
مینویسد.
kmsg
خروجی را
در دستگاه
/dev/kmsg
(معرفیشده
در لینوکس 3.5)
مینویسد.
اگر هسته
شما فاقد
پشتیبانی
از /dev/kmsg باشد،
این گزینه
بیاستفاده
(no-op) خواهد
بود.
all
خروجی را
در تمامی
مقاصد
شناختهشده
ثبت لاگ
مینویسد.
اینها
تنها
متغیرهایی
هستند که
هسته اصلی mkinitcpio
رعایت
میکند.
قلابهای
دیگر ممکن
است به
دنبال سایر
متغیرهای
محیطی
باشند و این
موارد باید
در خروجی
راهنمای آن
قلاب مستند
شده باشند.
دستور mkinitcpio
قصد دارد به
طور
پیشفرض
تصاویر initramfs
بازتولیدپذیر
ایجاد کند.
این بدان
معناست که
دو بار
اجرای
پیاپی mkinitcpio
باید دو
فایل تولید
کند که در
سطح باینری
همسان
باشند.
مُهرهای
زمانی درون
initramfs بر روی
مبدأ زمان
یونیکس
یعنی 1970-01-01
تنظیم
میشوند.
توجه
داشته
باشید که
برای
بازتولیدپذیر
بودن کامل
فرآیند
ساخت،
فشردهساز
تعیینشده
(مانند gzip، xz)
نیز باید
آرشیوهای
بازتولیدپذیر
تولید کند.
در زمان
نگارش این
متن، به
عنوان یک
نمونه
غیرجامع،
فشردهساز
lzop به دلیل
درج مُهر
زمانیِ
زمان اجرا،
قادر به
تولید
آرشیوهای
بازتولیدپذیر
نیست.
اطلاعات
بیشتر در
https://reproducible-builds.org قابل
مشاهده
است.
/etc/mkinitcpio.conf
فایل
پیکربندی
پیشفرض
برای mkinitcpio.
/etc/mkinitcpio.conf.d
دایرکتوری
حاوی
فایلهای
پیکربندی
تکمیلی (drop-in).
/etc/mkinitcpio.d
دایرکتوری
حاوی
پیشتنظیمهای
mkinitcpio.
/etc/initcpio/install, /usr/lib/initcpio/install
مسیر
جستجو برای
قلابهای
زمان ساخت.
/etc/initcpio/hooks, /usr/lib/initcpio/hooks
مسیر
جستجو برای
قلابهای
زمان اجرای
فضای
کاربری
اولیه.
/etc/initcpio/post, /usr/lib/initcpio/post
مسیر
جستجو برای
قلابهای
پس از
تولید.
mkinitcpio
انجام یک
اجرای
آزمایشی (dry-run).
این کار یک
دیسک رم
اولیه
تولید
میکند اما
چیزی در
دیسک
نمینویسد.
برای ایجاد
تصویر
واقعی از -g
استفاده
کنید.
mkinitcpio -p linux
ایجاد یک
دیسک رم
اولیه بر
اساس
پیشتنظیم
linux.
mkinitcpio -g /boot/initramfs-linux.img -k
/boot/vmlinuz-linux
ایجاد یک
دیسک رم
اولیه برای
هسته در /boot/vmlinuz-linux.
تصویر حاصل
در /boot/initramfs-linux.img
نوشته
خواهد شد.
mkinitcpio -U /efi/EFI/Linux/systemd-linux.efi
ایجاد یک
دیسک رم
اولیه برای
هسته همراه
با یک تصویر
هسته
یکپارچه.
فایل
اجرایی
حاصل در
/efi/EFI/Linux/systemd-linux.efi
نوشته
خواهد شد.
mkinitcpio -U /efi/EFI/Linux/systemd-linux.efi --splash
/usr/share/systemd/bootctl/splash-arch.bmp
ایجاد یک
دیسک رم
اولیه برای
هسته و یک
تصویر هسته
یکپارچه.
این مورد
همچنین
شامل یک
تصویر
اسپلش است
که در طول
راهاندازی
استفاده
خواهد شد.
دستور mkinitcpio
توسط جامعه
Arch Linux نگهداری
میشود.
برای
مشاهده
فهرست کامل
مشارکتکنندگان
به فایل AUTHORS
مراجعه
کنید.
حق نشر 🄯
مشارکتکنندگان
mkinitcpio. مجوز GPL-2.0-only.