AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 440840
Accepted
Rodrigo
Rodrigo
Asked: 2018-04-30 20:07:43 +0800 CST2018-04-30 20:07:43 +0800 CST 2018-04-30 20:07:43 +0800 CST

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

  • 772

Estou tentando instalar o driver NVIDIA mais atualizado no Debian Stretch. Eu baixei NVIDIA-Linux-x86_64-390.48.rundaqui , mas quando tento fazer

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

conforme sugerido, uma mensagem de erro é exibida.

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 tento removê-lo, 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 o nome de usuário/senha), mas recebi o mesmo erro.

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

Estou recebendo alguns avisos na inicialização relacionados à nvidia, mas não faço ideia 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)
debian kernel
  • 13 13 respostas
  • 158676 Views

13 respostas

  • Voted
  1. Best Answer
    filbranden
    2018-05-05T08:14:32+08:002018-05-05T08:14:32+08:00

    Imagino que você queira interromper o gerenciador de exibição, que é o que eu suspeito que esteja usando os drivers da Nvidia.

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

    # systemctl isolate multi-user.target
    

    Neste ponto, eu esperaria que você pudesse descarregar os drivers da Nvidia usando modprobe -r(ou rmmoddiretamente):

    # modprobe -r nvidia-drm
    

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

    # systemctl start graphical.target
    
    • 86
  2. Clayton Mork
    2019-06-12T00:25:16+08:002019-06-12T00:25:16+08:00

    Instalação CUDA

    1) Faça o download do kit de ferramentas CUDA mais recente

    2) Mude para tty3 pressionando Ctl+Alt+F3

    3) Descarregue nvidia-drm antes de prosseguir.

    3a) Isolar multiusuário.alvo

    sudo systemctl isolate multi-user.target
    

    3b) Observe que o nvidia-drm está em uso no momento.

    lsmod | grep nvidia.drm
    

    3c) Descarregue nvidia-drm

    sudo modprobe -r nvidia-drm
    

    4d) Observe que o nvidia-drm não está mais em uso.

    lsmod | grep nvidia.drm
    

    5) Vá para a pasta de download e execute a instalação do cuda.

    sudo sh cuda_10.1.168_418.67_linux.run
    

    6) Responda a todos os prompts durante a instalação.

    7) Quando a instalação terminar, confirme se a versão CUDA foi atualizada.

    nvidia-smi
    

    8) Inicie a GUI novamente.

    sudo systemctl start graphical.target
    
    • 14
  3. telcoM
    2018-04-30T22:39:48+08:002018-04-30T22:39:48+08:00

    lsoflista todos os arquivos que estão em uso pelos processos do espaço do usuário. Mas nvidia_drmé um módulo do kernel, então lsofnão necessariamente verá se está ou não 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 que impede o descarregamento do módulo.)

    Execute lsmod | grep nvidia.drme veja os números à direita do nvidia_drmnome do módulo. O primeiro número é simplesmente o tamanho do módulo; a segunda é 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 nvidiadriver, o nvidia_drmmódulo do kernel certamente estará em uso. Portanto, você precisará, no mínimo, alternar para o console de texto e desligar o servidor X11. Normalmente, isso pode ser feito parando qualquer serviço do X Display Manager que você esteja usando (dependendo de qual ambiente de área de trabalho você está usando).

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

    • 6
  4. Dave B
    2020-01-06T11:36:19+08:002020-01-06T11:36:19+08:00

    Resolvi esse problema desativando a GUI, reiniciando, fazendo login e instalando o driver, habilitando a GUI e reiniciando.

    Certifique-se de saber seu nome de usuário e senha!!!

    Abra um terminal e escreva

    sudo systemctl set-default multi-user.target
    sudo reboot 0
    

    Agora faça o login e você chegará diretamente a um terminal, instale o driver Observe que estou instalando aqui o 440.44 , então você precisa modificar para a versão do driver .

    sudo ./NVIDIA-Linux-x86_64-440.44.run
    

    Depois de instalar o driver, habilite a GUI e reinicie:

    sudo systemctl set-default graphical.target
    sudo reboot 0
    

    você deveria ter terminado

    No meu caso, a nvidia-smi relatou a nova versão 440.44, choramingar nos utilitários de software e atualizações do Ubuntu 18.04, a guia Drivers adicionais mostra 435 !! Outro mistério da NVIDIA, mas caramba, meu novo docker funciona!!!

    • 6
  5. Kelly
    2018-09-29T15:42:28+08:002018-09-29T15:42:28+08:00

    Eu tive um problema parecido.

    *Motivo: o pacote nvidia.drm estava em uso


    Eu consertei limpando todos os pacotes da NVIDIA.

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


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

    O módulo deve ser removido.

    Reinicie e vá em frente.

    • 4
  6. John Bollinger
    2018-05-08T07:03:59+08:002018-05-08T07:03:59+08:00

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

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

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

    Pressionar Ctrl+Alt+F2 alterna para um terminal virtual nº 2, que pode muito bem ser configurado para login em modo de texto, mas está muito longe de "iniciar em modo de texto". Se você tivesse uma tela de login gráfica no terminal virtual padrão, o X estaria em execução e mudar para um VT diferente não mudaria isso. Você está apenas entrando 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 fazer login na sua sessão de modo de 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 systemd seria executar

    systemctl isolate multi-user.target
    

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

    Se isso não remover o módulo, ou pelo menos permitir que você faça isso manualmente, sua próxima melhor aposta seria inicializar o sistema diretamente no nível de execução 3 (alvo multiusuário) ou talvez até mesmo no nível de execução 1 (alvo de resgate). Normalmente faço isso adicionando "3" (ou "1") ao final da lista de argumentos do kernel no momento da inicialização por meio do gerenciador de inicialização. Você também pode alterar o destino de inicialização padrão conforme descrito neste artigo .

    Observe também que o driver nVidia está disponível em pacotes pré-criados 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ê certamente pode encontrar um repositório respeitável de terceiros que o possua. Eu recomendo fortemente usar esses pacotes em vez de executar o instalador diretamente, mas para chegar lá de onde você está agora, pode ser necessário primeiro desinstalar manualmente o driver.

    • 3
  7. alexdemartos
    2019-06-12T05:04:50+08:002019-06-12T05:04:50+08:00

    Parar systemd-logindcorrigiu para mim:

    sudo systemctl stop systemd-logind
    

    Isso é sugerido como uma solução alternativa neste problema do github na página github nvidia-xrun:

    Boas notícias pessoal, systemd-logind é o culpado aqui. A solução atual é executar o seguinte comando após sair da sessão "nvidia-xrun" sudo systemctl stop systemd-logind

    Em seguida, você terá que remover manualmente os outros módulos nvidia e desligar o DGPU manualmente. Aqui está o trecho de código que é executado depois que você sai da sessão "nvidia-xrun".

    echo 'Unloading nvidia_drm module' 
    execute "sudo rmmod nvidia_drm"
    
    echo 'Unloading nvidia_modeset module' 
    execute "sudo rmmod nvidia_modeset"
    
    echo 'Unloading nvidia module' 
    execute "sudo rmmod nvidia"
    
    echo 'Turning off nvidia GPU' 
    execute "sudo tee /proc/acpi/bbswitch <<<OFF"
    
    echo -n 'Current state of nvidia GPU: ' 
    execute "cat /proc/acpi/bbswitch"
    

    Problema do Systemd no Github

    Link de referência do portal Nvidia Linux Developers

    • 1
  8. Vlad Skurtolov
    2018-05-02T03:55:05+08:002018-05-02T03:55:05+08:00

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

    • 0
  9. JNing
    2019-05-07T18:05:12+08:002019-05-07T18:05:12+08:00

    Eu também encontrei o mesmo problema. O motivo do erro foi que eu acidentalmente selecionei "Instalar driver nvidia" durante a instalação do cuda.

    Então, durante a instalação do CUDA, quando você encontrar as seguintes opções:

    Instalar driver gráfico acelerado da NVIDIA para Linux-x86_64 384.81? (y)es/(n)o/(q)uit:

    Selecione q , o problema será resolvido.

    • 0
  10. Joaquim Muchaxo
    2019-06-08T20:09:42+08:002019-06-08T20:09:42+08:00

    o que funcionou para mim foi mudar o sistema para começar em texto mais

    systemctl set-default runlevel3.target
    

    em seguida, reinicie e instale o driver nvidia cuda depois de concluído, você pode querer alterar o sistema para iniciar no modo gráfico novamente

    systemctl set-default runlevel5.target
    
    • 0

relate perguntas

  • Recebendo e-mail em um novo Debian fresco

  • Debian Stretch: gnome-software segfault em libgs_plugin_systemd-updates.so

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

  • Acesse o sistema de arquivos como usuário root

  • Como digitar ü no Pinyin IME?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

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

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve