Storage and USB
Problems with the drive Linux runs from. Which drives and ports to use in the first place is on Drives and USB ports.
USB SSD disconnects, freezes or shows I/O errors
Many USB-C SSDs and enclosures have buggy UAS support. Turn UAS off for that drive only: find its ID (xxxx:yyyy) with lsusb, then add this to cmdline.txt:
usb-storage.quirks=xxxx:yyyy:u
Some enclosures don't boot with the loader
If Linux won't boot from an SSD in a USB enclosure, try a different enclosure.
Rear ports and M.2 enclosures
An M.2 enclosure that boots from the rear USB-A ports on one kernel is sometimes only detected on the front USB-C port with another. Whether that is the kernel or the enclosure isn't settled. If a rear port shows nothing, move the drive to the front USB-C port before you look further.
Enclosure goes to sleep
Some SSD enclosures have their own idle timer and don't wake up again once Linux has started. The symptoms look like a dead display or a bad image. Turn off the desktop's automatic screen blanking so the system stays active, and if the enclosure still sleeps, use another one.
The drive shows much less free space than its capacity
The root partition starts small and is meant to grow to the drive on the first boot. If df shows only a few GB free on a much larger drive, grow the filesystem:
sudo resize2fs /dev/sda1
Change the device and partition to match your drive.
Root filesystem not found or boot hangs
If the kernel starts but reports that it can't find the root filesystem, or boot stalls with a USB SSD, the drive is probably slow to appear. Add these to cmdline.txt, together with the UAS setting above if you have I/O errors:
rootwait rootdelay=60 usbcore.autosuspend=-1
rootwait rootdelay=60 waits up to 60 seconds for the drive, and usbcore.autosuspend=-1 stops USB devices from going to sleep. For two drives, list both in the quirks: usb-storage.quirks=xxxx:yyyy:u,aaaa:bbbb:u.