The essentials

Quick reference

One focused task per row. Jump to the related section for complete, working examples.

UseSyntaxExamples
Show effective kernel argumentscat /proc/cmdlineView examples
Inspect boot loader statusbootctl statusView examples
Identify the running kerneluname -rView examples
List recorded bootsjournalctl --list-bootsView examples
Read previous boot errorsjournalctl --boot=-1 --priority=warning --no-pagerView examples
Read current kernel boot logjournalctl --dmesg --boot --no-pagerView examples
Summarize boot timesystemd-analyze timeView examples
Show critical chainsystemd-analyze critical-chainView examples
Rank unit activation timesystemd-analyze blameView examples
Inspect initrd dependenciessystemctl list-dependencies initrd.targetView examples
List a dracut imagelsinitrd /boot/initramfs-$(uname -r).imgView examples
List an initramfs-tools imagelsinitramfs /boot/initrd.img-$(uname -r)View examples
Print detected dracut argumentsdracut --print-cmdlineView examples
Inspect a newly built imagelsinitrd /tmp/initramfs-test.imgView examples
Boot to emergency targetsystemd.unit=emergency.targetView examples
Pause in dracut initramfsrd.break=pre-mountView examples

Linux boot crosses firmware, boot loader, kernel, initramfs, real-root transition, and the service manager. Troubleshoot by locating the failing boundary before changing configuration: preserve the failed boot's logs, read the effective command line, inspect the image paired with that kernel, and test one reversible hypothesis. Boot loader, storage, encryption, and initramfs changes can make a host unbootable, so retain a known-good kernel and verified rescue access.

Step by step

Detailed examples

01

Identify the last successful boot stage and exact artifacts

A blank display before the kernel starts, an initramfs storage prompt, an emergency shell, and a late failed service have different owners. Record firmware/loader status where available, the running or selected kernel release, command line, root filesystem identity, and initramfs filename. bootctl describes systemd-boot environments; its absence does not imply a boot fault on GRUB or other loaders.

Collect read-only boot identity
uname -r
cat /proc/cmdline
findmnt --target / --output SOURCE,FSTYPE,OPTIONS
bootctl status 2>/dev/null || true
Back to quick reference ↑
02

Preserve evidence from the failed boot before it rotates

Persistent journal storage makes previous boots addressable by ID or offset. Start with warning priority, then expand around a concrete unit, device, or timestamp; priority filters can omit useful context. Kernel messages explain probing and root discovery, while userspace records show mounts, generators, dependencies, and service failures. Copy evidence off-host before rebuilding images or repeatedly rebooting.

Compare current and previous boot evidence
journalctl --list-boots
journalctl --boot=-1 --priority=warning --no-pager
journalctl --dmesg --boot=-1 --no-pager
systemctl --failed --no-pager
Back to quick reference ↑
03

Distinguish a slow unit from the path that delayed readiness

systemd-analyze time summarizes broad phases. blame ranks activation duration but ignores whether work ran in parallel and can mislead for device units or Type=simple services. critical-chain follows ordering dependencies toward the selected target. Confirm suspected delays with unit status, dependencies, and monotonic journal timestamps before changing timeouts.

Analyze the startup dependency path
systemd-analyze time
systemd-analyze critical-chain
systemd-analyze blame | head -n 25
systemctl list-dependencies --after multi-user.target
Back to quick reference ↑
04

Inspect the image paired with the selected kernel

The initramfs must include drivers, firmware hooks, storage assembly, encryption, and configuration needed to discover the real root. Image naming and tooling differ: dracut commonly provides lsinitrd, while initramfs-tools provides lsinitramfs. Inspect rather than unpacking into a privileged directory, and compare the boot loader's selected kernel and image—not merely uname -r after a fallback boot.

Look for root-storage support in an image
lsinitrd /boot/initramfs-$(uname -r).img | grep -E 'crypt|lvm|mdraid|nvme'
# Debian/Ubuntu alternative:
lsinitramfs /boot/initrd.img-$(uname -r) | grep -E 'crypt|lvm|mdraid|nvme'
Back to quick reference ↑
05

Build a staged initramfs before replacing boot-critical files

Use the distribution's supported generator and configuration directories; dracut and initramfs-tools are not interchangeable. First verify free space, package/kernel alignment, root-device arguments, and required drivers. Generate to a separate path, inspect it, and only then use the distribution workflow to install it. Never overwrite the only known-good image, and update boot loader configuration only when that platform requires it.

Stage a dracut image for review
df -h /boot /tmp
dracut --print-cmdline
sudo dracut --kver "$(uname -r)" --force /tmp/initramfs-test.img
lsinitrd /tmp/initramfs-test.img | less
# This creates a test image only; it does not make the system boot it.
Back to quick reference ↑
06

Use one-time recovery arguments and keep an exit route

Edit the boot entry for one boot rather than persisting experimental parameters. systemd.unit=emergency.target reaches a minimal userspace environment after root is available; dracut rd.break positions stop within supported dracut images. Recovery shells commonly run as root and may expose encrypted or sensitive storage. Mount filesystems read-only where possible, document every change, and reboot back to a known-good entry after testing.

One-time diagnostic arguments
# Add only in the boot loader's one-time editor; do not persist blindly.
systemd.unit=emergency.target

# On a dracut-based image, stop before the real root mount:
rd.break=pre-mount

# Remove the argument on the next boot after collecting evidence.
Back to quick reference ↑

Sources and further reading

References

Authoritative documentation used to verify and expand this cheat sheet.

  1. systemd ProjectBootupfreedesktop.org
  2. systemd Projectsystemd-analyze(1)freedesktop.org
  3. systemd Projectjournalctl(1)freedesktop.org
  4. Linux Kernel documentationThe kernel's command-line parameterskernel.org
  5. dracut Projectdracut(8)dracut-ng.github.io
  6. dracut Projectdracut.cmdline(7)dracut-ng.github.io

Help us improve

Found a typo or missing example?

Tell us what would make this cheat sheet clearer, more complete, or more useful.

Share feedback