I believe this behavior is caused by the following code in "emergency.service": ExecStart=/bin/dracut-emergency ExecStopPost=-/usr/bin/systemctl --fail --no-block default When the shell is left with "exit" or "^D", the default target (which is "initrd.target" at this point is set to "failed", and the system effectively hangs.