You upgraded and the screen went black
You run sudo dnf upgrade on a Tuesday evening. The transaction completes without errors. You reboot. The screen stays black. Maybe a blinking cursor appears in the top-left corner. Maybe the monitor reports No Signal. You are staring at a dead display on a machine that was perfectly fine ten minutes ago. This happens more often than you expect. The fix is almost always a driver mismatch or a display manager configuration drift. You do not need to reinstall the system. You just need to get to a terminal and tell the graphics stack what to do.
What's actually happening
Fedora's boot process chains several components together. The kernel loads first. Then the initial ramdisk mounts your root filesystem. Next, systemd starts the display manager, usually GDM. GDM hands off to a compositor, either Wayland or Xorg. Finally, the desktop environment loads. When you update the system, dnf replaces packages across that entire chain. A new kernel might drop support for an old driver interface. A new Mesa release might change how AMD or Intel GPUs report capabilities. A GNOME update might rewrite your monitor layout to target a disconnected port. The chain breaks at one link, and the graphical session never starts. Think of it like swapping a car engine but forgetting to update the wiring harness. The engine turns over, but the dashboard stays dark.
Fedora retains at least two previous kernels by default. That retention policy exists exactly for this scenario. You can always boot the older kernel while you fix the new one. Run dnf upgrade --refresh for routine weekly maintenance. Reserve dnf system-upgrade for crossing major releases. They are different commands with different rollback paths.
Get to a working terminal
You cannot fix a graphical failure from a black screen. You need a text console. If the system is completely frozen, hold the power button to shut it down, then boot again. At the GRUB menu, press e to edit the default entry. Find the line starting with linux. Add rd.break to the end of that line. Press Ctrl + x to boot. This drops you into a root shell before the graphical stack loads.
If the system is running but the display is black, skip GRUB. Press Ctrl + Alt + F2 to switch to a virtual terminal. You will see a login prompt. Enter your username and password. You are now in a functional environment.
Check the journal for the actual failure
The journal records exactly where the boot process stopped. Run the following command to see recent errors:
journalctl -b -p err --no-pager
# -b filters to the current boot cycle
# -p err shows only error-level messages and above
# --no-pager dumps everything to the terminal instead of opening less
Scan the output for gdm, Xorg, nvidia, amdgpu, or i915. The error string tells you which component failed. If you see gdm.service: Failed with result 'exit-code', the display manager crashed during startup. If you see NVRM: GPU is locked, the NVIDIA driver refused to load because of a secure boot or kernel mismatch. If you see modeset failed, the kernel could not initialize the display output.
Run systemctl status gdm to see the last ten log lines alongside the service state. Always check the status before restarting a service. Restarting blindly masks the root cause. Most sysadmins type journalctl -xeu gdm muscle-memory style. The x flag adds explanatory text and the e flag jumps to the end. Use it when the raw error log is too dense.
Rebuild third-party kernel modules
Fedora ships with open-source drivers in the main kernel. Proprietary drivers like NVIDIA live outside the kernel tree. When dnf installs a new kernel, the old driver module no longer matches the new kernel ABI. The system boots, but the GPU driver fails to load. You must rebuild the module against the new kernel headers.
sudo akmods --force
# --force compiles the module even if akmods thinks it is already built
# This pulls the kernel-devel headers and runs the DKMS build cycle
# The compilation links against the currently running kernel version
sudo dracut --force
# Rebuilds the initramfs image to include the freshly compiled module
# Without this step, the early boot stage cannot find the driver
# The new initramfs replaces the old one in /boot
If you use RPM Fusion, ensure kernel-devel matches your running kernel. Run dnf reinstall kernel-devel if the versions drift. The build process takes a minute or two. Watch for Done in the terminal output.
Reinstall or downgrade graphics packages
Sometimes the driver package itself is broken. A rushed release might contain a regression. Reinstalling forces dnf to verify package integrity and replace corrupted files. Downgrading rolls back to the last known good version.
sudo dnf reinstall akmod-nvidia xorg-x11-drv-nvidia-cuda
# Replaces the NVIDIA meta-packages and pulls the latest stable driver
# dnf verifies checksums and restores missing configuration files
# The transaction locks the package database to prevent conflicts
sudo dnf reinstall mesa-dri-drivers mesa-libGL
# Replaces the open-source driver stack for AMD and Intel hardware
# Ensures the Vulkan and OpenGL libraries match the current Mesa release
# Reinstallation clears stale cache files in /var/cache/dnf
If the reinstall does not resolve the issue, downgrade to the previous version:
sudo dnf downgrade akmod-nvidia
# Rolls back to the last installed version in the dnf history
# Use this when a specific driver release introduces a regression
# dnf resolves dependencies automatically during the rollback
Reset display configuration drift
GNOME and KDE store monitor layouts in user configuration files. An update might change how the compositor enumerates outputs. The desktop environment tries to apply a saved layout to a non-existent port. The session hangs on a black screen.
rm -f ~/.config/monitors.xml
# Deletes the cached monitor layout for GNOME
# The compositor will auto-detect connected displays on next login
# Removing the file forces a fresh EDID read from the monitor
rm -f ~/.local/share/kwin/output-config.json
# Removes the KDE display configuration cache
# Prevents KWin from targeting disconnected HDMI or DisplayPort slots
# KDE will regenerate the file after the first successful session
Log out of the TTY or reboot. The display manager will start fresh. The desktop should load with default scaling and positioning.
Handle Wayland and X11 fallbacks
Fedora defaults to Wayland. Some hardware configurations or legacy applications break under the Wayland compositor. The display manager tries to start Wayland, fails silently, and leaves you on a black screen. You can force Xorg as a fallback.
sudo nano /etc/gdm/custom.conf
# Opens the GDM configuration file for editing
# Files in /etc/ are user-modified and survive package updates
# Files in /usr/lib/ ship with the package and should never be edited
Uncomment the line WaylandEnable=false and save the file. Reboot. The display manager will launch Xorg instead. If Xorg works, the issue is a Wayland compositor regression. If Xorg also fails, the problem is lower in the stack.
Verify it worked
Confirm the display manager is running and the session initializes correctly:
systemctl is-active gdm
# Returns 'active' if the display manager is running normally
# Returns 'failed' or 'inactive' if the service crashed or was stopped
# Use this command before attempting to restart the service
loginctl list-sessions
# Shows active user sessions and their type (wayland or x11)
# A healthy session lists your username with a valid session ID
# Multiple sessions indicate successful TTY and graphical logins
Reboot the system normally. The graphical interface should load without intervention. If the black screen returns, the issue lies deeper than a driver mismatch. Check your hardware connections or test with a live USB.
Reboot before you debug. Half the time the symptom is gone.
Common pitfalls and what the error looks like
Forcing a driver install without rebuilding the initramfs leaves the system unbootable. You will see Failed to start NVIDIA Persistence Daemon followed by a drop to emergency mode. The kernel cannot find the module at early boot. Always run dracut --force after akmods.
Editing configuration files in /usr/lib/ breaks package management. Files in /usr/lib/ ship with the RPM. Files in /etc/ are for user modifications. Edit /etc/. Never edit /usr/lib/. A future dnf upgrade will overwrite your changes or refuse to update the package.
Ignoring SELinux denials causes silent failures. The display manager might refuse to start because a context label is wrong. Run journalctl -t setroubleshoot to read the one-line summary. Fix the label with restorecon before disabling SELinux. Disabling it masks the problem and leaves your system exposed.
Trust the package manager. Manual file edits drift, snapshots stay.
When to use this vs alternatives
Use GRUB fallback when the new kernel fails to boot entirely and you cannot reach a TTY. Use TTY switching when the system is running but the graphical session is frozen or black. Use emergency mode when the root filesystem is corrupted or systemd cannot mount drives. Use a live USB when the bootloader is damaged or the disk partition table is broken. Stay on the upstream Workstation if you only deviate from the defaults occasionally.