Resolvendo problema Driver NVIDIA com Kernel 6.8 no Pop!_OS

Esses dias eu tinha comentado que em mais de 10 anos usando Linux eu nunca tive problemas com um driver da NVIDIA, e bom… o destino não se mostra menos irônico, e hoje foi a minha vez. :sweat_smile:

Acredito que foi uma condição particular, mas se você teve também um problema assim, talvez isso possa te ajudar.

geforce-ada-40-series-nv-sfg-295x166@2x
(imagem: NVIDIA)

O que causou o erro? O que aconteceu?

Sinceramente, não sei. Mas o Pop!_OS que eu uso é um upgrade já da outra LTS (20.04), rodando atualmente na base do Ubuntu 22.04, então ele tem muitos pacotes residuais antigos, vários módulos DKMS de versões antigas de drivers da NVIDIA e vários Kernels antigos.

Para você ter uma ideia, o Pop!_OS hoje em dia é bem Bleeding Edge em vários pacotes, drivers e Kernel sendo alguns deles. O Kernel atual está na versão 6.8, e eu tenho arquivos ainda do 5.15 caso eu quisesse usar.

Depois do upgrade para o Kernel 6.8, o meu Driver da NVIDIA passou a funcionar de forma errática. Só um dos meus dois monitores ligava, e o módulo parecia não ter carregado.

Ao tentar instalar novamente a versão 550 do Driver (a mais recente no momento), o dpkg apontava um erro. A versão 470 funcionou, porém, ao reiniciar ele acabou gerando um monitor “fantasma” nas configurações, e o meu sistema pensava que tinha 3 monitores, quando tinha dois. Na usabilidade era funcional, mas a tela de login (GDM) ficava meio bugada, com o usuário descentralizado.

Tudo isso rodando Xorg e no Pop!_OS ainda com o COSMIC baseado em GNOME e uma GTX1050Ti.

Como resolvi o problema?

Ao que parece, o problema estava nos módulos mesmo e algum conflito com edições antigas e o novo Kernel 6.8 que o Pop!_OS estava usando por conta do update recente.

Aqui o passo a passo de como eu resolvi:

Nada como começar limpando a bagunça, então, para remover todos os pacotes da NVIDIA do sistema:

sudo apt purge nvidia-*

Depois vamos limpar os pacotes em cache do apt:

sudo apt autoremove
sudo apt autoclean

Vamos garantir que estamos com o sistema atualizado:

sudo apt update && sudo apt upgrade

E esse próximo é o passo mais importante. Vamos remover os módulos antigos e residuais que estão no sistema. Na instalação futura do driver, eles serão baixados do repositório de toda forma:

sudo rm -rf /var/lib/dkms/nvidia/

Depois dessa remoção, para ter certeza de que não existe nenhum módulo (driver) da NVIDIA carregado, podemos rodar:

dkms status

O terminal deve te mostrar uma lista de eventuais módulos que você use, e aqui depende um pouco do seu setup e sistema. No Pop!_OS vão existir alguns módulos de controle de I/O e ACPI da System76, no meu sistema, também existiam os módulos do Virtualbox e de loopback, para usar o OBS como uma webcam.

O ponto importante é: Não deve haver nenhum da NVIDIA nessa lista, isso significa que o passo anterior deu certo.

Agora, ao invés de instalar o driver para o userspace direto, eu decidi instalar só o módulo para o DKMS, era ele que estava dando problema, então:

sudo apt install nvidia-dkms-550

O número 550 é porque essa é a versão mais recente do driver da NVIDIA disponível para o Pop!_OS no momento que eu escrevo esse texto, caso você esteja utilizando outra versão, basta substituir pelo número adequado.

É possível ver todas as opções de drivers disponíveis para instalação com o comando:

apt list nvidia-driver*

Se o DKMS for instalado com sucesso, muito provavelmente o sistema vai te enviar uma notificação informando que é necessário reiniciar o computador para que o novo módulo ou driver seja carregado completamente.

Você pode ignorar isso e reiniciar depois.

Se a instalação do pacote de nvidia-dkms-550 ocorreu sem erros, você pode ir para o próximo passo, que é instalar o driver em si, que vai puxar o NVIDIA Settings e tudo mais, com:

sudo apt install nvidia-driver-550

A System76 tem um meta-pacote para o driver mais recente chamado system76-driver-nvidia que pode ser usado também no lugar desse último comando.

Provavelmente você vai precisar reinstalar o CUDA se você estava usando para algum estudo de IA ou edição de vídeo.

Teoricamente esse tutorial serve para qualquer distro baseada no Ubuntu, incluindo ele próprio, como o Linux Mint e o Zorin OS, os seus derivados, além, claro, do Pop!_OS.

Foi um problema chatinho, mas perfeitamente contornável, espero que esse guia tenha alguma utilidade para você também, caso você passe pelo mesmo. :slight_smile:

Valeu! :vulcan_salute:

8 curtidas