Como instalar Driver NVIDIA antigo no linux mint da forma correta

Tenho um notebook com uma placa de vídeo NVIDIA Geforce 920M, após instalar linux mint o sistema reconheceu uma versão do driver open source Nouveau e estou utilizando, pois a versão mais recente do driver nvidia não é compatível com minha placa de vídeo que é antiga. O desempenho não é dos melhores então quero instalar o driver da NVIDIA, por ser uma placa de vídeo antiga fiz download do arquivo .run direto do site da NVIDIA.

O driver mais recente para a placa de vídeo Geforce 920M é a versão 430.40

minha versão:

  • linux mint linux 64-bit;
  • nome do arquivo: NVIDIA-Linux-x86_64-430.40.run

Baixei o arquivo .run para instalar, mas agora vem a dúvida de um ex usuário de Windows que instalava as coisas clicando em arquivos .exe:

  1. Como instalar o driver nvidia pelo arquivo que eu baixei?
  2. Tem que atualizar a versão do kernel antes?
  3. Para minha placa a versão do site NVIDIA é 430 então o driver versão 470 nunca vai funcionar.

Seria o comando sudo apt install nvidia-dkms-430.40?

Precisa usar esse comando?

eu rodei esses comandos aqui nesta ordem:

E ao rodar esses dois comandos aqui, não aconteceu nada

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

Então rodei este comando

apt list nvidia-driver*

Me retornou uma lista de driver do 460 até 610, nenhum desses é o aceito pela minha placa. Então antes de sair dando comandos aleatórios no terminal seguindo dicas genéricas de IA, prefiro dialogar com outros seres humanos hehe até porque não quero quebrar o sistema.

Fala, mateusmx! Beleza?

Não precisa rodar nenhum sudo apt install nvidia-dkms-430 nem compilar manualmente o arquivo .run do site da NVIDIA (isso costuma ser dor de cabeça para atualizar Kernel depois e costuma quebrar a interface gráfica).

Por desencargo de consciência, limpe tudo de novo:

sudo apt update

sudo apt purge nvidia-*

sudo apt autoremove

Adicone o repositório de drivers legados:

sudo add-apt-repository ppa:graphics-drivers/ppa

sudo apt update

Veja se o sistema consegue ver sua placa de vídeo:

ubuntu-drivers devices

Se tiver tudo ok até aqui, basta mandar instalar:

sudo ubuntu-drivers autoinstall

Daí é só reiniciar.

Fiz tudo na ordem, depois de roda

ubuntu-drivers devices

resultado:
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
vendor : NVIDIA Corporation
model : GK208BM [GeForce 920M]
driver : nvidia-driver-390 - third-party non-free recommended
driver : nvidia-driver-470-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin

um código maluco modalias pci no meio, agora devo seguir com essa parte?

sudo ubuntu-drivers autoinstall

Em nenhum momento selecionei o driver versão 430.40, que é a mais recente para a minha placa de vídeo (o tal arquivo run que fiz download). O comando ubuntu-drivers autoinstall vai instalar qual versão?

Isso aí! Pode seguir com o sudo ubuntu-drivers autoinstall.

O comando vai instalar automaticamente o nvidia-driver-390, pois é o que está marcado com a tag recommended (recomendado) na saída do seu terminal.

Pelo que pesquisei o driver 430 perdeu suporte para os Kernels mais recentes do Linux e foi removido dos repositórios oficiais. (Inclusive deve ser por isso que você teve problemas com essa versão do driver)

sudo ubuntu-drivers autoinstall

resultado:
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
All the available drivers are already installed.

Não sei se essa resposta é boa ou ruim, mas já apareceu a opção de selecionar o driver nvidia 390 no driver manager.

Então é só instalar por lá mesmo, é a forma mais segura e evita que o sistema quebre durante uma atualização da vida.

Após instalar e reiniciar seu sistema. Você pode rodar esse comando para saber se tudo está ok:

nvidia-smi

Mas basicamente é isso mesmo, o driver 430 foi descontinuado, por isso que para sua placa, o Mint já está mostrando o driver certo (o 390)

durante a instalação do driver nvidia 390 pelo driver manager deu esse erro e cancelou a instalação:

Error while installing package: installed nvidia-dkms-390 package post-installation script subprocess returned error exit status 10

Você está com o secure boot ativado na Bios? Esse erro costuma ser um bloqueio de chaves do secure boot.

Sério? Não fazia ideia que podia interferir. Sim o secure boot está ativado.

Seria melhor desativar o secure boot ou tentar instalar mesmo com ele ativado?

Na verdade você pode escolher qualquer um desses dois caminhos. (Eu sinceramente prefiro só desativar o secure boot e pronto)

Caso deseje configurar a chave do secure boot:

sudo dpkg-reconfigure nvidia-dkms-390

Se o terminal abrir uma tela azul (configuração do MOK):

Defina uma senha simples (ex: 12345678) e confirme. (Anote essa senha, você usará ela na reinicialização).

Agora que o script da chave foi gerado, corrija a instalação dos pacotes corrompidos:

sudo dpkg --configure -a

sudo apt install -f

Ao reiniciar o computador (sudo reboot), você verá uma tela azul com a mensagem Perform MOK management:

Selecione Enroll MOK e pressione Enter.

Selecione Continue.

Escolha Yes e digite a senha que você cadastrou no passo 1.

Selecione Reboot.

Cara, acho que se abrir o gerenciador de drivers do Mint e instalar por lá, resolve, não? Ele vai mostrar o driver recomendado e instalar. Acho que não precisa desse monte de código no terminal.

Sim, só que no caso dele o secure boot está bloqueando o driver. Por isso ou ele desativa o bendito secure boot, ou então usa esses comandos que citei acima para criar uma chave pro driver.

Desativei o secure boot na BIOS para facilitar e consegui instalar o driver normalmente pelo gerenciador de drivers do Mint, na verdade até instalou sozinho, o sistema já trocou o driver nouveau para o nvidia automaticamente.

Pelo que pesquisei, o secure boot atrapalha mais do que ajuda.

Inclusive depois de desativar o secure boot, o mint mostrou pela primeira vez uma atualização de kernel no Update manager e parece que instalou sem problemas.

Porém, ao rodar o comando nvidia-smi:
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

ao rodar sudo apt upgrade:

Errors were encountered while processing:
 nvidia-dkms-390
 linux-headers-7.0.0-29-generic
 nvidia-driver-390
 linux-headers-generic-hwe-24.04
 linux-generic-hwe-24.04
 linux-image-7.0.0-29-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

Melhor desativar o secure boot mesmo, evita muuitos problemas. Sobre esse erro, provavelmente o kernel do mint atualizou e/ou não compilou o módulo do driver, o que é ruim, mas fácil de resolver.

Recompile:

sudo dpkg-reconfigure nvidia-dkms-390 (imagino que esse seja o nome do pacote)

Caso faltar alguma dependência:

sudo apt install -f

E ao reiniciar deve resolver.

Ainda não deu certo kkk, vou colar os resultados:

sudo dpkg-reconfigure nvidia-dkms-390

/usr/sbin/dpkg-reconfigure: nvidia-dkms-390 is broken or not fully installed
sudo apt install -f

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
6 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up nvidia-dkms-390 (390.157-0ubuntu7) ...
update-initramfs: deferring update (trigger activated)
update-initramfs: Generating /boot/initrd.img-7.0.0-28-generic
I: The initramfs will attempt to resume from /dev/dm-2
I: (/dev/mapper/vgmint-swap_1)
I: Set the RESUME variable to override this.
INFO:Enable nvidia
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/dell_latitude
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/put_your_quirks_here
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/lenovo_thinkpad
Removing old nvidia-390.157 DKMS files...
Deleting module nvidia-390.157 completely from the DKMS tree.
Loading new nvidia-390.157 DKMS files...
Building for 7.0.0-28-generic 7.0.0-29-generic
Building for architecture x86_64
Building initial module for 7.0.0-28-generic
Error! Bad return status for module build on kernel: 7.0.0-28-generic (x86_64)
Consult /var/lib/dkms/nvidia/390.157/build/make.log for more information.
dpkg: error processing package nvidia-dkms-390 (--configure):
 installed nvidia-dkms-390 package post-installation script subprocess returned 
error exit status 10
Setting up linux-headers-7.0.0-29-generic (7.0.0-29.29~24.04.2) ...
/etc/kernel/header_postinst.d/dkms:
 * dkms: running auto installation service for kernel 7.0.0-29-generic
Sign command: /usr/bin/kmodsign
Signing key: /var/lib/shim-signed/mok/MOK.priv
Public certificate (MOK): /var/lib/shim-signed/mok/MOK.der
applying patch buildfix_kernel_5.13_armhf.patch...patching file common/inc/nv-li
nux.h
patching file nvidia-drm/nvidia-drm-linux.c
Hunk #1 succeeded at 85 (offset 10 lines).
patching file nvidia-modeset/nvidia-modeset-linux.c

applying patch buildfix_kernel_6.2.patch...patching file nvidia-drm/nvidia-drm-c
onnector.c
patching file nvidia-drm/nvidia-drm-drv.c
Hunk #2 succeeded at 240 with fuzz 2 (offset -1 lines).
patching file nvidia/nv-acpi.c
Hunk #1 succeeded at 8 with fuzz 1.
Hunk #2 succeeded at 24 (offset -1 lines).
Hunk #3 succeeded at 77 with fuzz 1 (offset -7 lines).
Hunk #4 succeeded at 338 (offset -11 lines).
Hunk #5 succeeded at 395 with fuzz 1 (offset -11 lines).

applying patch buildfix_kernel_6.3.patch...patching file common/inc/nv-linux.h
Hunk #1 succeeded at 1992 (offset -4 lines).
patching file nvidia-drm/nvidia-drm-fb.c
patching file nvidia-uvm/uvm8.c
patching file nvidia/nv-mmap.c

applying patch buildfix_kernel_6.4.patch...patching file nvidia-drm/nvidia-drm-d
rv.c
patching file nvidia-drm/nvidia-drm-gem-nvkms-memory.c
patching file nvidia-drm/nvidia-drm-gem-nvkms-memory.h


Building module:
Cleaning build area...
unset ARCH; [ ! -h /usr/bin/cc ] && export CC=/usr/bin/gcc; env NV_VERBOSE=1 'ma
ke' -j4 NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=7.0.0-29-generic IGNORE_XEN_PRE
SENCE=1 IGNORE_CC_MISMATCH=1 SYSSRC=/lib/modules/7.0.0-29-generic/build LD=/usr/
bin/ld.bfd CONFIG_X86_KERNEL_IBT= modules.............(bad exit status: 2)
Error! Bad return status for module build on kernel: 7.0.0-29-generic (x86_64)
Consult /var/lib/dkms/nvidia/390.157/build/make.log for more information.
dkms autoinstall on 7.0.0-29-generic/x86_64 failed for nvidia(10)
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
 * dkms: autoinstall for kernel 7.0.0-29-generic
   ...fail!
run-parts: /etc/kernel/header_postinst.d/dkms exited with return code 11
dpkg: error processing package linux-headers-7.0.0-29-generic (--configure):
 installed linux-headers-7.0.0-29-generic package post-installation script subpr
ocess returned error exit status 11
Setting up linux-image-7.0.0-29-generic (7.0.0-29.29~24.04.2) ...
dpkg: dependency problems prevent configuration of nvidia-driver-390:
 nvidia-driver-390 depends on nvidia-dkms-390 (<= 390.157-1); however:
  Package nvidia-dkms-390 is not configured yet.
 nvidia-driver-390 depends on nvidia-dkms-390 (>= 390.157); however:
  Package nvidia-dkms-390 is not configured yet.

dpkg: error processing package nvidia-driver-390 (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of linux-headers-generic-hwe-24.
04:
 linux-headers-generic-hwe-24.04 depends on linux-headers-7.0.0-29-generic; howe
ver:
  Package linux-headers-7.0.0-29-generic is not configured yet.

dpkg: error processing package linux-headers-generic-hwe-24.04 (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of linux-generic-hwe-24.04:
 linux-generic-hwe-24.04 depends on linux-headers-generic-hwe-24.04 (= 7.0.0-29.
29~24.04.2); however:
  Package linux-headers-generic-hwe-24.04 is not configured yet.

dpkg: error processing package linux-generic-hwe-24.04 (--configure):
 dependency problems - leaving unconfigured
Processing triggers for initramfs-tools (0.142ubuntu25.8) ...
update-initramfs: Generating /boot/initrd.img-7.0.0-28-generic
I: The initramfs will attempt to resume from /dev/dm-2
I: (/dev/mapper/vgmint-swap_1)
I: Set the RESUME variable to override this.
Processing triggers for linux-image-7.0.0-29-generic (7.0.0-29.29~24.04.2) ...
/etc/kernel/postinst.d/dkms:
 * dkms: running auto installation service for kernel 7.0.0-29-generic
Sign command: /usr/bin/kmodsign
Signing key: /var/lib/shim-signed/mok/MOK.priv
Public certificate (MOK): /var/lib/shim-signed/mok/MOK.der
applying patch buildfix_kernel_5.13_armhf.patch...patching file common/inc/nv-li
nux.h
patching file nvidia-drm/nvidia-drm-linux.c
Hunk #1 succeeded at 85 (offset 10 lines).
patching file nvidia-modeset/nvidia-modeset-linux.c

applying patch buildfix_kernel_6.2.patch...patching file nvidia-drm/nvidia-drm-c
onnector.c
patching file nvidia-drm/nvidia-drm-drv.c
Hunk #2 succeeded at 240 with fuzz 2 (offset -1 lines).
patching file nvidia/nv-acpi.c
Hunk #1 succeeded at 8 with fuzz 1.
Hunk #2 succeeded at 24 (offset -1 lines).
Hunk #3 succeeded at 77 with fuzz 1 (offset -7 lines).
Hunk #4 succeeded at 338 (offset -11 lines).
Hunk #5 succeeded at 395 with fuzz 1 (offset -11 lines).

applying patch buildfix_kernel_6.3.patch...patching file common/inc/nv-linux.h
Hunk #1 succeeded at 1992 (offset -4 lines).
patching file nvidia-drm/nvidia-drm-fb.c
patching file nvidia-uvm/uvm8.c
patching file nvidia/nv-mmap.c

applying patch buildfix_kernel_6.4.patch...patching file nvidia-drm/nvidia-drm-d
rv.c
patching file nvidia-drm/nvidia-drm-gem-nvkms-memory.c
patching file nvidia-drm/nvidia-drm-gem-nvkms-memory.h


Building module:
Cleaning build area...
unset ARCH; [ ! -h /usr/bin/cc ] && export CC=/usr/bin/gcc; env NV_VERBOSE=1 'ma
ke' -j4 NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=7.0.0-29-generic IGNORE_XEN_PRE
SENCE=1 IGNORE_CC_MISMATCH=1 SYSSRC=/lib/modules/7.0.0-29-generic/build LD=/usr/
bin/ld.bfd CONFIG_X86_KERNEL_IBT= modules.............(bad exit status: 2)
Error! Bad return status for module build on kernel: 7.0.0-29-generic (x86_64)
Consult /var/lib/dkms/nvidia/390.157/build/make.log for more information.
dkms autoinstall on 7.0.0-29-generic/x86_64 failed for nvidia(10)
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
 * dkms: autoinstall for kernel 7.0.0-29-generic
   ...fail!
run-parts: /etc/kernel/postinst.d/dkms exited with return code 11
dpkg: error processing package linux-image-7.0.0-29-generic (--configure):
 installed linux-image-7.0.0-29-generic package post-installation script subproc
ess returned error exit status 11
Errors were encountered while processing:
 nvidia-dkms-390
 linux-headers-7.0.0-29-generic
 nvidia-driver-390
 linux-headers-generic-hwe-24.04
 linux-generic-hwe-24.04
 linux-image-7.0.0-29-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

Obrigado pelo log meu amigo.

Error! Bad return status for module build on kernel: 7.0.0-29-generic

Pelo visto esse kernel não é compatível. Provavelmente você vai ter que fazer downgrade para um kernel mais antigo, que ainda seja suportado

Aí sim, os comandos para recompilar o módulo vão funcionar.

Pesquisando aqui, o 5.15 LTS é compatível

Como descobrir se a versão do kernel é compatível?

Bom, parece que eu saí de um problema e entrei em outro kkk Como eu vejo a versão do kernel que estava utilizando antes de atualizar?

eu rodei alguns comandos aqui

uname -r

7.0.0-28-generic

dpkg --list | grep linux-image

ii linux-image-6.14.0-37-generic 6.14.0-37.37~24.04.1 amd64 Signed kernel image generic
ii linux-image-6.17.0-14-generic 6.17.0-14.14~24.04.1 amd64 Signed kernel image generic
ii linux-image-6.17.0-19-generic 6.17.0-19.19~24.04.2 amd64 Signed kernel image generic
ii linux-image-6.17.0-20-generic 6.17.0-20.20~24.04.1 amd64 Signed kernel image generic
ii linux-image-6.17.0-22-generic 6.17.0-22.22~24.04.1 amd64 Signed kernel image generic
ii linux-image-6.17.0-23-generic 6.17.0-23.23~24.04.1 amd64 Signed kernel image generic
ii linux-image-6.17.0-29-generic 6.17.0-29.29~24.04.1 amd64 Signed kernel image generic
ii linux-image-6.17.0-35-generic 6.17.0-35.35~24.04.1 amd64 Signed kernel image generic
ii linux-image-7.0.0-28-generic 7.0.0-28.28~24.04.1 amd64 Signed kernel image generic
iF linux-image-7.0.0-29-generic 7.0.0-29.29~24.04.2 amd64 Signed kernel image generic
ii linux-image-generic-hwe-24.04 7.0.0-29.29~24.04.2 amd64 Generic Linux kernel image

Compatível com essa versão de driver da nvidia? Se tiver que ser esse, como instalar especificamente essa ver~soa 5.15?

Tranquilo meu amigo, é só um driver antigo demais pra um Kernel moderno de mais. Pelo visto você estava usando o kernel 6.14, que ainda sim não deve ser compatível com o Nvidia 390.

Pela documentação da Nvida esse driver suporta até o kernel 6x. Porém segundo usuários que pesquisei aqui, o kernel 5.15 LTS é o que funciona melhor.

Pra instalar é bem simples na verdade, basta ir naquela interface do próprio mint, o “gerenciador de atualizações” e baixar o Kernel por lá. Depois ao reiniciar o seu PC você escolhe o 5.15.

E é claro, depois você pode voltar e remover os outros kernels se quiser.

Entendi, quebrei a cabeça aqui para conseguir voltar o kernel para 6.14, alterei o GRUB para exibir na inicialização. agora não sei como definir o kernel padraõ para 6.14, e depois ainda teria que instalar a versão 5.15 (e definir como padrão também para testar).

Eu “dialoguei” com a IA, mas antes de fazer e estragar o sistema, se for possível, gostaria de confirmar se é assim mesmo.

Select kernel 6.14 as the default kernel for every time system boot, using terminal

sudo cp /etc/default/grub /etc/default/grub.backup
sudo nano /etc/default/grub

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10

Salvar, regenerate GRUB:

sudo update-grub

Encontrar o nome exato para kernel 6.14:

grep "6.14.0-37" /boot/grub/grub.cfg

Selecionar como default:

sudo grub-set-default "Advanced options for Linux Mint>Linux Mint, with Linux 6.14.0-37-generic"

Check:

sudo grub-editenv list

Dever ver saved_entry= line. Reboot:

sudo reboot

Depois que o sistema iniciar, verificar:

uname -r

Deve exibir:

6.14.0-37-generic

Novamente, agradeço muito pela ajuda, já me sinto sem graça de incomodar tanto. Eu tomo iniciativa de conversar com chat de IA e fazer o que der sozinho. Mas tem coisas que tenho medo de fazer e quebrar o sistema

@mateusmx Não é incômodo nenhum meu amigo, é uma via de mão dupla, você é ajudado e eu aprendo, entende? Todos ganhamos de certa forma rsrsrsrsrs

Mas então, me parece que esses comandos funcionariam sim, mas se fosse eu sinceramente, nem sequer tocaria no terminal nesse caso.

A forma mais segura seria usar aquele menu de trocar o kernel do Mint para instalar uma versão mais antiga, depois você reinicia o PC e pelo próprio grub (clicando ESC enquanto o PC liga) troca visualmente o kernel.

Depois se quiser é só voltar lá naquele menu de kernel e remover o antigo. (É mais seguro pois ele não deixa remover o kernel usado no momento)