< Index

How to set up a Fedora KDE system: Walkthrough

I'm writing this as a nice little guide for installing a full Fedora KDE system, including disabling splash screens that hide system information from you, installing Nvidia proprietary graphics and software like Steam, and how use an all-in-one update script that you can run to update your system instead of using KDE Discover (and why you'd do that). In the past year I've installed Fedora 43 or 44 a total of probably 7 times, so I might as well have somewhere to collect the process I'm using.

Create installation media

To install Fedora, you're either going to be installing in a VM or on bare metal hardware. If you're installing in a VM, you just need to download a Fedora 44 KDE ISO and set that as your boot media, and you're good. Otherwise we're going to be covering installing on bare metal hardware. For this, I'm assuming you have a 8GB or higher USB thumb drive you can fully wipe and use to install operating systems.

Fedora has one of the easiest, best supported media creation processes for USB drives. If you're a person who has used Linux for awhile and is accustomed to downloading an ISO file and using the disk destroyer command dd to create installation media, that will work like always. If you have no idea what I'm talking about, you're also covered, because Fedora has an excellent piece of software called Fedora Media Writer that gives you a nice and safe interface to do the whole process from ISO download to creating the media for you. Apparently, Fedora Media Writer also supports Windows and Mac (though I have not tried it), which would make it especially useful as it is not particularly easy to create bootable installation media from within Windows. On a Linux system, Fedora Media Writer is available cross platform as a Flatpak or it can also sometimes be found in your system repositories, depending on the Linux distro you're using.

Once you have Fedora Media Writer, all you have to do is plug in your USB drive you want to wipe, start up Fedora Media Writer, tell it to download Fedora 44, KDE edition, tell it what USB drive you want your installation media on, then run it. It will take care of the whole process for you.

Boot into the created media and install it

This depends on your particular system, but generally what you want to do is make sure the USB drive is plugged in and do a full reboot of your system (so you see the BIOS splash screen). While the system boots, there's a certain key on your keyboard (depending on your motherboard manufacturer) that will boot into a temporary boot menu, from which you should ideally just be able to pick the USB drive, boot it, and start installation. Common keys for this are F8, F10, F12, Del, Esc, or system-specific keys like the ThinkVantage key on old ThinkPads.

If you're able to access further configuration on your BIOS (and you definitely should be able to ethically if you're on hardware you legally own!), I would recommend for Fedora to try booting the installation media with UEFI boot mode enabled in the motherboard BIOS if possible, only switching to legacy boot if you have issues booting the installation media/resulting system, or if UEFI is just not an option. Fedora has great support for UEFI and Secure Boot, probably the best of any Linux distribution I've ever used. I don't really recommend using Secure Boot most of the time, but definitely use UEFI if you can. UEFI allows tools in Fedora to integrate better with your system and sometimes (though rare) to perform firmware updates on your machine if they're available.

When you are able to configure your BIOS and temporarily boot into the USB installation media, you will be greeted by a GRUB menu asking you what boot option you want. I highly recommend choosing the option here to boot into live mode and also validate your media, so you'll be sure you're starting from a confirmed good installation media and can rule that out as a cause if you have any issues.

This will land you on a live KDE desktop environment after boot. You should try connecting to your wifi here if you use wifi, and confirm audio and basic web browsing work before continuing. The system compatibility will increase from that in the live media by the time we're done with it, but stuff like networking should be working with a default system or else you won't be easily able to continue setup after the initial installation. If you're looking for recommendations for Linux wifi adapters, I recommend a EDUP BE6500 as a PCI-E option for any modern kernel and any desktop computer, or a Alfa AWUS036ACHM USB 2.0 adapter as something that will reliably work on any hardware or laptop but has fairly low performance if you just need any network while you're setting up your system.

Once you are ready and sure the live media works okay, you can use the desktop icon to install Fedora to the hard drive. This installer is pretty clear about what to do, so you can just follow the on-screen prompts. If you want to partition your drive during the installer, note that the one thing I don't like about this installer is that it's not very featureful when it comes to having multiple drives you want to install across, or changing the partitions during boot. For a system I had which used one drive for /home and another for / and /boot, the way I managed to do it was I installed the system as if it was a full install on the / root drive, then since Fedora by default sets / and /home to be one shared volume group, you have access to all of your space through / if you just never use /home. Then, I created a manual fstab entry for my second drive setting it to mount at /home, and also set up SELinux permissions so the system recognized that as a valid home drive. Suffice it to say, it was a pain. So if you need a really strange configuration, you might be looking at a more complicated installation process than the one I'm laying out here. Otherwise though, the default installation and partitioning scheme is pretty good if you're installing to only one drive and just mounting your other drives when needed.

After installation is complete, you'll be returned to the live desktop and requested to restart. What I would do is I would fully shutdown the system, remove the USB, and then start the machine again. This makes the motherboard most likely to boot into the newly installed Fedora drive instead of back into the live media.

First few boots

On the first boot, you'll be asked to make an account. Create a user account to act as your account in WHEEL (aka, your admin account that can use sudo), choose your general dark or light theme, and log in. Now you're in your fully installed Fedora system, ready to customize.

The first thing you should do is open KDE Discover and do a full system update. We won't be using Discover in the future because we'll replace it with a custom update script that does all the same things, but for now it's good for a first set of updates. It should check for updates for your base system, any flatpaks you might have, and your firmware (including secure boot keys). It will request a system reboot after updating; I recommend doing a full reboot, logging back in, and trying to update through Discover again repeatedly until it doesn't install any more additional updates or ask you to reboot again.

Enabling RPM Fusion and Flathub for proprietary software

Next, we're going to enable some additional repositories. If you have Nvidia graphics and want to use the proprietary drivers, or want to use Steam or Discord or other proprietary software, it's recommended that you enable third party repositories to access this software directly through DNF. Fedora itself doesn't distribute much proprietary stuff (I think basically the only proprietary thing distributed with a default Fedora install is the CPU microcode), and they hold all of that code behind RPM Fusion, so it's good to enable. RPM Fusion also has free repositories for more software that's not proprietary, so it's not only proprietary software.

To enable RPM Fusion, you can look at this site from RPM Fusion or this page from Fedora documentation to get started. I'll just give the commands that I use that work for me.

Open a terminal and run the following commands to install RPM Fusion, free and proprietary:

$ sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

$ sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

While running these, you'll have to say yes to allowing their signing keys on your system. This is a trust on first use system; say yes here and your system will remember these signing keys permanently, and it wont ask you about it again.

You may also want to enable Flathub for Flatpaks here. This will give you access to more Flatpaks for your system than the (sometimes buggy) ones curated by Fedora:

$ flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

Once these are installed, I suggest running the following command just to make sure everything is up to date:

$ sudo dnf update --refresh

Now, you can install additional RPM repos for "tainted" software. This is software that might not be legal in certain parts of the world, with stuff like DVD and Bluray decoding and whatnot. It does give you access to some great software though if you have a need for decoding proprietary stuff on your Linux box. To enable these, you can run the following:

$ sudo dnf install rpmfusion-free-release-tainted rpmfusion-nonfree-release-tainted

I also recommend installing the following repository so you have access to Librewolf, which is my personal recommendation for an everyday browser for anyone to use:

$ sudo dnf config-manager addrepo --from-repofile=https://repo.librewolf.net/librewolf.repo

Again, accept any keys if you're prompted during or after installation, and then afterwards, run:

$ sudo dnf update --refresh

Now your fedora system has full access to the wide range of software available to it. The first thing most people will want to do now that they have proprietary drivers is install video codecs. To do this, the only thing that requires any sort of manual intervention on your part will be switching your ffmpeg version from the free version to the proprietary codec supporting version. To do this, run the following:

$ sudo dnf install ffmpeg --allowerasing

If this is working correctly, it should prompt you to install the version of ffmpeg and proprietary codecs for it from RPM Fusion and replace (delete) the previously installed Fedora repo version. Say yes and allow this to happen.

Next, if you have Nvidia graphics (GTX 1650 or later, otherwise you're not going to have driver support) you can now install them. To do so, run the following:

$ sudo dnf install akmods kmod-nvidia akmod-nvidia libva-nvidia-driver nvidia-gpu-firmware xorg-x11-drv-nvidia xorg-x11-drv-nvidia-cuda xorg-x11-drv-nvidia-cuda-libs xorg-x11-drv-nvidia-devel

This will fully install the latest Nvidia graphics and all related features on your system, which will auto update when we update the system. Great.

Finishing touches

Your system is basically ready now, but there's a few tweaks I like to make based on my personal preference and past experiences.

First of all, I have had issues with Plymouth in the past, and all it provides is a boot splash screen, so I usually remove it. I don't like boot splashes because I like to see what the terminal output is on my system during boot to diagnose any issues early, without having to root through a journalctl. From my experience on Fedora 43 and 44, removing Plymouth is totally safe and won't cause any issues later on.

To uninstall plymouth, run:

$ sudo dnf remove plymouth

Next, in keeping with the same theme, I want my system to always show the GRUB boot menu and give me a 10 second countdown before booting. This helps me make sure I'm booting the correct kernel, or switch to an old kernel version if I have any issues. (This can be especially helpful if you have issues with proprietary Nvidia graphics not staying up to date with your latest kernel).

Basically to enable this, we're going to have to customize grub. Assuming you're using nano (replace with vim/nvim if you prefer), run the following command to edit the system GRUB configuration:

$ sudo nano /etc/default/grub

Here, I like to set my GRUB config to something like the following:

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_TIMEOUT=10
GRUB_TIMEOUT_STYLE="menu"
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.driver.blacklist=nouveau nouveau.modeset=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

This is really helpful to customize especially on systems that are using proprietary Nvidia graphics, because it will blacklist the open source nouveau drivers, helping with stability on system boot and between kernel updates.

Once your GRUB config is updated here, save and quit. Then, you also need to run the following command to make sure GRUB always displays on boot and isn't just hidden regardless of what you put in /etc/default/grub:

$ sudo grub2-editenv - unset menu_auto_hide

Now that GRUB is configured, rebuild your GRUB configuration. The default location for your grub.cfg file is /boot/grub2/grub.cfg, so to update your GRUB configuration to this location, run the following command:

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Fedora update script to replace KDE Discover

Now that everything from above is done, once you fully update your system everything will be ready to go. Either use KDE Discover at this point, or run sudo dnf update --refresh, and then reboot to complete the system configuration.

Now that your system is fully installed, I have written an update script that incorporates a lot of the stuff here on every update of your system. The commented update script can be found here. You can download the script and either put it in some directory in your user's PATH, or otherwise just run it manually from the terminal every time you want to update your system and it will automate a lot of the process for you, updating system packages, removing unneeded packages, updating flatpaks, updating kernel modules, and updating your GRUB boot options. I keep my ~/scripts/ directory as the place I store all the random executables in my PATH, and for me one of those is always some sort of update command. Do note that when running it as a WHEEL user and not root, sudo will probably ask you for your password several times, and sudo could be configured in such a way that it will time out mid update if you're not paying attention. (It's pretty obvious when you come back that this happened though.)

Ever since I tried out and got absorbed by Gentoo years ago, I picked up a lot of random little habits from that experience on any Linux system I've tried since. One of the things I picked up is that I realized the value of having all of the commands you would ideally run every boot made to actually run on every boot by making an update script. I really realized I needed this on Fedora when I had a system update misconfigure my graphics drivers and leave me with my kernel updated but my Nvidia graphics driver and kernel module downgraded for specifically the newest kernel. This is a situation where to get back into my system, I needed to use an older kernel (hence the GRUB changes from earlier), and now, in this update script there is manual rebuilding of kernel modules included into the script, as well as the option to reinstall packages that create kernel modules. When this is all uncommented and running on every boot, it extends the system upgrade time and total bandwidth consumption used (from potentially redownloading the already installed Nvidia kernel modules), but it also completely stops this sort of problem from ever happening in practice with issues related to kernel modules. Thankfully it doesn't add a whole lot of build time onto systems that don't have external kernel modules to worry about, so I just run a variant of this script on every one of my deployed Fedora systems, including my Fedora server.

If you have any similar sorts of issues to what I'm describing, I highly recommend exploring POSIX shell scripts to act as portable solutions to these problems that are surprisingly scriptable. My script is just one simple example of what is possible without even using any sort of loops or calculations at all, just a simple boolean success chain.

June 13, 2026