Я пытаюсь установить самый последний драйвер NVIDIA в Debian Stretch. Я скачал NVIDIA-Linux-x86_64-390.48.run
с здесь , но когда я пытаюсь сделать
sudo sh ./NVIDIA-Linux-x86_64-390.48.run
как предложено, появляется сообщение об ошибке.
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.
Когда я пытаюсь выяснить, кто использует nvidia-drm
(или nvidia_drm
), я ничего не вижу.
~$ 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
~$
И когда я пытаюсь удалить его, он говорит, что он используется.
~$ sudo modprobe -r nvidia-drm
modprobe: FATAL: Module nvidia_drm is in use.
~$
Я перезагрузился и начал работать в текстовом режиме (нажав Ctrl + Alt + F2 перед вводом имени пользователя / пароля), но я получил ту же ошибку.
Кроме того, как мне «знать, что мое ядро поддерживает выгрузку модулей»?
Я получаю несколько предупреждений при загрузке, связанных с nvidia, не знаю, связаны ли они, хотя:
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)
systemctl stop systemd-logind
перед выгрузкой модулей.systemctl stop systemd-logind.service
, но это закрывает экран и возвращает меня к графическому входу в систему, где я должен снова выполнить Ctrl + Alt + F2.Ответы:
Я полагаю, вы хотите остановить диспетчер дисплея, который, как я подозреваю, будет использовать драйверы Nvidia.
После перехода в текстовую консоль (нажатие Ctrl+ Alt+ F2) и входа в систему как root, используйте следующую команду, чтобы отключить графическую цель, которая поддерживает работу диспетчера отображения:
На данный момент, я ожидаю, что вы сможете выгрузить драйверы Nvidia, используя
modprobe -r
(илиrmmod
напрямую):После того, как вам удалось заменить / обновить его и вы готовы снова запустить графическое окружение, вы можете использовать эту команду:
источник
modprobe
шага.modprobe
ни шагу.systemctl isolate
том, чтобы сделать это. Но, возможно, это неправильно настроено в вашей системе ... Проверьтеps -ef
и посмотрите, можете ли вы определить, что может быть использовано драйвером, а затем остановите этот процесс. Это должно позволить вам разгрузить драйвер.lsof
перечисляет все файлы, которые используются процессами пространства пользователя. Ноnvidia_drm
это модуль ядра, поэтомуlsof
не обязательно видеть, действительно ли он используется. (Файл модуля не будет открыт, потому что ядро уже полностью загрузило его в ОЗУ. Но модуль может предоставлять услуги пользовательскому пространству или другим компонентам ядра, и это предотвращает выгрузку модуля.)Запустите
lsmod | grep nvidia.drm
и посмотрите числа справа от имениnvidia_drm
модуля. Первое число - это просто размер модуля; второй счетчик использования. Чтобы успешно удалить модуль, счетчик использования должен быть сначала 0.Если сервер X11 работает и использует
nvidia
драйвер, тоnvidia_drm
модуль ядра, скорее всего, будет использоваться. Таким образом, вам нужно, по крайней мере, переключиться на текстовую консоль и выключить сервер X11. Обычно это можно сделать, остановив любую используемую службу X Display Manager (зависит от используемой среды рабочего стола).Как говорится в сообщении об ошибке, если вы работаете
nvidia-persistenced
, вам также необходимо остановить это, прежде чем вы сможете выгрузитьnvidia_drm
модуль.источник
lsmod
говорит мне, что используется 1 процессnvidia_drm
. Так я и сделалsudo /etc/init.d/gdm3 stop
, чтоok
остановилось. Но все еще 1 процесс вlsmod
. Теперь в Gnome,ps aux | grep nvidia
шоу[irq/129-nvidia]
и ,[nvidia]
но нетnvidia-persistenced
. Также здесьlsmod
показаны 2 процесса использованияnvidia_drm
. Я застрял.У меня была аналогичная проблема.
Я исправил это, очистив все пакеты NVIDIA.
Удалите все предыдущие установки NVIDIA с помощью этих 2 команд:
$ sudo apt-get purge nvidia*
$ sudo apt-get autoremove
Модуль должен быть удален.
Перезагрузитесь и выйдите.
источник
Вы сообщаете в комментариях, что остановка службы systemd-logind возвращает вас к графическому логину. Если у вас есть графический логин, то X работает, поэтому видеодрайвер загружен и используется. Это, вероятно, частично объясняет, почему используется модуль nvidia-drm.
Кроме того, вы предаете очевидное заблуждение, когда говорите
Нажатие Ctrl + Alt + F2 переключает на виртуальный терминал # 2, который вполне может быть настроен для входа в текстовом режиме, но это далеко от «запуска в текстовом режиме». Если у вас был графический экран входа в виртуальный терминал по умолчанию, то X работает, и переключение на другой VT не изменит этого. Вы просто входите в сеанс без X.
Первое и самое простое, что можно попробовать - это действительно отключить X-сервер. Старый способ сделать это - войти в сеанс в текстовом режиме и выполнить команду
переключиться на уровень выполнения 3. Это должно работать и с systemd, но вместо этого можно использовать собственный системный способ
Конечно, оба требуют привилегий, поэтому вам нужно использовать
sudo
или делать себя root.Если это не удалит модуль или, по крайней мере, не позволит вам сделать это вручную, тогда вашей следующей лучшей ставкой будет загрузка системы непосредственно на уровень запуска 3 (многопользовательская цель) или, возможно, даже на уровень запуска 1 (спасательная цель). Я обычно делаю это, добавляя «3» (или «1») в конец списка аргументов ядра во время загрузки через загрузчик. Вы также можете изменить цель загрузки по умолчанию, как описано в этой статье .
Также обратите внимание, что драйвер nVidia доступен в готовых пакетах для большинства дистрибутивов Linux. Немногие включают эти пакеты в свои собственные стандартные репозитории, потому что драйвер, в конце концов, является проприетарным, но вы наверняка найдете надежное стороннее репозиторий, в котором он есть. Я настоятельно рекомендую использовать такие пакеты вместо того, чтобы запускать установщик напрямую, но чтобы попасть туда, где вы сейчас находитесь, вам может понадобиться сначала вручную удалить драйвер.
источник
Установка CUDA
1) Загрузите последнюю версию CUDA Toolkit
2) Переключитесь на tty3, нажав Ctl + Alt + F3
3) Перед продолжением выгрузите nvidia-drm.
3a) Изолировать multi-user.target
3b) Обратите внимание, что nvidia-drm в настоящее время используется.
3c) Выгрузить nvidia-drm
4d) Обратите внимание, что nvidia-drm больше не используется.
5) Перейдите в папку загрузки и запустите установку cuda.
6) Ответьте на любые запросы во время установки.
7) После завершения установки убедитесь, что версия CUDA обновлена.
8) Запустите графический интерфейс снова.
источник
Была такая же проблема с Debian Stretch при попытке установить драйверы Nvidia. Когда в текстовом моде единственным решением было удалить драйвер, переустановить gdm и gnome-shell. Я знаю, что это неуклюжее решение, но я помню, что сначала попытался исправить оболочку gnome и удалить только драйвер Nvidia и переустановить GDM. Оказалось, что было намного проще просто переустановить всю оболочку.
источник
Я также столкнулся с той же проблемой. Причиной ошибки было то, что я случайно выбрал «Install nvidia driver» во время установки cuda.
Итак, при установке CUDA, когда вы сталкиваетесь со следующими опциями:
Пожалуйста, выберите q , проблема будет решена.
источник
у меня получилось поменять систему, чтобы начать больше текста
затем перезапустите и установите драйвер nvidia cuda, как только вы закончите, вы можете изменить систему для запуска в графическом режиме
источник
Остановка
systemd-logind
исправила это для меня:Это предлагается в качестве обходного пути в этом выпуске github на странице nvidia-xrun github:
источник