Getting Nvidia GPU working on Linux

1 minute read

# Setting up

# Nvidia propieretory drivers and stuff

sudo pacman -S nvidia-dkms opencl-nvidia lib32-opencl-nvidia libglvnd nvidia-utils lib32-libglvnd lib32-nvidia-utils nvidia-settings

# Note: If using "linux" kernal install "nvidia" driver. For "linux-zen" install "nvidia-dkms".
# Also remove the package "optimus-manager" because it blacklists nvidia kernel modules.

 

# Grub config

Add nvidia-drm.modeset=1 rd.driver.blacklist=nouveau modprobe.blacklist=nouveau in GRUB_CMDLINE_LINUX_DEFAULT= inside the file /etc/default/grub

sudo vim /etc/default/grub

Put the cmdline parameters

GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet nvidia-drm.modeset=1 rd.driver.blacklist=nouveau modprobe.blacklist=nouveau"

 

Then generate grub config

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

 

# Initramfs

sudo vim /etc/mkinitcpio.conf
MODULES=(amdgpu nvidia nvidia_modeset nvidia_uvm nvidia_drm)
sudo mkinitcpio -P

 

# Now Reboot.

sudo reboot now

 

# Check if the modules are loaded successfully

lsmod | grep nvidia

This should output something like this:

 ~ lsmod | grep nvidia
nvidia_drm            122880  5
nvidia_uvm           6602752  0
nvidia_modeset       1605632  3 nvidia_drm
video                  77824  3 amdgpu,ideapad_laptop,nvidia_modeset
nvidia              60506112  29 nvidia_uvm,nvidia_modeset

 

# Run Aplications using nvidia gpu

# Prepend these Environment Variables before applications to run with nvidia gpu:

DRI_PRIME=pci-0000_01_00_0 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia

Syntax:
DRI_PRIME=pci-0000_01_00_0 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia <command>

Example:
DRI_PRIME=pci-0000_01_00_0 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia shotcut
DRI_PRIME=pci-0000_01_00_0 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo -B
DRI_PRIME=pci-0000_01_00_0 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia vulkaninfo

 

# Or, just use prime-run command

Syntax:
prime-run <command>

Example:
prime-run shotcut
prime-run glxinfo -B
prime-run vulkaninfo

 

# You can check which programs are using nvidia gpu

nvidia-smi

 

Troubleshooting

If you run into problem with CUDA then try running nvidia-modprobe.

 

Done!