You plugged the Fedora USB into your Dell XPS and hit F12
The boot menu appeared. You selected the USB drive. The screen flickered once and went black. Or maybe the installer loaded, but the Wi-Fi icon shows a red cross and the network is dead. Or you finished the installation, rebooted, and the desktop is sluggish because the system is fighting the NVIDIA GPU.
Dell XPS laptops are among the most Fedora-friendly hardware available. The kernel includes drivers for Intel CPUs, integrated graphics, and most peripherals. The installer detects the drive and partitions correctly. But the hardware stack is dense. Modern XPS models use UEFI firmware with Secure Boot enabled, high-refresh-rate displays that trigger panel self-refresh bugs, and sometimes Broadcom Wi-Fi chips or NVIDIA GPUs that require specific firmware or proprietary drivers.
The installer needs the right kernel parameters, the right firmware blobs, and the right driver strategy to behave. A botched configuration can leave you with a black screen or a system that cannot connect to the network. Follow the steps below to install Fedora, resolve hardware quirks, and verify the system is stable.
The boot chain and firmware loading
Fedora Workstation installs a standard boot chain on UEFI systems. The firmware hands control to the EFI bootloader. Fedora places shimx64.efi on the EFI System Partition. The shim bootloader verifies the digital signature of grubx64.efi before passing control. GRUB loads the kernel and the initial ramdisk.
The initial ramdisk, or initramfs, contains the drivers and firmware needed to mount the root filesystem. The kernel loads firmware files from /lib/firmware at runtime. If the firmware is missing from the initramfs, the kernel sees the hardware but cannot communicate with it. This is why Wi-Fi or Bluetooth might fail until the root filesystem is mounted and the full firmware directory is available.
The linux-firmware package contains binary blobs for Wi-Fi, Bluetooth, and GPU devices. These blobs are not open-source code. They are compiled binaries provided by hardware vendors. Fedora includes them in the linux-firmware package to ensure hardware works out-of-the-box. If you install a new kernel or update firmware, the initramfs must be rebuilt to include the new files.
Run journalctl -xe to check for firmware errors. The x flag adds explanatory text and the e flag jumps to the end. Most sysadmins type journalctl -xeu <unit> muscle-memory style. Look for lines containing firmware: failed to load.
Preparing the installation media
Create a bootable USB drive using dd. This command performs a byte-for-byte copy of the ISO to the device. It works reliably across all Linux distributions.
sudo dd if=Fedora-Workstation-Live-x86_64-41-1.5.iso of=/dev/sdX bs=4M status=progress oflag=sync
# if= points to the ISO file path. Verify the filename matches the downloaded file.
# of= points to the USB device node, not a partition. Use lsblk to identify the correct device.
# bs=4M sets the block size for faster writes. status=progress shows the transfer rate.
# oflag=sync forces a flush after writing to prevent data corruption.
Verify the device node carefully. Writing to the wrong device destroys data. Use lsblk to list block devices and identify the USB drive by size. The output shows device names, sizes, and mount points.
lsblk
# lsblk lists all block devices in a tree format.
# Look for the USB drive by size. It usually appears as /dev/sdX or /dev/mmcblkX.
# Do not use a partition like /dev/sdX1. The target must be the whole device.
Eject the USB drive after dd completes. The system might cache writes. Ejecting ensures all data is written to the disk.
Booting and handling display issues
Boot the XPS. Press F12 repeatedly during power-on to access the boot menu. Select the USB drive. If the screen flickers, shows artifacts, or goes black, interrupt the boot process.
Press e at the GRUB menu to edit the boot entry. Locate the line starting with linux. Add nomodeset to the end of the line. Press F10 to boot.
linux /images/pxeboot/vmlinuz root=live:CDLABEL=Fedora... nomodeset
# nomodeset tells the kernel to skip loading video drivers during boot.
# This prevents black screens caused by incompatible GPU firmware or driver bugs.
# The installer will use a basic framebuffer mode instead of kernel mode-setting.
The nomodeset parameter disables kernel mode-setting. This is a temporary workaround. If the installer works with nomodeset, the issue is likely the kernel mode-setting driver. Check journalctl -xe after installation for i915 or nvidia errors.
Some XPS models with high-refresh-rate screens suffer from panel self-refresh flicker. The nomodeset parameter fixes the flicker but disables hardware acceleration. A surgical fix is i915.enable_psr=0. This disables Panel Self Refresh while keeping kernel mode-setting active. Add i915.enable_psr=0 to the kernel parameters instead of nomodeset if you want better performance.
Use nomodeset when you need a guaranteed stable installer and do not care about performance during setup. Use i915.enable_psr=0 when you want to keep hardware acceleration enabled but need to stop screen flicker.
Partitioning strategies
Launch the Anaconda installer. Proceed to the "Installation Destination" step. Fedora Workstation uses LVM by default. LVM allows flexible resizing of logical volumes later. The installer creates a root volume, a home volume, and a swap volume inside a volume group.
For a clean install, select "Automatically configure partitioning." Anaconda handles the layout. This is the safest option for most users.
If you are dual-booting with Windows, choose "I will configure partitioning." Manually create an ext4 root partition and a swap partition on the unallocated space. Do not touch the Windows EFI or NTFS partitions. Anaconda detects existing EFI System Partitions and offers to reuse them. Reusing the existing ESP ensures both operating systems share the same bootloader directory.
Use automatic partitioning when you want a clean install and trust Fedora's LVM layout. Use manual partitioning when you are dual-booting and need to preserve existing Windows partitions. Use Btrfs if you want subvolume snapshots and compression, though LVM is the default and well-supported.
Post-installation: NVIDIA and Wi-Fi
Reboot after installation. Log in to the desktop. If you have an NVIDIA GPU, Fedora's default open-source nouveau driver may cause issues. The nouveau driver is reverse-engineered and lacks support for newer GPU features. Install the proprietary drivers via dnf.
sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda
# akmod-nvidia installs the kernel module build system and the NVIDIA driver package.
# xorg-x11-drv-nvidia-cuda adds CUDA support for compute workloads.
# The akmod package compiles the kernel module against the running kernel on first boot.
The akmod package builds the kernel module on demand. This ensures the driver matches the exact kernel version. The first boot after installation takes longer. The system compiles the module during boot. The screen may stay black for two to five minutes. Wait for the process to complete.
If Secure Boot is enabled, the kernel refuses to load unsigned modules. The akmod installation prompts you to set a Machine Owner Key password. Enter a password when prompted. This password is used to sign the NVIDIA module. You must enter the password again during the next boot to enroll the key.
sudo dnf install akmod-nvidia-libs
# akmod-nvidia-libs provides shared libraries required by some NVIDIA applications.
# Install this if you run CUDA-based tools or GPU-accelerated software.
# The libraries are needed for runtime linking of GPU applications.
For Wi-Fi issues on older XPS models with Broadcom chips, install the firmware package. The linux-firmware package contains the necessary blobs.
sudo dnf install linux-firmware
# linux-firmware contains binary firmware blobs for Wi-Fi, Bluetooth, and GPU devices.
# The kernel loads these files from /lib/firmware at runtime.
# Installing this package ensures the firmware is present for Broadcom and Intel chips.
Run dnf upgrade --refresh to update the system. This command forces a metadata refresh and updates all packages. It is the normal weekly maintenance command. dnf system-upgrade is for crossing major Fedora releases. They are different commands. Don't conflate them.
Firewall and SELinux hygiene
Fedora ships with firewalld running and SELinux in enforcing mode. This is the secure default. Verify the firewall status.
sudo firewall-cmd --state
# firewall-cmd --state checks if firewalld is running.
# The output should be "running". If not, start the service with systemctl.
# The firewall protects the system from unauthorized network access.
Allow SSH if you need remote access. Add the service to the permanent configuration and reload the firewall.
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
# --permanent adds the rule to the persistent configuration file.
# --reload applies the persistent rules to the running firewall.
# Always reload after permanent changes. The runtime and persistent configs diverge otherwise.
Check SELinux status. The output should be Enforcing.
getenforce
# getenforce returns the current SELinux mode.
# Enforcing is the default and recommended setting.
# Do not disable SELinux. Fix policy denials instead.
SELinux denials show up in journalctl -t setroubleshoot with a one-line summary. Read those before disabling SELinux. Config files in /etc/ are user-modified. Files in /usr/lib/ ship with the package. Edit /etc/. Never edit /usr/lib/.
Verification
Verify the installation worked. Check the GPU driver.
lspci -k | grep -A 3 -i vga
# lspci lists PCI devices. -k shows the kernel driver in use.
# grep filters for the VGA controller and displays the driver name.
# Look for "nvidia" or "i915" in the output to confirm the driver is active.
Check Wi-Fi connectivity.
nmcli device wifi list
# nmcli queries NetworkManager for available Wi-Fi networks.
# If the list is empty, the Wi-Fi interface is down or missing firmware.
# Check journalctl -u NetworkManager for errors.
If you see [FAILED] Failed to start NetworkManager.service during boot, your network configuration probably references a missing interface name. Check the interface names with ip link.
Reboot before you debug. Half the time the symptom is gone.
Common pitfalls
Secure Boot can block proprietary drivers. If the NVIDIA module fails to load, check the boot logs for signature verification failed. Disable Secure Boot in the BIOS or enroll the MOK key. The MOK enrollment screen appears during boot if you set a password during akmod installation.
Touchpad issues occur on some XPS models. The touchpad might stop responding after sleep. Add i8042.nopnp=1 to the kernel parameters. This forces the PS/2 controller to use legacy initialization.
Thermal throttling can reduce performance. Install thermald to manage temperatures.
sudo dnf install thermald
sudo systemctl enable --now thermald
# thermald monitors CPU and GPU temperatures and adjusts fan speeds.
# Enable the service to start thermald on boot.
# This prevents thermal throttling and extends hardware lifespan.
Fedora's release cadence is six months. The N-2 release goes EOL when N+1 ships. Plan upgrades on that cycle. Keep the system updated with dnf upgrade --refresh.
Choosing your Fedora variant
Use Fedora Workstation when you need a desktop environment with GNOME and standard hardware support. Use Fedora Silverblue when you want an immutable base image with atomic updates and rollback capability. Use Fedora Server when you are running headless services and do not need a graphical stack. Use the HWE kernel when your hardware is too new for the stable kernel and requires backported drivers.