¿Cómo descargar el módulo de kernel 'nvidia-drm'?

29

Estoy tratando de instalar el controlador NVIDIA más actualizado en Debian Stretch. He descargado NVIDIA-Linux-x86_64-390.48.rundesde aquí , pero cuando trato de hacer

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

como se sugiere, aparece un mensaje de error.

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.

Cuando trato de averiguar quién está usando nvidia-drm(o nvidia_drm), no veo 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
~$

Y cuando trato de eliminarlo, dice que está siendo utilizado.

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

Reinicié y comencé en modo de solo texto (presionando Ctrl + Alt + F2 antes de dar nombre de usuario / contraseña), pero recibí el mismo error.

Además, ¿cómo "sé que mi kernel admite la descarga de módulos"?

Recibo algunas advertencias sobre el arranque relacionadas con nvidia, aunque no tengo idea si están relacionadas:

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)
Rodrigo
fuente
¿Puedes intentar hacerlo en modo de rescate?
vfbsilva
Vea este problema en github : systemctl stop systemd-logindantes de descargar los módulos.
GAD3R
@vfbsilva Mi modo de rescate es extraño, se repite para siempre, identificando todos los dispositivos USB una y otra vez. Logré presionar Enter, dar la contraseña de root y obtener un mensaje, pero no hay / dev, por lo que no es posible montar el disco.
Rodrigo
@ GAD3R Todo lo que tengo es systemctl stop systemd-logind.service, pero esto cierra la pantalla y me lleva de nuevo al inicio de sesión gráfico, donde tengo que hacer Ctrl + Alt + F2 nuevamente.
Rodrigo

Respuestas:

28

Me imagino que quieres detener el administrador de pantalla, que es lo que sospecho que usaría los controladores de Nvidia.

Después de cambiar a una consola de texto (presionando Ctrl+ Alt+ F2) e iniciar sesión como root, use el siguiente comando para deshabilitar el objetivo gráfico, que es lo que mantiene el administrador de visualización en funcionamiento:

# systemctl isolate multi-user.target

En este punto, esperaría que pudieras descargar los controladores de Nvidia usando modprobe -r(o rmmoddirectamente):

# modprobe -r nvidia-drm

Una vez que haya logrado reemplazarlo / actualizarlo y esté listo para iniciar nuevamente el entorno gráfico, puede usar este comando:

# systemctl start graphical.target
filbranden
fuente
Logré desinstalarlo (usando su respuesta) e instalar la nueva versión hasta el punto en que no había más modo gráfico de trabajo. Tuve que formatear la PC y reinstalar Debian. Ahora a un conjunto completamente diferente de errores ... Todo esto solo para ver "GPU" como una opción de renderizado en Blender, y todavía no lo veo. ¡Los controladores propietarios son una mierda!
Rodrigo
44
Esto funcionó para mí sin el modprobepaso.
Don Kirkby el
1
Sí, tampoco necesitaba un modprobepaso.
David Jung
No puedo eliminar nvidia-drm incluso cuando estoy en la consola de texto. ¿Alguna idea de cómo puedo eliminarlo a la fuerza?
addison
@addison Tenga en cuenta que no es suficiente solo estar en una consola de texto, debe detener X11 o Wayland o lo que sea que esté usando el controlador nvidia del núcleo. El punto del systemctl isolatecomando es hacer eso. Pero es posible que no esté configurado correctamente en su sistema ... Verifique ps -efy vea si puede detectar lo que podría estar usando el controlador, luego haga que se detenga ese proceso. Eso debería permitirle descargar el controlador.
filbranden
5

lsofenumera todos los archivos que están utilizando los procesos de espacio de usuario. Pero nvidia_drmes un módulo de núcleo, por lsoflo que no necesariamente verá si realmente está en uso o no. (El archivo del módulo no se abrirá porque el núcleo ya lo ha cargado completamente en la RAM. Pero el módulo podría estar proporcionando servicios al espacio de usuario u otros componentes del núcleo, y eso es lo que impide la descarga del módulo).

Ejecute lsmod | grep nvidia.drmy vea los números a la derecha del nvidia_drmnombre del módulo. El primer número es simplemente el tamaño del módulo; el segundo es el recuento de uso. Para eliminar con éxito el módulo, el recuento de uso debe ser 0 primero.

Si el servidor X11 se está ejecutando y está utilizando el nvidiacontrolador, entonces el nvidia_drmmódulo del núcleo seguramente estará en uso. Por lo tanto, necesitará, como mínimo, cambiar a la consola de texto y apagar el servidor X11. Por lo general, esto se puede hacer deteniendo el servicio X Display Manager que esté usando (depende del entorno de escritorio que esté usando).

Como decía el mensaje de error, si está ejecutando nvidia-persistenced, deberá detenerlo también antes de poder descargar el nvidia_drmmódulo.

telcoM
fuente
Después de Ctrl + Alt + F2, lsmodme dice que hay 1 proceso usando nvidia_drm. Entonces lo hice sudo /etc/init.d/gdm3 stop, lo que fue okpara detenerlo. Pero todavía 1 proceso en lsmod. Ahora dentro de Gnome, ps aux | grep nvidiaespectáculos [irq/129-nvidia]y [nvidia]pero no nvidia-persistenced. Además, aquí se lsmodmuestran 2 procesos usando nvidia_drm. Estoy atascado.
Rodrigo
3

Tuve un problema similar.

* Motivo: el paquete nvidia.drm estaba en uso


Lo arreglé purgando todos los paquetes de NVIDIA.

Elimine todas las instalaciones anteriores de NVIDIA con estos 2 comandos:


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

El módulo debe ser removido.

Reiniciar y seguir adelante.

Kelly
fuente
¡Gracias! Esto puede ser útil si necesito formatearlo nuevamente ...
Rodrigo
2

En los comentarios, informa que detener el servicio systemd-logind lo lleva de nuevo al inicio de sesión gráfico . Si tiene un inicio de sesión gráfico, X se está ejecutando, por lo que el controlador de video está cargado y en uso. Esto probablemente explica en parte por qué el módulo nvidia-drm está en uso.

Además, traicionas un error aparente cuando dices

Reinicié y comencé en modo de solo texto (presionando Ctrl + Alt + F2 antes de dar nombre de usuario / contraseña), pero recibí el mismo error.

Al presionar Ctrl + Alt + F2 se cambia a un terminal virtual # 2, que bien puede configurarse para el inicio de sesión en modo de texto, pero eso está muy lejos de "comenzar en modo de texto". Si tenía una pantalla de inicio de sesión gráfica en el terminal virtual predeterminado, entonces X se está ejecutando, y cambiar a un VT diferente no cambia eso. Solo está iniciando sesión en una sesión que no es X.

Lo primero y más fácil de probar es apagar el servidor X. La forma tradicional de hacerlo sería iniciar sesión en su sesión en modo de texto y ejecutar el comando

telinit 3

para cambiar al nivel de ejecución 3. Eso también debería funcionar con systemd, pero la forma nativa de systemd sería ejecutar en su lugar

systemctl isolate multi-user.target

Ambos requieren privilegios, por supuesto, por lo que deberá usar sudoo hacerse root.

Si eso no elimina el módulo, o al menos hace posible que lo haga de forma manual, su próxima mejor opción sería iniciar el sistema directamente en el nivel de ejecución 3 (objetivo multiusuario), o tal vez incluso en el nivel de ejecución 1 (objetivo de rescate). Normalmente hago esto agregando "3" (o "1") al final de la lista de argumentos del kernel en el momento del arranque a través del gestor de arranque. También puede cambiar el destino de arranque predeterminado como se describe en este artículo .

También tenga en cuenta que el controlador nVidia está disponible en paquetes preconstruidos para la mayoría de las distribuciones de Linux. Pocos incluyen esos paquetes en sus propios repositorios estándar porque el controlador es, después de todo, propietario, pero seguramente puede encontrar un repositorio de terceros acreditado que lo tenga. Recomiendo encarecidamente utilizar dichos paquetes en lugar de ejecutar el instalador directamente, pero para llegar allí desde donde se encuentra ahora, es posible que primero deba desinstalar manualmente el controlador.

John Bollinger
fuente
Logré desinstalarlo (usando la respuesta de Filipe) e instalar la nueva versión hasta el punto en que no había más modo gráfico de trabajo. Tuve que formatear la PC y reinstalar Debian. Ahora a un conjunto completamente diferente de errores ... Todo esto solo para ver "GPU" como una opción de renderizado en Blender, y todavía no lo veo. ¡Los controladores propietarios son una mierda!
Rodrigo
@ Rodrigo, lamento que hayas tenido una experiencia tan pobre. Pero ese tipo de problema es un ejemplo de por qué recomiendo usar paquetes en lugar de realizar instalaciones manuales.
John Bollinger
Sí, prefiero usar paquetes. Pero he leído en alguna parte que la opción de GPU en Blender no estaba habilitada probablemente debido a un controlador desactualizado ...
Rodrigo
2

Instalación CUDA

1) Descargue el último kit de herramientas de CUDA

2) Cambie a tty3 presionando Ctl + Alt + F3

3) Descargue nvidia-drm antes de continuar.

3a) Aislar multiusuario.target

sudo systemctl isolate multi-user.target

3b) Tenga en cuenta que nvidia-drm está actualmente en uso.

lsmod | grep nvidia.drm

3c) Descargar nvidia-drm

sudo modprobe -r nvidia-drm

4d) Tenga en cuenta que nvidia-drm ya no está en uso.

lsmod | grep nvidia.drm

5) Ve a tu carpeta de descargas y ejecuta la instalación de cuda.

sudo sh cuda_10.1.168_418.67_linux.run

6) Responda cualquier pregunta durante la instalación.

7) Cuando finalice la instalación, confirme que la versión de CUDA se haya actualizado.

nvidia-smi

8) Inicie la GUI nuevamente.

sudo systemctl start graphical.target
Clayton Mork
fuente
0

Tuve el mismo problema con Debian Stretch al intentar instalar los controladores de Nvidia. Cuando en mod de texto, mi única solución era eliminar el controlador, reinstalar gdm y gnome-shell. Sé que es una solución torpe, pero recuerdo que primero intenté arreglar el gnome-shell y solo eliminé el controlador Nvidia y reinstalé GDM. Resultó que era mucho más fácil volver a instalar todo el shell.

Vlad Skurtolov
fuente
Supongo que esperaré una solución menos torpe, si aparece alguna.
Rodrigo
0

También encontré el mismo problema. La razón del error fue que accidentalmente seleccioné "Instalar controlador nvidia" durante la instalación de cuda.

Entonces, durante la instalación de CUDA, cuando encuentre las siguientes opciones:

Instalar el controlador de gráficos acelerados NVIDIA para Linux-x86_64 384.81? (y) es / (n) o / (q) uit:

Seleccione q , el problema se resolverá.

JNing
fuente
¿Entonces, qué es lo que estás diciendo? ¿Que la única solución es reinstalar? Obviamente esa no es la única solución; Se han publicado otras respuestas.
Scott
0

lo que funcionó para mí fue cambiar el sistema para comenzar en texto más

systemctl set-default runlevel3.target

luego reinicie e instale el controlador nvidia cuda una vez que haya terminado, es posible que desee cambiar el sistema para comenzar nuevamente en modo gráfico

systemctl set-default runlevel5.target
Joaquim Muchaxo
fuente
0

Dejar de systemd-logindarreglarlo para mí:

sudo systemctl stop systemd-logind

Esto se sugiere como una solución alternativa en este problema de github en la página github de nvidia-xrun:

Buenas noticias, muchachos, systemd-logind es el culpable aquí. La solución actual es ejecutar el siguiente comando después de cerrar sesión en la sesión "nvidia-xrun" sudo systemctl stop systemd-logind

Luego, deberá eliminar manualmente los otros módulos de nvidia y apagar la DGPU manualmente. Aquí está el fragmento de código que se ejecuta después de cerrar sesión en la sesión "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 de Systemd en Github

Enlace de referencia del portal de desarrolladores de Nvidia Linux

alexdemartos
fuente