[Dica] Como instalar o driver Nvidia 304.137 no Ubuntu 20.04/22.04/23.10

Nesse tópico quero mostrar como instalar o driver Nvidia 304.137 no Ubuntu 20.04/22.04/23.10 e seus derivados

Lembrando que esse driver somente funciona em placas da serie 6 e 7 (6xxx/7xxx)

Antes de iniciar verifique se o sistema e os pacotes estão atualizados rodando o comando sudo apt update; sudo apt upgrade ou utilizando o gerenciador de atualizações da sua distro
OBS: caso tenha uma atualização no kernel talvez seja interessante reiniciar antes de prosseguir
OBS2: caso utilize alguma ferramenta de backup ex: timeshift agora seria uma boa hora para fazer um backup

Caso esteja utilizando XFCE ou sua distro utilize o XFWM4 como gerenciador de janelas rode os comandos abaixo caso contrario ao reiniciar você só verá uma tela preta com o cursor

xfconf-query -c xfwm4 -p /general/vblank_mode -s xpresent
caso o comando acima falhe rode esse
xfconf-query -c xfwm4 -p /general/vblank_mode -t string -s "xpresent" --create

Habilite o multiarch i386
sudo dpkg --add-architecture i386 ; sudo apt update

Abra o terminal e instale esses pacotes necessários
sudo apt install fakeroot git patchelf dpkg-dev libgl1-mesa-dri:i386 libgl1:i386 libc6:i386

Agora vamos fazer o downgrade do Xorg para a versão 1.19 que é a última suportada por esse driver e impedir atualizações futuras a esse pacote
Rode os comandos abaixo linha por linha

wget https://old-releases.ubuntu.com/ubuntu/pool/main/x/xserver-xorg-input-libinput/xserver-xorg-input-libinput_1.1.0-1_amd64.deb
wget http://archive.ubuntu.com/ubuntu/pool/main/x/xorg-server/xserver-xorg-core_1.19.6-1ubuntu4.15_amd64.deb
sudo apt install ./xserver-xorg-input-libinput_1.1.0-1_amd64.deb
sudo apt install ./xserver-xorg-core_1.19.6-1ubuntu* --allow-downgrades
sudo apt-mark hold xserver-xorg-core xserver-xorg-input-libinput

Após isso clone o repositorio e entre na pasta nvidia-304/Ubuntu/nvidia-graphics-drivers
git clone https://github.com/flydiscohuebr/nvidia-304.git ; cd nvidia-304/Ubuntu/nvidia-graphics-drivers

Agora instalamos as dependências necessárias e compilamos o pacote logo em seguida
sudo apt build-dep . ; dpkg-buildpackage -Tget-orig-source ; dpkg-buildpackage -b -us -uc

Instale o pacote gerado
sudo apt install ../nvidia-304_*.deb ; sudo apt-mark hold nvidia-304

Terminando a instalação rode os comandos abaixo para criar o arquivo xorg.conf

sudo nvidia-xconfig --no-logo
sudo sed -i /'Section "Files"'/,/'EndSection'/s%'EndSection'%"\tModulePath \"/usr/lib/nvidia-304/xorg\" \nEndSection"%g /etc/X11/xorg.conf
sudo sed -i /'Section "Files"'/,/'EndSection'/s%'EndSection'%"\tModulePath \"/usr/lib/xorg/modules\" \nEndSection"%g /etc/X11/xorg.conf
sudo sed -i 's/HorizSync/#HorizSync/' /etc/X11/xorg.conf
sudo sed -i 's/VertRefresh/#VertRefresh/' /etc/X11/xorg.conf

Reinstale o pacote libvdpau1
sudo apt install --reinstall libvdpau1

Para finalizar rode esse comando aqui (isso vai corrigir algumas aplicações não iniciarem corretamente)

sudo patchelf --add-needed /usr/lib/x86_64-linux-gnu/libpthread.so.0 /usr/lib/x86_64-linux-gnu/libGL.so.304.137

Caso você planeje em utilizar um kernel acima do 6.2 rode o comando abaixo

sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="[^"]*/& nvidia_drm.modeset=1/' /etc/default/grub
sudo update-grub

Reinicie o computador e pronto driver instalado com sucesso

Caso seja necessário reverter o processo e voltar ao nouveau você pode restaurar o backup ou rodar esses comandos aqui

sudo apt-mark unhold xserver-xorg-core xserver-xorg-input-libinput nvidia-304
sudo apt remove --purge "*nvidia*" && sudo apt autoremove --purge
sudo rm /etc/X11/xorg.conf
sudo rm /etc/X11/xorg.conf.backup
sudo rm /etc/X11/xorg.conf.nvidia-xconfig-original 
sudo apt update && sudo apt upgrade && sudo apt install xserver-xorg-core xserver-xorg-video-all -y

animation.gif

1 curtida

Caso queira utilizar o Xorg 1.19 com todas as correções de segurança (CVE-2024-31083 e anteriores) você pode estar compilando os pacotes do xorg presentes no repositório

Se você viu esse comentário antes de fazer os procedimentos acima, basta pular o passo do downgrade do xorg e executar os comandos abaixo (IMPORTANTE: não esqueça de fazer o downgrade do pacote xserver-xorg-input-libinput antes)
Se você já instalou os pacotes e queira utilizar os pacotes compilados remova o pacote xserver-xorg-core de ser segurado com o comando abaixo
sudo apt-mark unhold xserver-xorg-core

Para compilar o xorg 1.19 vá até o diretório onde se encontra o repositório nvidia-304, abra um terminal e rode os comandos a seguir
cd nvidia-304/Ubuntu/xorg-server ; sudo apt build-dep . ; dpkg-buildpackage -b -us -uc

Pacotes gerados agora basta instalar
sudo apt install ../xserver-xorg-core_1.19.6-1ubuntu* --allow-downgrades ; sudo apt-mark hold xserver-xorg-core