NOTE: Extra time can be from incorrect drivers and falling back. This might apply regardless of slow boot or no boot to GUI. You might post the result of “cat /proc/cmdline” and “lsmod” to see if Nouveau is really gone.
Nouveau and NVIDIA drivers are mutually exclusive. The system will fail graphical mode if both are present, and it sounds like this might be what is happening (if anything interrupted SDKM in the middle of driver additions/changes, then this could account for the problem).
I happen to use Fedora, and put drivers in by hand rather than through packages. Along the line I’ve ended often blacklisting Nouveau through more “enthusiastic” methods which are a bit closer to immune to package issues. One of my discoveries (frustrations) was finding out Fedora had thrown Nouveau all the way into the initial ramdisk, and was present even when the root file system itself no longer had Nouveau. If you start Ubuntu and get the chance to drop into the GRUB command line, then you might be able to find out if it is just a GUI issue (this command line can override conflicting Nouveau even in the initrd).
To start with, you would not want to do this if you have only the Nouveau driver. Presumably, the NVIDIA install would have attempted to put in the NVIDIA driver, but quite possibly you still had something keeping Nouveau around (at least in the initrd even if not in what you expect to be boot from the hard drive). These steps will edit for only one boot, and so this won’t stick around regardless of whether it works or not, but would be a very good starting step for information. If it works, then we can put it into your GRUB as a default parameter.
As GRUB starts you might need to either hit the escape key a few times, or hold the shift key down, so on. We’re not interested in “recovery mode”, but we are interested in the GRUB command line. The goal is that when you find the command line with the kernel arguments we will append some text.
The part of a menu entry which is of interest will look “something like” this (but your “root=UUID=” will differ):
<b>linux</b> /vmlinuz-4.18.0-18-generic root=UUID=1234ebcd-babc-1234-abcd-12341234abcd ro
If you highlight your normal boot entry, I think it is the “e” key to “edit”. Once you get into the edit command line you can make one time edits which won’t save, but will work for a single boot (there will be some keyboard hints at the bottom of GRUB…it’d be hard for me to actually do and watch this while booting my computer and still use it to write in the forum thread, so I’m going by memory). The “linux” line will need you to append some text, which will look like this (the whole right side past “ro” needs to be appended):
linux /vmlinuz-4.18.0-18-generic root=UUID=9425ebcd-b620-4418-be94-7e8f83602f82 ro <u><i><b>rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1</b></i></u>
For reference, the appended text is this, space delimited:
rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1
This part at the end of the “linux…” line turns this into a very long line…be sure to not hit the enter key. Then control-x should execute that edited entry. If it boots to GUI, or if it gets further along, then you probably found the problem (lingering Nouveau which is incompatible with the NVIDIA drivers). The NVIDIA driver always has to go in prior to CUDA going in, and CUDA must go in prior to any other CUDA-based software on the host. Video drivers do not normally load again (and still run in RAM) until reboot, or at least until changing from graphical to text mode and back.
Passing this command to the kernel command line will “probably” override any other attempt from other configuration to load Nouveau.
Rescue mode will not attempt to boot “normally”, and so it is important to try this edit on whatever GRUB entry runs when you just let the system boot without intervening (which is why we want to find the GRUB entry for normal boot, and not for rescue shells).