'\" t .\" Title: dracut-shutdown.service .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-02-27 .\" Manual: dracut .\" Source: dracut .\" Language: English .\" .TH "DRACUT\-SHUTDOWN.SERVICE" "8" "2026-02-27" "dracut" "dracut" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "NAME" dracut-shutdown.service \- unpack the initramfs to /run/initramfs .SH "SYNOPSIS" .sp dracut\-shutdown.service .SH "DESCRIPTION" .sp This service unpacks the initramfs image to /run/initramfs. systemd pivots into /run/initramfs at shutdown, so the root filesystem can be safely unmounted. .sp The following steps are executed during a shutdown: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} The system starts to shut down .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} ``$prefix/lib/systemd/system/sysinit.target.wants/dracut\-shutdown.service`` gets its ``ExecStop`` target triggered. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} ``dracut\-shutdown.service`` executes ``/usr/lib/dracut/dracut\-initramfs\-restore`` which unpacks the initramfs to ``/run/initramfs`` .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} systemd kills all processes .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} systemd tries to unmount everything and mounts the remaining read\-only .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} systemd checks if there is a ``/run/initramfs/shutdown`` executable .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} if yes, it does a pivot_root to ``/run/initramfs`` and executes ``./shutdown``. The old root is then mounted on ``/oldroot``. ``/usr/lib/dracut/modules.d/[0\-9][0\-9]shutdown/shutdown.sh`` is the shutdown executable. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} shutdown will try to unmount every ``/oldroot`` mount and calls the various shutdown hooks from the dracut modules .RE .sp This ensures, that all devices are disassembled and unmounted cleanly. .sp To debug the shutdown process, you can get a shell in the shutdown procedure by injecting "rd.break=pre\-shutdown rd.shell" or "rd.break=shutdown rd.shell". .sp .if n .RS 4 .nf .fam C # 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 .fam .fi .if n .RE .sp In case the unpack of the initramfs fails, dracut\-shutdown\-onfailure.service executes to make sure switch root doesn\(cqt happen, since it would result in switching to an incomplete initramfs. .SH "AUTHORS" .sp Harald Hoyer .SH "SEE ALSO" .sp \fBdracut\fP(8)