I needed to regenerate initrd. Doing this:
update-initramfs -u -k all
threw up errors for a kernel I compiled and then deleted some time ago (because update-initramfs could not find the /lib/modules directory I had deleted of course).
I thought I had completely removed the kernel by deleting all its entries in /boot and directory in /lib/modules & running sudo update-grub (as in this answer), but apparently there are traces of it somewhere that I should probably clean up.
I read this and dug around in /usr/share/initramfs-tools but I couldn't figure it out.
In man update-initramfs I see that:
The use of "all" for the version string specifies update-initramfs to execute the chosen action for all kernel versions, that are already known to update-initramfs.
But how does it know them? Where does update-initramfs look for kernel versions?
Note: many months later... I added the answer to this question to the tag wiki for initramfs