Como descarregar o módulo do kernel 'nvidia-drm'?

9

Estou tentando instalar o driver NVIDIA mais atualizado no Debian Stretch. Eu baixei NVIDIA-Linux-x86_64-390.48.run de aqui , mas quando tento fazer p>

sudo sh ./NVIDIA-Linux-x86_64-390.48.run

como sugerido, aparece uma mensagem de erro.

ERROR: An NVIDIA kernel module 'nvidia-drm' appears to already be loaded in your kernel.  This may be because it is in use (for example, by an X server, a CUDA program, or 
         the NVIDIA Persistence Daemon), but this may also happen if your kernel was configured without support for module unloading.  Please be sure to exit any programs    
         that may be using the GPU(s) before attempting to upgrade your driver.  If no GPU-based programs are running, you know that your kernel supports module unloading,   
         and you still receive this message, then an error may have occured that has corrupted an NVIDIA kernel module's usage count, for which the simplest remedy is to     
         reboot your computer.

Quando tento descobrir quem está usando nvidia-drm (ou nvidia_drm ), não vejo nada.

~$ sudo lsof | grep nvidia-drm
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
~$ sudo lsof -e /run/user/1000/gvfs | grep nvidia-drm
~$

E quando eu tento removê-lo, ele diz que está sendo usado.

~$ sudo modprobe -r nvidia-drm
modprobe: FATAL: Module nvidia_drm is in use.
~$ 

Eu reiniciei e comecei no modo somente texto (pressionando Ctrl + Alt + F2 antes de fornecer nome de usuário / senha), mas recebi o mesmo erro.

Além disso, como eu "sei que meu kernel suporta descarregamento de módulos"?

Estou recebendo alguns avisos de inicialização relacionados à nvidia, não sei se eles estão relacionados:

Apr 30 00:46:15 debian-9 kernel: nvidia: loading out-of-tree module taints kernel.
Apr 30 00:46:15 debian-9 kernel: nvidia: module license 'NVIDIA' taints kernel.
Apr 30 00:46:15 debian-9 kernel: Disabling lock debugging due to kernel taint
Apr 30 00:46:15 debian-9 kernel: NVRM: loading NVIDIA UNIX x86_64 Kernel Module  375.82  Wed Jul 19 21:16:49 PDT 2017 (using threaded interrupts)
    
por Rodrigo 30.04.2018 / 06:07

5 respostas

8

Eu imagino que você queira parar o gerenciador de exibição, que é o que eu suspeito que estaria usando os drivers da Nvidia.

Após mudar para um console de texto (pressionando Ctrl + Alt + F2 ) e logando como root, use o seguinte comando para desabilitar o alvo gráfico, que é o que mantém o gerenciador de exibição em execução:

# systemctl isolate multi-user.target

Neste momento, esperamos que você possa descarregar os drivers da Nvidia usando modprobe -r (ou rmmod diretamente):

# modprobe -r nvidia-drm

Depois de conseguir substituí-lo / atualizá-lo e estar pronto para iniciar o ambiente gráfico novamente, você pode usar este comando:

# systemctl start graphical.target

Espero que isso ajude!

    
por 04.05.2018 / 18:14
4

lsof lista todos os arquivos que estão em uso pelos processos do userspace. Mas nvidia_drm é um módulo do kernel, portanto, lsof não necessariamente verá se está realmente em uso. (O arquivo do módulo não será aberto porque o kernel já o carregou completamente na RAM. Mas o módulo pode estar fornecendo serviços para o espaço do usuário ou outros componentes do kernel, e isso é o que impede o descarregamento de o módulo.)

Execute lsmod | grep nvidia.drm e veja os números à direita do nome do módulo nvidia_drm . O primeiro número é simplesmente o tamanho do módulo; o segundo é a contagem de uso. Para remover o módulo com sucesso, a contagem de uso deve ser 0 primeiro.

Se o servidor X11 estiver em execução e usando o driver nvidia , o módulo do kernel nvidia_drm certamente estará em uso. Então, você precisará, no mínimo, mudar para o console de texto e desligar o servidor X11. Geralmente, isso pode ser feito interrompendo qualquer serviço do X Display Manager que você esteja usando (depende do ambiente de área de trabalho que você está usando).

Como a mensagem de erro dizia, se você estiver executando nvidia-persistenced , precisará parar também antes de poder descarregar o módulo nvidia_drm .

    
por 30.04.2018 / 08:39
1

Você relata em comentários que interromper o serviço systemd-logind o leva de volta ao login gráfico . Se você tem um login gráfico, então X está rodando, então o driver de vídeo está carregado e em uso. Isso muito provavelmente explica em parte porque o módulo nvidia-drm está em uso.

Além disso, você revela um equívoco aparente quando diz

I have rebooted and started in text-only mode (by pressing Ctrl+Alt+F2 before giving username/password), but I got the same error.

Pressionar Ctrl + Alt + F2 alterna para um terminal virtual # 2, que pode ser configurado para login em modo texto, mas está muito longe de "iniciar no modo de texto". Se você tinha uma tela de login gráfica no terminal virtual padrão, então X está rodando, e mudar para um VT diferente não muda isso. Você está apenas fazendo login em uma sessão não-X.

A primeira e mais fácil coisa a tentar é realmente desligar o servidor X. A maneira antiga de fazer isso seria logar em sua sessão em modo texto e executar o comando

telinit 3

para mudar para o nível de execução 3. Isso também deve funcionar com o systemd, mas a maneira nativa do sistema seria executar

systemctl isolate multi-user.target

Ambos exigem privilégios, é claro, então você precisará usar sudo ou tornar-se root.

Se isso não remover o módulo, ou pelo menos possibilitar que você o faça manualmente, sua próxima melhor aposta seria inicializar o sistema diretamente no nível de execução 3 (destino de vários usuários) ou talvez até mesmo no runlevel 1 (alvo de resgate). Eu costumo fazer isso adicionando "3" (ou "1") ao final da lista de argumentos do kernel no momento da inicialização via bootloader. Você também pode alterar o destino de inicialização padrão, conforme descrito em este artigo .

Observe também que o driver nVidia está disponível em pacotes pré-compilados para a maioria das distribuições Linux. Poucos incluem esses pacotes em seus próprios repositórios padrão, porque o driver é, afinal, proprietário, mas você pode certamente encontrar um repo de terceiros respeitável que o tenha. Eu recomendo strongmente o uso de tais pacotes em vez de executar o instalador diretamente, mas para chegar lá de onde você está agora, você pode precisar primeiro desinstalar manualmente o driver.

    
por 07.05.2018 / 17:03
1

Eu tive um problema semelhante.

*Reason: nvidia.drm package was in use


Eu consertei isso limpando todos os pacotes da NVIDIA.

Remova todas as instalações anteriores da NVIDIA com estes dois comandos:


$ sudo apt-get purge nvidia* $ sudo apt-get autoremove

O módulo deve ser removido.

Reinicie e siga em frente.

    
por 29.09.2018 / 01:42
0

Tive o mesmo problema com o Debian Stretch ao tentar instalar os drivers da Nvidia. Quando em mod de texto minha única solução foi remover o driver, reinstale o gdm e o gnome-shell. Eu sei que é uma solução desajeitada, mas lembro que tentei consertar o gnome-shell e remover apenas o driver da Nvidia e reinstalar o GDM. Acabou que ficou muito mais fácil reinstalar o shell inteiro.

    
por 01.05.2018 / 13:55