DRACUT-SHUTDOWN.SERVICE(8) dracut DRACUT-SHUTDOWN.SERVICE(8)

dracut-shutdown.service - باز کردن و استخراج initramfs در مسیر /run/initramfs

dracut-shutdown.service

این سرویس تصویر initramfs را در مسیر /run/initramfs استخراج می‌کند. هنگام خاموش شدن سیستم، systemd به /run/initramfs منتقل (pivot) می‌شود تا فایل‌سیستم ریشه بتواند با امنیت کامل پیاده (unmount) شود.

مراحل زیر در هنگام خاموش شدن سیستم اجرا می‌شوند:

•سیستم فرآیند خاموش شدن را آغاز می‌کند
•تارگت ``ExecStop`` مربوط به ``$prefix/lib/systemd/system/sysinit.target.wants/dracut-shutdown.service`` اجرا و فعال می‌شود.
•سرویس ``dracut-shutdown.service`` اسکریپت ``/usr/lib/dracut/dracut-initramfs-restore`` را اجرا می‌کند که initramfs را در ``/run/initramfs`` استخراج می‌نماید
•سرویس systemd تمامی فرآیندها را خاتمه می‌دهد
•سرویس systemd تلاش می‌کند تا همه چیز را پیاده (unmount) کرده و موارد باقی‌مانده را به‌صورت فقط‌خواندنی سوار نماید
•سرویس systemd بررسی می‌کند که آیا فایل اجرایی ``/run/initramfs/shutdown`` وجود دارد یا خیر
•در صورت وجود، یک pivot_root به ``/run/initramfs`` انجام داده و ``./shutdown`` را اجرا می‌کند. سپس ریشه قبلی روی ``/oldroot`` سوار می‌شود. فایل ``/usr/lib/dracut/modules.d/[0-9][0-9]shutdown/shutdown.sh`` فایل اجرایی خاموش‌سازی است.
•فرآیند خاموش‌سازی تلاش می‌کند هر سوار شدن در ``/oldroot`` را پیاده کرده و قلاب‌های مختلف خاموش‌سازی را از ماژول‌های dracut فراخوانی کند

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

برای اشکال‌زدایی فرآیند خاموش‌سازی، می‌توانید با افزودن "rd.break=pre-shutdown rd.shell" یا "rd.break=shutdown rd.shell" یک پوسته خط فرمان در فرآیند خاموش شدن دریافت کنید.

# mkdir -p /run/initramfs/etc/cmdline.d
# echo "rd.break=pre-shutdown rd.shell" > /run/initramfs/etc/cmdline.d/50-debug.conf
# touch /run/initramfs/.need_shutdown

در صورتی که استخراج initramfs با شکست مواجه شود، سرویس dracut-shutdown-onfailure.service اجرا می‌شود تا اطمینان حاصل شود که تغییر ریشه (switch root) انجام نشود، زیرا این امر منجر به انتقال به یک initramfs ناقص می‌گردد.

Harald Hoyer

dracut(8)

2026-05-13 dracut