Easiest way to debug such things is with a serial console. Remove "quiet" from cmdline.txt and add "systemd.debug_shell ignore_loglevel" - for initramfs debugging adding "debugging" and "progress" may also help.
I'm not using a USB/SSD here and rarely do updates on SD card, most of the time I netboot my dev systems and update the boot partition with a simple script using the files in the tar
so long,
Hias