If you are experiencing a problem with system boot up due to Systemd, please see the common bugs document before filing a bug. Some easy configuration tweaks that fix a wide range of issues may be listed there. If the problem you are seeing is not listed there or none of the workarounds seem to help, please consider filing a bug to help us make Fedora run better on your hardware.

Be prepared to include some information (logs) about your system as well. These should be complete (no snippets please), not in an archive, uncompressed, with MIME type set as text/plain.

More detailed information on how to configure the kernel for console output can be found at [1].

Redirecting non-interactive outputYou can redirect all non-interactive output to /dev/kmsg and the kernel will put it out on the console when it reaches the kernel buffer by doing

exec >/dev/kmsg 2>&1 </dev/console

Boot into rescue or emergency mode

To boot directly into rescue mode add systemd.unit=rescue.target to the kernel command line.

Enable shell access early in systemd

You can enable shell access early in systemd startup process to fall back on and diagnose systemd related boot up issues with various systemctl commands should systemd startup otherwise fail.

Run echo "openvt -c9 /bin/sh" >> /etc/rc.d/rc.sysinit

To enable shell on tty9.

Various useful systemd related commands

Run systemctl list-jobs

To identify slow boot and look for the jobs that are "running" those jobs are the ones where boot waits for completion on and the ones that listed as "waiting" will be executed only after those which are "running" are completed.

Run systemctl status sshd.service

To examine the current runtime status of a service. ( In the above example the ssh service )

Run systemctl monitor

To monitor unit/job changes.

Run systemctl list-units --type=target

To show all active targets.

Run systemctl show -p "Wants" multi-user.target

To see which services a target pulls in. ( In the above example the multi-user.target )

Run systemd --test --system --unit=multi-user.target

To examine what gets started when when booted into a specific target. ( In the above example the multi-user.target )

Systemd boot parameters

The following boot parameters are also available to further assist with debugging boot issues.

systemd.unit=

Overrides the unit to activate on boot. This may be used to temporarily boot into a different boot unit, for example rescue.target or emergency.service. ( Defaults to default.target. )

systemd.dump_core=

Takes a boolean argument. If true systemd dumps core when it crashes. Otherwise no core dump is created. ( Defaults to true )

systemd.crash_shell=

Takes a boolean argument. If true systemd spawns a shell when it crashes. Otherwise no core dump is created. Defaults to false, for security reasons, as the shell is not protected by any password authentication.

systemd.crash_chvt=

Takes an integer argument. If positive systemd activates the specified virtual terminal when it crashes. ( Defaults to -1 )

Takes a boolean argument. If true shows terse service status updates on the console during bootup. ( Defaults to true )

systemd.sysv_console=

Takes a boolean argument. If true output of SysV init scripts will be directed to the console. ( Defaults to true, unless quiet is passed as kernel command line option in which case it defaults to false. )

systemd.log_target=

Set log target. Argument must be one of console, syslog, kmsg, syslog-or-kmsg, null.