The failure should have shown a red
[ FAIL ] on the console (instead of
[ OK ]), with the unit's description next to it. Typically the first failures are most important. Use shift+pageup on the console to scroll up and view the past few screenfuls of output. This might not work if there's too much output.
This works even if you don't normally see
[ OK ] messages, e.g. due to
quiet on the kernel command line as used by Debian. On the first failure, systemd switches to verbose mode.
Otherwise, you can use
systemctl. Without any options, it shows a massive list of known units with failures highlighted in red. To show just the failed ones, use
systemctl --state=failed or
If you search through the unit files, there are only a very few ways for the boot to fall back to
emergency.target. It's usually when a
.mount unit for a local filesystem fails, causing
local-fs.target to fail. Or when your initramfs fails to mount the root filesystem, if your initramfs uses systemd.
OnFailure=emergency.target. And it gets failed because units for local filesystems are automatically added to the Requires list of local-fs.target (unless they have
$ systemctl show --property Requires local-fs.target
Requires=-.mount home.mount boot.mount boot-efi.mount