How to Fix Ubuntu Stuck on Splash Screen After NVIDIA Update (5 Tested Methods That Actually Work)

You updated your NVIDIA driver, rebooted with full confidence — and Ubuntu decided to greet you with a frozen purple splash screen instead of a desktop. No spinning dots, no login prompt, just silence. If you’ve been staring at that screen for the last ten minutes wondering whether to hold the power button, you’re in exactly the right place.

This specific freeze isn’t random. It happens because NVIDIA’s proprietary driver embeds itself deep into the Linux kernel’s graphics stack. The moment a version mismatch slips through — even a minor one — the entire display initialization chain collapses silently. Three root causes trigger this more than any other: a corrupted or outdated initramfs that didn’t regenerate after the kernel updated alongside the driver, a conflict between the NVIDIA proprietary module and the Nouveau open-source driver both trying to claim the GPU at boot, and Secure Boot rejecting unsigned driver modules before they ever get a chance to load.

The critical thing to understand here is that your Ubuntu system is almost certainly not broken at its core. The kernel is likely running fine underneath that frozen splash. The breakdown is happening one layer above — in the graphics subsystem trying to hand control to a driver it can no longer find or trust. Every method in this guide targets a specific failure point in that chain, ordered from the fastest two-minute fix to a complete driver rebuild. At least one of these will restore your system without a reinstall.

Technical DetailSpecification / Requirement
Target PlatformUbuntu 20.04, 22.04, 24.04 LTS
Error TypeGraphical boot freeze / Splash screen hang
Affected LayerNVIDIA kernel module, initramfs, Plymouth, GRUB
Difficulty LevelIntermediate (no prior Linux expertise required)
Estimated Fix Time15 – 45 minutes depending on method
Root Access RequiredYes — sudo or root shell
Tools NeededTTY terminal, GRUB menu, apt package manager
Safe to AttemptYes — no data loss risk with any method below
Backup RecommendedYes — snapshot or backup before driver changes

Method 1: Access a Hidden TTY Terminal and Read the Actual Error

Most Ubuntu users don’t realize the system is still partially alive behind that frozen splash. Before you touch a single config file, switch to a text-mode terminal and let the system tell you exactly what broke. This takes under 60 seconds and completely changes your repair strategy.

  1. Press Ctrl + Alt + F2 simultaneously on your keyboard — this switches away from the graphical Plymouth layer to a raw text terminal called TTY2.
  2. Wait three to five seconds for the login prompt to appear. If TTY2 is blank, try Ctrl + Alt + F3 or F4 — one of them will respond.
  3. Type your Ubuntu username and press Enter, then enter your password (nothing will appear as you type — that’s normal Linux behavior).
  4. Run this command immediately after logging in: journalctl -xe | grep -i nvidia
  5. Read the output carefully. Look for phrases like module not found, version mismatch, failed to initialize, or NVRM: API mismatch. Each of these points to a different root cause and a different fix.
  6. Run a second diagnostic to check whether the display manager itself crashed: systemctl status gdm3
  7. Note any red failed lines — the timestamp next to them tells you exactly when the crash happened relative to your NVIDIA update.

If you see NVRM: API mismatch: the client has the version X.X, the kernel module has version Y.Y — jump directly to Method 3. If you see modprobe: FATAL: Module nvidia not found — Method 2 is your fix. Either way, you now know exactly what you’re dealing with instead of guessing.

Method 2: Rebuild the initramfs — The Most Common Fix

The initramfs is a compressed mini-filesystem that Linux extracts into RAM during early boot. It contains the drivers and modules the kernel needs before it can even mount your real hard drive. When Ubuntu updates the NVIDIA driver but the initramfs rebuild fails silently — which happens more often than it should — your system boots with a stale initramfs that references a driver version that no longer exists on disk.

Rebuilding it takes about 90 seconds and fixes this freeze in roughly 40% of cases.

  1. Switch to TTY2 using Ctrl + Alt + F2 and log in as described in Method 1.
  2. Check which kernel version is currently active so you know what you’re rebuilding for: uname -r Note this output — it should look something like 6.5.0-45-generic.
  3. Run the initramfs rebuild for all installed kernels simultaneously: sudo update-initramfs -u -k all
  4. Watch the output scroll by — you’ll see lines like update-initramfs: Generating /boot/initrd.img-6.5.0-45-generic. If any line says E: or Error, stop and note the message before continuing.
  5. Verify the new initramfs file was written by checking its timestamp: ls -lh /boot/initrd.img-$(uname -r) The date shown should be within the last few minutes — confirming the rebuild just happened.
  6. Reboot cleanly: sudo reboot

If your system boots normally after this — great. If the splash freeze returns, the initramfs wasn’t the root problem. Move to Method 3.

Method 3: Purge the Broken NVIDIA Driver and Reinstall a Verified Stable Version

When the driver package itself installed incorrectly — either because the download was interrupted, a dependency failed silently, or the version released has a kernel compatibility regression — no amount of initramfs rebuilding will help. You need to fully remove the broken driver from the system and replace it with a version that Ubuntu has actually validated for your hardware and kernel.

This is the definitive fix for most post-update splash freezes.

  1. Enter recovery mode by restarting your system and holding Shift as soon as GRUB starts — you’ll see the GRUB boot menu appear.
  2. Select “Advanced options for Ubuntu” using the arrow keys and press Enter.
  3. Choose the recovery mode entry for your current kernel — it will say something like Ubuntu, with Linux 6.5.0-45-generic (recovery mode).
  4. Select “Drop to root shell prompt” from the recovery menu options.
  5. Remount your filesystem with write access before making any changes — by default recovery mode mounts it read-only: mount -o remount,rw /
  6. Check what NVIDIA packages are currently installed so you know what you’re removing: dpkg -l | grep nvidia
  7. Purge every NVIDIA package in one command — the tilde before nvidia is intentional and matches all package names containing that string: apt-get purge ~nnvidia
  8. Clean up leftover dependencies and cached packages: apt-get autoremove && apt-get autoclean
  9. Check which driver version Ubuntu recommends for your specific GPU: ubuntu-drivers devices Look for the line marked recommended — this is the driver Ubuntu has tested against your kernel.
  10. Install the recommended driver (replace 535 with whatever version number appeared as recommended): apt-get install nvidia-driver-535
  11. Rebuild the initramfs with the new driver in place: update-initramfs -u -k all
  12. Reboot and confirm the desktop loads: reboot

Method 4: Add nomodeset and Blacklist the Nouveau Driver Conflict

Even with NVIDIA’s proprietary driver installed, the open-source Nouveau driver can activate simultaneously during early boot and fight for GPU control. When both drivers initialize at the same time, neither wins cleanly — and Plymouth freezes while the kernel sits in a deadlock trying to sort out who owns the display hardware.

The nomodeset parameter bypasses kernel-level mode setting entirely, forcing graphics initialization to happen later in the boot process where the conflict no longer matters. Blacklisting Nouveau permanently prevents this race condition from recurring.

  1. Restart and hold Shift to open the GRUB menu.
  2. Highlight your main Ubuntu boot entry — do not press Enter yet.
  3. Press E to open the boot parameter editor for that entry.
  4. Find the line beginning with linux — scroll right until you see quiet splash near the end of that line.
  5. Position your cursor immediately after splash and add a space followed by nomodeset so it reads quiet splash nomodeset.
  6. Press Ctrl + X to boot with this temporary parameter — this change won’t survive a reboot on its own.
  7. Confirm your system reaches the desktop with this parameter active.
  8. Open a terminal and make the change permanent by editing the GRUB configuration: sudo nano /etc/default/grub
  9. Locate the line GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" and change it to: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
  10. Save with Ctrl + O, press Enter, then exit with Ctrl + X.
  11. Apply the GRUB change: sudo update-grub
  12. Blacklist Nouveau permanently to eliminate the driver conflict at its source: echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.confecho "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/blacklist-nouveau.confsudo update-initramfs -u
  13. Reboot to confirm both changes hold.

Method 5: Boot a Previous Kernel Version and Pin It Until the Driver Stabilizes

If the broken driver update also modified kernel modules that your current kernel depends on, none of the above fixes will fully stick because the problem is rooted in the kernel-driver relationship itself, not just the driver in isolation. Ubuntu keeps your two or three most recent kernel versions installed by default precisely for this scenario. Booting the previous working kernel costs you nothing and confirms whether the issue is kernel-specific.

  1. Restart and hold Shift to open the GRUB menu.
  2. Select “Advanced options for Ubuntu.”
  3. Look for a second kernel entry below your current one — it will have a lower version number like 6.5.0-44-generic versus the current 6.5.0-45-generic.
  4. Select that older kernel entry — not the recovery mode version, the regular boot entry.
  5. Confirm Ubuntu boots fully to the desktop on the older kernel.
  6. Open a terminal and check the exact kernel you’re running: uname -r
  7. Place a hold on this working kernel so Ubuntu’s automatic updates don’t remove it: sudo apt-mark hold linux-image-$(uname -r) linux-headers-$(uname -r)
  8. Set this kernel as the default boot entry by editing GRUB. First, find its exact submenu entry number: grep -E "submenu|menuentry" /boot/grub/grub.cfg | grep -n ""
  9. Update /etc/default/grub — change GRUB_DEFAULT=0 to the submenu path matching your working kernel, formatted as "1>2" where 1 is the submenu index and 2 is the kernel entry index within it.
  10. Apply with sudo update-grub and reboot to verify this kernel loads by default.

Once NVIDIA releases a patched driver that resolves the regression, install it fresh using ubuntu-drivers autoinstall, rebuild initramfs, then remove the hold with sudo apt-mark unhold linux-image-$(uname -r).

Frequently Asked Questions

Why does Ubuntu freeze specifically at the splash screen and not earlier or later in the boot?

The splash screen — rendered by a component called Plymouth — runs immediately after the kernel loads its initial modules but before the display manager (GDM or LightDM) takes over. NVIDIA’s proprietary driver has to be functional and loaded at exactly this handoff point. If the driver module is missing, version-mismatched, or blocked by Secure Boot, Plymouth has nothing to render the display through and simply freezes in place. The system itself hasn’t crashed — it’s suspended mid-initialization, waiting for a graphics handoff that will never come. This is why switching to a TTY with Ctrl + Alt + F2 often still works even when the splash is completely frozen.

Will any of these methods delete my personal files or installed applications?

No. Every method in this guide targets driver packages and boot configuration files only — none of them touch your home directory, your installed software, or your user data. The most invasive step (Method 3’s full driver purge) removes only NVIDIA-related packages, and even that is fully reversible by reinstalling. That said, creating a Timeshift snapshot before starting is genuinely good practice any time you’re modifying kernel-level components. A five-minute backup can save hours of recovery work if something unexpected happens.

How do I stop this from happening every time Ubuntu pushes an NVIDIA driver update?

Three habits eliminate this problem almost entirely. First, always use ubuntu-drivers autoinstall rather than manually selecting driver versions — it cross-references your GPU model, current kernel, and Ubuntu release to select a tested combination. Second, add sudo update-initramfs -u -k all as a final step any time you manually update drivers or kernels. Third, consider switching to the NVIDIA driver from the graphics-drivers PPA instead of the default Ubuntu repositories — it tends to carry patched versions faster after kernel updates. If you’re on a system where stability matters more than getting the latest driver, pinning your NVIDIA driver version with sudo apt-mark hold nvidia-driver-XXX after a known-good install prevents automatic updates from silently introducing regressions.

Leave a Comment