Hybrid AMD/NVIDIA setup on EndeavourOS Guide

This is for dracut systemd options i struggled to find info about this so i made a guide after getting it working on my 3090 nvidia and my 4gb amd at the same time

#tip do not login via gui it froze for me

1. Using Keyboard Shortcuts (TTYs)

  • Press Ctrl + Alt + F1 (or F2–F6) to switch from the graphical login screen to a virtual terminal.

  • You’ll see a text-based login prompt.

  • Enter your username and password to log in.

  • You’ll now be in a shell session where you can run commands.

2. Returning to Graphical Login

  • To go back to the graphical login screen, press Ctrl + Alt + F7 (sometimes F1 or F2 depending on your distribution and display manager).

3. From GUI Login Screen

  • If you’re already logged in to the desktop environment, you can open a terminal by pressing Ctrl + Alt + T (Ubuntu and many distros) or searching for “Terminal” in the application menu

#step 1

first login via cli then

step 2.

#Configure Dracut for NVIDIA

# Install NVIDIA drivers

sudo pacman -S nvidia nvidia-utils lib32-nvidia-utils

# Install AMD drivers (should already be in kernel)

sudo pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon

# Create dracut config for NVIDIA** sudo nano /etc/dracut.conf.d/nvidia.conf**

Add this one per line

add_drivers+=" nvidia nvidia_modeset nvidia_uvm nvidia_drm "

force_drivers+=" nvidia nvidia_modeset nvidia_uvm nvidia_drm "

omit_drivers+=" nouveau "

Step 3: Configure Kernel Parameters

sudo nano /etc/kernel/cmdline

#Add these parameters one line:

nvidia-drm.modeset=1 nvidia-drm.fbdev=1 module_blacklist=nouveau

Step 4: Blacklist Nouveau

sudo nano /etc/modprobe.d/blacklist-nouveau.conf

#Add: one per line UWU

blacklist nouveau

options nouveau modeset=0

Step 5: Configure NVIDIA Modules

sudo nano /etc/modprobe.d/nvidia.conf

options nvidia_drm modeset=1 fbdev=1

Step 6: Rebuild Dracut Initramfs

# Regenerate initramfs for all kernels

sudo dracut-rebuild

Step 8: Reboot

sudo reboot

After Reboot: Verify Setup

# Check if NVIDIA is loaded

lsmod | grep nvidia

# Check which GPU is being used

glxinfo | grep “OpenGL renderer”

# Verify both GPUs are detected

lspci | grep -E “VGA|3D”

2 Likes

Thanks for putting this together!

A few comments/questions:

You don’t need the add_drivers line here. force_drivers will add them.

Are you sure you need to omit nouveau? Have you tried it both ways?

nvidia-drm.modeset=1 and nvidia-drm.fbdev=1 shouldn’t be needed with modern drivers. It should be atuomatic with anything over 560.35.03-3 since nvidia-utils is now doing that be default. The same is true of blacklisting nouveau so I think this step can be skipped.

As a side note, it doesn’t look like you ran sudo reinstall-kernels so this change may not have even taken effect.

I don’t think this is needed because the change above with nvidia-utils but it definitely shouldn’t be need to blacklist it so many different ways. Using kernel options and modprobe.d are different ways of achieving the same goal. Again, as long you have nvidia-utils, I think you can omit this step.

Same thing here, you don’t need to do this, nvidia-utils is already doing it for you.

its just what i did and it works

1 Like

My point is your are doing a lot of potentially unneeded stuff. I think it is actually a lot simpler than all of that.

1 Like

Doesn’t this happen mostly automatically during install? And what’s the exact purpose of this? I have hybrid gaming laptop and have never needed to jump through these hoops to get system running.

Also, is this meant for EOS or distros in general?

The current installer does not do some of these things. For example, it doesn’t install the vulkan drivers for AMD or early load the nvidia modules as is done in the above instructions.

However, we are considering some improvements in this area for the future.

1 Like

Some more points:

  • nvidia is now nvidia-open
  • lspci may need “VGA|3D|Display” to detect all GPUs

if i dont do this my pc freezes cause im using 2 gpus