[fixed] 24.04 LTS upgrade broke my system: black screen, no cursor, ssh available

Hello. I just upgraded my system to the 24.04 LTS, and it got broken. After reboot, I get a black screen on both of my monitors, there’s no cursor. I can ssh into the machine remotely and it seems alive, other than the GUI.

I tried using the recovery option in grub, the recovery console started fine, and continuing boot from the recovery console, I got a single screen with reduced resolution with the GUI login, and after logging in, the system seemed to work. However, after another reboot, the normal boot again resulted in black screens.

I had Virtualbox installed, saw some messages related to its kernel driver in dmesg output, so I decided to remove Virtualbox with its kernel driver temporarily. Still no luck, boots to black screens.

No idea what to try next.

I remembered a few years ago I had some trouble with AMD GPUs resulting in a similarly non-bootable OS. At that time, the fix was to add nomodeset parameter to kernel. I tried that, and suddenly I got at least the login screen to show up after regular boot, although it was still with the limited driver.

Based on that, I did some searching around and found first this:

and from there (lnked in the comments):

https://www.reddit.com/r/Kubuntu/comments/1cdko49/comment/l1uf573/

Both of these mentioned that removing splash quiet from the kernel commandline resolved the issue, so I tried that, and it seems to have helped.

Okay, so to elaborate and improve this into a full-blown answer:
The GPU driver in the kernel seems to not like the splash kernel parameter. So the solution is to remove the parameter from kernel commandline. In order to do so, you first need to gain access to the computer - obviously there’s no way in the default boot state: the GUI doesn’t come up at all and the Alt+Ctrl+Fn consoles don’t work either. There are basically two options, you can either use ssh from another computer to log in remotely (if you set up an ssh server previously), or you can boot into recovery mode (reboot, keep pressing either shift or esc until the grub bootloader is displayed, then choose the recovery option).

Once you have access to the system, you need to edit the file /etc/default/grub. In its first few lines, it defines a few variables used to build the grub configuration, and one of the lines should be GRUB_CMDLINE_LINUX_DEFAULT="splash quiet". Using any editor in admin mode (such as sudo mcedit /etc/default/grub), just remove the splash from that line, keeping the rest. I also removed quiet because I like to know what’s going on during boot.

After editing the file, you need to run sudo update-grub like the file instructs you. This will modify the actual boot files with the changes to the config file.

NOTE: This has been tested on a machine with an AMD Ryzen7 5700X CPU and an AMD Radeon RX 6600 GPU. It might not help with other configurations, especially with nVidia GPUs, but it shouldn’t hurt either. You can safely try this and undo if it doesn’t help.