kexec(8) راهنمای کاربران kexec(8)

kexec - بوت مستقیم به یک هسته جدید

/sbin/kexec [-v (--version)] [-f (--force)] [-x (--no-ifdown)] [-y (--no-sync)] [-l (--load)] [-p (--load-panic)] [-u (--unload)] [-e (--exec)] [-t (--type)] [--mem-min=addr] [--mem-max=addr]

دستور kexec یک فراخوان سیستمی است که به شما امکان می‌دهد از درون هسته در حال اجرا، هسته دیگری را بارگذاری کرده و به آن بوت شوید. kexec وظیفه بارگذار بوت را از داخل هسته انجام می‌دهد. تفاوت اصلی میان یک بوت استاندارد سیستم و بوت با kexec این است که مقداردهی اولیه سخت‌افزار که معمولاً توسط BIOS یا سفت‌افزار (بسته به معماری) انجام می‌شود، در طول بوت kexec انجام نمی‌گیرد. این ویژگی مدت زمان مورد نیاز برای راه‌اندازی مجدد را کاهش می‌دهد.

اطمینان حاصل کنید که هنگام پیکربندی هسته گزینه CONFIG_KEXEC=y را انتخاب کرده باشید. گزینه CONFIG_KEXEC فراخوان سیستمی kexec را فعال می‌کند.

استفاده از kexec شامل موارد زیر است:

(۱) بارگذاری هسته‌ای که قرار است به آن ریبوت شود در حافظه، و
(۲) ریبوت واقعی به هسته از پیش بارگذاری‌شده.

برای بارگذاری یک هسته، نحو دستور به صورت زیر است:

kexec -l kernel-image --append=command-line-options --initrd=initrd-image

که در آن kernel-image فایل هسته‌ای است که قصد دارید به آن ریبوت شوید.

پارامترهای خط فرمانی را که باید به هسته جدید ارسال شوند در command-line-options قرار دهید. ارسال دقیق محتویات /proc/cmdline به command-line-options امن‌ترین روش برای اطمینان از ارسال مقادیر صحیح به هسته‌ای است که در حال راه‌اندازی مجدد است.

گزینه اختیاری initrd-image تصویر initrd مورد استفاده در حین بوت است.

همچنین امکان فراخوانی kexec بدون پارامتر گزینه وجود دارد. در این حالت، kexec هسته مشخص‌شده را بارگذاری کرده و سپس shutdown(8) را فراخوانی می‌کند. اگر اسکریپت‌های خاموش‌سازی توزیع لینوکس شما از راه‌اندازی مجدد مبتنی بر kexec پشتیبانی کنند، درست قبل از ریبوت واقعی دستگاه، kexec را با -e فراخوانی می‌کنند. به این ترتیب دستگاه یک خاموش‌سازی تمیز شامل تمام اسکریپت‌های خاموش‌سازی انجام می‌دهد.

برای مثال، اگر تصویر هسته‌ای که می‌خواهید به آن ریبوت شوید /boot/vmlinux، محتوای /proc/cmdline برابر با root=/dev/hda1، و مسیر initrd برابر با /boot/initrd باشد، برای بارگذاری هسته از دستور زیر استفاده می‌کنید:

kexec -l /boot/vmlinux --append=root=/dev/hda1 --initrd=/boot/initrd

پس از بارگذاری این هسته، با فرض پشتیبانی فضای کاربری از راه‌اندازی مجدد مبتنی بر kexec، می‌توان با یک خاموش‌سازی تمیز با استفاده از دستور زیر به آن بوت شد:

reboot

همچنین می‌توان بدون فراخوانی shutdown(8)، با استفاده از دستور زیر به آن بوت شد:

kexec -e

فعال‌سازی پیام‌های اشکال‌زدایی.
در صورتی که نوع (به‌طور پیش‌فرض crash) بارگذاری شده باشد مقدار 1 و در غیر این صورت 0 را برمی‌گرداند. می‌تواند در ترکیب با -l یا -p برای تغییر نوع استفاده شود. توجه داشته باشید که این گزینه بر سایر گزینه‌ها اولویت دارد و هسته را بارگذاری یا تخلیه نخواهد کرد.
اجرای هسته بارگذاری‌شده فعلی. توجه داشته باشید که این گزینه بدون فراخوانی shutdown(8) به هسته بارگذاری‌شده ریبوت می‌کند.
اجبار به فراخوانی فوری kexec، عدم فراخوانی shutdown(8) (برخلاف عملکرد پیش‌فرض بدون هیچ پارامتر گزینه). این گزینه همانند اجرای -l و -e در یک فراخوانی عمل می‌کند.
باز کردن فایل راهنما برای kexec.
تنظیم سگمنت‌های kexec به گونه‌ای که هسته بتواند در رویدادهای افزودن/حذف گرم پردازنده/حافظه، آن‌ها را با امنیت به‌روزرسانی کند. اگر این گزینه فعال باشد، هسته به‌روزرسانی سگمنت‌های kexec را در رویدادهای افزودن/حذف گرم پردازنده/حافظه در درون خود هسته انجام می‌دهد، بنابراین از نیاز به بارگذاری مجدد هسته kdump جلوگیری می‌شود.
راه‌اندازی مجدد سریع، بدون بررسی‌های یکپارچگی حافظه.
بارگذاری kernel مشخص‌شده در هسته جاری.
بارگذاری هسته جدید برای استفاده در هنگام panic (وحشت هسته).
مشخص کردن اینکه هسته جدید از این type (نوع) است.
مشخص کردن اینکه منحصراً از فراخوان سیستمی جدید KEXEC_FILE_LOAD استفاده شود. در XEN نادیده گرفته می‌شود.
مشخص کردن اینکه منحصراً از فراخوان سیستمی قدیمی KEXEC_LOAD استفاده شود.
ابتدا فراخوان سیستمی جدید KEXEC_FILE_LOAD را امتحان می‌کند و در صورتی که پشتیبانی نشود یا هسته تصویر ارائه‌شده را تشخیص ندهد، به رابط قدیمی KEXEC_LOAD بازمی‌گردد.

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

گزینه KEXEC_FILE_LOAD در سیستم‌هایی که از بوت امن قفل‌شده برای تایید امضای هسته استفاده می‌کنند الزامی است. همچنین ممکن است KEXEC_LOAD در پیکربندی هسته غیرفعال شده باشد.

گزینه KEXEC_LOAD برای برخی فرمت‌های تصویر هسته و در معماری‌هایی که KEXEC_FILE_LOAD را پیاده‌سازی نکرده‌اند الزامی است.

تخلیه هسته هدف kexec فعلی. در صورتی که یک هسته capture در حال تخلیه است، -p را همراه با -u مشخص کنید.
نمایش شماره نسخه ابزار نصب‌شده.
خاموش کردن هسته در حال اجرا، اما بازیابی رابط شبکه در بارگذاری مجدد.
خاموش کردن هسته در حال اجرا، اما صرف‌نظر کردن از همگام‌سازی سیستم‌های فایل.
مشخص کردن پایین‌ترین آدرس حافظه addr برای بارگذاری کد در آن.
مشخص کردن بالاترین آدرس حافظه addr برای بارگذاری کد در آن.
مشخص کردن آدرس پرش به عقب (jump back). (مقدار 0 به معنای عدم پرش به عقب یا عدم حفظ زمینه است).
بارگذاری هسته جدید و حفظ زمینه (context) هسته جاری در طول kexec.
بارگذاری یک تصویر کمکی برای پرش به عقب به هسته اصلی.
استفاده مجدد از initrd از بوت نخست.
چاپ اندازه ناحیه هسته خرابی (crash kernel)، در صورت موجود بودن.

Beoboot-x86

ارسال یادداشت‌های بوت ELF.
ارسال گزینه‌ها به سبک هسته لینوکس.
استفاده از نقطه ورود حالت واقعی (real mode) هسته.

elf-x86

الحاق string به خط فرمان هسته.
تنظیم خط فرمان هسته روی string.
استفاده از خط فرمان سیستم در حال اجرا. هنگامی که یک هسته panic بارگذاری می‌شود، پارامتر crashkernel به‌طور خودکار حذف می‌شود. پارامتر BOOT_IMAGE نیز حذف می‌گردد.
استفاده از file به‌عنوان ramdisk اولیه هسته.
استفاده از file به‌عنوان ramdisk اولیه هسته.

bzImage-x86

الحاق string به خط فرمان هسته.
تنظیم خط فرمان هسته روی string.
استفاده از خط فرمان سیستم در حال اجرا. هنگامی که یک هسته panic بارگذاری می‌شود، پارامتر crashkernel به‌طور خودکار حذف می‌شود. پارامتر BOOT_IMAGE نیز حذف می‌گردد.
استفاده از file به‌عنوان ramdisk اولیه هسته.
استفاده از file به‌عنوان ramdisk اولیه هسته.
استفاده از نقطه ورود حالت واقعی (real-mode).

multiboot-x86

تنظیم خط فرمان هسته روی string.
استفاده از خط فرمان سیستم در حال اجرا. هنگامی که یک هسته panic بارگذاری می‌شود، پارامتر crashkernel به‌طور خودکار حذف می‌شود. پارامتر BOOT_IMAGE نیز حذف می‌گردد.
بارگذاری ماژول mod با آرگومان‌های خط فرمان arg1 arg2 ... این پارامتر را می‌توان چندین بار مشخص کرد.

multiboot2-x86

تنظیم خط فرمان هسته روی string.
استفاده از خط فرمان سیستم در حال اجرا. هنگامی که یک هسته panic بارگذاری می‌شود، پارامتر crashkernel به‌طور خودکار حذف می‌شود. پارامتر BOOT_IMAGE نیز حذف می‌گردد.
بارگذاری ماژول mod با آرگومان‌های خط فرمان arg1 arg2 ... این پارامتر را می‌توان چندین بار مشخص کرد.

elf-ppc64

استفاده از خط فرمان هسته از سیستم در حال اجرا.
تنظیم خط فرمان هسته روی string.
تنظیم خط فرمان هسته روی string.
استفاده از file به‌عنوان دیسک رم اولیه (initial RAM disk).
استفاده از file به‌عنوان دیسک رم اولیه.
مشخص کردن فایل blob درخت دستگاه (device tree blob file). در زمان استفاده از --kexec-file-syscall قابل استفاده نیست.
مشخص کردن فایل blob درخت دستگاه. در زمان استفاده از --kexec-file-syscall قابل استفاده نیست.

فعال‌سازی کنسول سریال.
فعال‌سازی کنسول VGA.
آماده‌سازی هدرهای هسته (core headers) در قالب ELF32.
آماده‌سازی هدرهای هسته در قالب ELF64.
تلاش برای بازنشانی (reset) یک دستگاه استاندارد VGA.
مشخص کردن پورت سریال port برای خروجی اشکال‌زدایی.
مشخص کردن baud rate (نرخ باود) پورت سریال.
عدم استفاده مجدد از پارامتر root=<device> هسته قدیمی در هنگام ایجاد درخت دستگاه مسطح (flattened device tree).
April 2006 Linux