[Silverblue] Completely wiping all traces of NVIDIA from system?

Hi all,

I’m posting this since I couldn’t find any documentation about switching from NVIDIA to another card, specifically AMD Radeon, on Silverblue.

In my case, I recently switched a few systems from NVIDIA GPUs to an AMD Radeon. For example, on my daily driver I now have an Radeon 6600XT. Very nice card at a great price!

I had formerly installed (i.e., layered via RPM Fusion) the proprietary NVIDIA drivers using the guidance in the Silverblue documentation.

After taking out the NVIDIA card and installing the Radeon card, I simply uninstalled the NVIDIA driver with:

rpm-ostree remove kmod-nvidia xorg-x11-drv-nvidia

Just for peace of mind, I also removed the following NVIDIA-related kargs:

rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1

Last, I ran this to double check that I was indeed using the correct kernel driver/module (i.e., amdgpu):

lspci -k | grep amd
	Kernel driver in use: amdgpu
	Kernel modules: amdgpu

After all that, I’m just wondering if there is anything else I need to do to ensure the Radeon card is functioning as it should? Specifically, are there any “leftover pieces” from the NVIDIA proprietary drivers (e.g., configurations) that I need to delete or reset?

I ask because the RPM Fusion documentation itself says this:
https://rpmfusion.org/Howto/NVIDIA#Recover_from_NVIDIA_installer

Recover from NVIDIA installer

The NVIDIA binary driver installer overwrite some configuration and libraries. If you want to recover to a clean state, either to use nouveau or the packaged driver, use:

rm -f /usr/lib{,64}/libGL.so.* /usr/lib{,64}/libEGL.so.* rm -f /usr/lib{,64}/xorg/modules/extensions/libglx.so dnf reinstall xorg-x11-server-Xorg mesa-libGL mesa-libEGL libglvnd* mv /etc/X11/xorg.conf /etc/X11/xorg.conf.saved

These are all dnf instructions, or involve removing read-only files. Of course, Silverblue is immutable, so rather glad I can’t do this.

I normally wouldn’t obsess over things like this, but I’m noticing poor performance on some games on Steam, particularly with Proton (e.g., games like Hyperdimension Neptunia Re;Birth1, which runs flawlessly on my Windows 11 dual boot, and just as well on Silverblue with my NVIDIA card, but crawls to 9 FPS on Radeon). I’ve searched around a bit and found out it might be a Mesa issue with this card (see here), where Mesa just hasn’t caught up yet apparently.

I also just noticed, oddly, that Super Tux Party (installed via flatpak like everything else) runs horribly on this card, but that could also be an issue with the game itself (it’s still in alpha)… or another Mesa issue.

Just to check all my boxes, though, I want to make sure there wasn’t some extra work I needed to do on Silverblue to get the machine back to a pre-NVIDIA state, since apparently you have to do this on Workstation installs.

Thank you!

PS: For the record, on my daily driver I also changed motherboards and processors. I’m now using a Ryzen 5600X on this particular machine, if it matters.

1 Like

Actually, the cleanest way to remove any rpm packages that have been installed is to remove all the same packages.

When you install the nvidia drivers from rpmfusion it installs several xorg packages as well because they are dependencies.

For me, on workstation, I can do a clean removal of all nvidia related packages with dnf remove *nvidia* and I suspect that you can do similarly with rpm-ostree on silverblue.

When packages are installed as an rpm it is generally a bad idea to willy-nilly start removing individual library (.so) files as that may prevent actually uninstalling the rpm and necessitate a reinstall before it can be removed. I would guess that those instructions you referenced may be based on recovery from installing the driver as the rpm was some time back and have not been updated recently.

1 Like

Ah, thanks for that advice.

It’s funny, I actually tried removing *nvidia* using rpm-ostree but didn’t mention it in my original post. In any case, when I tried it then, as well as now, I get this:

rpm-ostree remove *nvidia*
error: Package/capability '*nvidia*' is not currently requested

I’m curious how rpm-ostree layers and delayers packages. Namely, at least with this example, it seems removing an rpm might also clean up the resulting unused dependencies, akin to dnf autoremove? I’m actually not even sure what dependencies were installed with the NVIDIA rpms in the first place (e.g., some of them might not even have the term “nvidia” in them).

Thinking about it, as a user I’d actually expect dependencies to appear in the “Layered Packages” list (or some other list I could use rpm-ostree CLI to view). They are, after all, layered packages. Otherwise, how else would one keep track of all the extra “junk” left over after removing a layered package?

I don’t believe rpm-ostree even has an “autoremove”, which leads me to think it just does this kind of maintenance on its own. If so, that’s really awesome and gives me a huge peace of mind. If not, I’m pleasantly confused. =)